[ruby-core:114598] [Ruby master Bug#18878] parse.y: Foo::Bar {} is inconsistently rejected
From:
"jeremyevans0 (Jeremy Evans) via ruby-core" <ruby-core@...>
Date:
2023-08-30 20:26:46 UTC
List:
ruby-core #114598
Issue #18878 has been updated by jeremyevans0 (Jeremy Evans).
It looks like this will be fixed by YARP:
```
$ ruby -r yarp -e "pp YARP.parse('Foo::Bar {}')"
#<YARP::ParseResult:0x00000b1512acc448
@comments=[],
@errors=[],
@source=#<YARP::Source:0x00000b14749d6690 @offsets=[0], @source="Foo::Bar {}">,
@value=
ProgramNode(0...11)(
[],
StatementsNode(0...11)(
[CallNode(0...11)(ConstantReadNode(0...3)(), (3...5), (5...8), nil, nil, nil, BlockNode(9...11)([], nil, nil, (9...10), (10...11)), 0, "Bar")]
)
),
@warnings=[]>
```
----------------------------------------
Bug #18878: parse.y: Foo::Bar {} is inconsistently rejected
https://bugs.ruby-lang.org/issues/18878#change-104415
* Author: qnighy (Masaki Hara)
* Status: Open
* Priority: Normal
* ruby -v: ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x86_64-linux]
* Backport: 2.7: UNKNOWN, 3.0: UNKNOWN, 3.1: UNKNOWN
----------------------------------------
The following source doesn't parse:
```ruby
Foo::Bar {}
```
despite the following:
```ruby
bar # local variable or method call
Bar # constant
bar() # method call
Bar() # method call
bar {} # method call
Bar {} # method call
bar() {} # method call
Bar() {} # method call
Foo::bar # method call
Foo::Bar # constant
Foo::bar() # method call
Foo::Bar() # method call
Foo::bar {} # method call
# Foo::Bar {} # SyntaxError
Foo::bar() {} # method call
Foo::Bar() {} # method call
```
Especially considering `Bar {}`, this looks like a missing implementation rather than an intentional behavior.
--
https://bugs.ruby-lang.org/
______________________________________________
ruby-core mailing list -- ruby-core@ml.ruby-lang.org
To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
ruby-core info -- https://ml.ruby-lang.org/mailman3/postorius/lists/ruby-core.ml.ruby-lang.org/