From: "Eregon (Benoit Daloze) via ruby-core" Date: 2025-01-13T11:38:35+00:00 Subject: [ruby-core:120630] [Ruby master Bug#21031] Incompatibility with prism and parse.y when eval'ing unnamed forwarding variables Issue #21031 has been updated by Eregon (Benoit Daloze). As a note, I checked and the `*` and **` examples (Case 1 & 2) work in 3.2 and 3.3. Case 3 / `&` seems incorrect though, as it should print the block but doesn't. ---------------------------------------- Bug #21031: Incompatibility with prism and parse.y when eval'ing unnamed forwarding variables https://bugs.ruby-lang.org/issues/21031#change-111459 * Author: ksss (Yuki Kurihara) * Status: Open * ruby -v: ruby 3.5.0dev (2025-01-13T03:12:28Z master 384e6945ac) +PRISM [arm64-darwin23] * Backport: 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN, 3.4: UNKNOWN ---------------------------------------- ## Case 1 ```rb # t.rb def foo(*) eval("p(*)") end foo(1) ``` ``` $ ruby --parser=prism t.rb t.rb:4:in 'Kernel#eval': (eval at t.rb:4):1: syntax error found (SyntaxError) > 1 | p(*) | ^ unexpected `*`; no anonymous rest parameter from t.rb:4:in 'Object#foo' from t.rb:7:in '
' ``` ``` $ ruby --parser=parse.y t.rb 1 ``` ## Case 2 ```rb # t.rb def foo(**) eval("p(**)") end foo(a: 1) ``` ``` $ ruby --parser=prism t.rb t.rb:4:in 'Kernel#eval': (eval at t.rb:4):1: syntax error found (SyntaxError) > 1 | p(**) | ^~ unexpected `**`; no anonymous keyword rest parameter from t.rb:4:in 'Object#foo' from t.rb:7:in '
' ``` ``` $ ruby --parser=parse.y t.rb {a: 1} ``` ## Case 3 ```rb # t.rb def foo(&) eval("p(&)") end foo{} ``` ``` $ ruby --parser=prism t.rb t.rb:4:in 'Kernel#eval': (eval at t.rb:4):1: syntax error found (SyntaxError) > 1 | p(&) | ^ unexpected `&`; no anonymous block parameter from t.rb:4:in 'Object#foo' from t.rb:7:in '
' ``` ``` $ ruby --parser=parse.y t.rb ``` ## Case 4 ```rb # t.rb def foo(...) eval("p(...)") end foo(1, 2, 3) ``` ``` $ ruby --parser=prism t.rb t.rb:4:in 'Kernel#eval': (eval at t.rb:4):1: syntax error found (SyntaxError) > 1 | p(...) | ^~~ unexpected ... when the parent method is not forwarding from t.rb:4:in 'Object#foo' from t.rb:7:in '
' ``` ``` $ ruby --parser=parse.y t.rb 1 2 3 ``` I expect to the parse.y 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/lists/ruby-core.ml.ruby-lang.org/