[#122369] [Ruby Bug#21392] Data classes do not allow overriding #inspect — "austin (Austin Ziegler) via ruby-core" <ruby-core@...>

Issue #21392 has been reported by austin (Austin Ziegler).

8 messages 2025/06/01

[#122411] [Ruby Bug#21396] Set#initialize should call Set#add on items passed in — "tenderlovemaking (Aaron Patterson) via ruby-core" <ruby-core@...>

Issue #21396 has been reported by tenderlovemaking (Aaron Patterson).

12 messages 2025/06/04

[#122506] [Ruby Feature#21435] Kernel#optional as a conditional #then — "Alexander.Senko (Alexander Senko) via ruby-core" <ruby-core@...>

SXNzdWUgIzIxNDM1IGhhcyBiZWVuIHJlcG9ydGVkIGJ5IEFsZXhhbmRlci5TZW5rbyAoQWxleGFu

11 messages 2025/06/10

[#122557] [Ruby Bug#21445] [BUG] push_mark_stack() called for broken object raised since cd9f447be247478d2eb3da985295735cce20cb23 — "yahonda (Yasuo Honda) via ruby-core" <ruby-core@...>

Issue #21445 has been reported by yahonda (Yasuo Honda).

10 messages 2025/06/19

[#122615] [Ruby Misc#21458] Test 'make install'? — "MSP-Greg (Greg L) via ruby-core" <ruby-core@...>

Issue #21458 has been reported by MSP-Greg (Greg L).

11 messages 2025/06/28

[ruby-core:122434] [Ruby Bug#21382] Syntax for arguments in || is more strict than arguments in ()

From: "matz (Yukihiro Matsumoto) via ruby-core" <ruby-core@...>
Date: 2025-06-05 08:40:12 UTC
List: ruby-core #122434
Issue #21382 has been updated by matz (Yukihiro Matsumoto).

Status changed from Open to Closed

Unfortunately, `|` is a binary-or operator too. So we have to be more strict to avoid ambiguity and syntax conflict.

Matz.


----------------------------------------
Bug #21382: Syntax for arguments in || is more strict than arguments in ()
https://bugs.ruby-lang.org/issues/21382#change-113615

* Author: herwin (Herwin W)
* Status: Closed
* ruby -v: ruby 3.4.4 (2025-05-14 revision a38531fd3f) +PRISM [x86_64-linux] (seen in older versions too)
* Backport: 3.2: UNKNOWN, 3.3: UNKNOWN, 3.4: UNKNOWN
----------------------------------------
```ruby
p ->(x, y = x + 1) { x + y }.call(1)
```
This works fine, this gives `y` the value of `x + 1` and prints `3`. The same thing can be used in method definitions.

```ruby
p lambda { |x, y = x + 1| x + y }.call(1)
```
This is the same thing, but results in a parse error (both prism and parse.y):
```
# Prism:
p lambda { |x, y = x + 1| x + y }.call(1)
                    ^ expected the block parameters to end with `|`
                     ^ unexpected '+', ignoring it

# Parse.y:
syntax error, unexpected '+', expecting '|'
```
It works if the default is a single statement (wrapping it in parentheses), so it looks to be purely a grammatical issue
```ruby
p lambda { |x, y = (x + 1)| x + y }.call(1)
```



-- 
https://bugs.ruby-lang.org/
______________________________________________
 ruby-core mailing list -- [email protected]
 To unsubscribe send an email to [email protected]
 ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/


In This Thread

Prev Next