From: "mame (Yusuke Endoh)" Date: 2021-12-22T08:07:28+00:00 Subject: [ruby-core:106768] [Ruby master Bug#18396] An unexpected "hash value omission" syntax error when without parentheses call expr follows Issue #18396 has been updated by mame (Yusuke Endoh). I have just noticed that Ruby 3.1's right-assignment pattern can end with `x:`. ``` # Works as expected on Ruby 3.1 hsh = { x: 42 } hsh => x: p x #=> 42 ``` ---------------------------------------- Bug #18396: An unexpected "hash value omission" syntax error when without parentheses call expr follows https://bugs.ruby-lang.org/issues/18396#change-95471 * Author: koic (Koichi ITO) * Status: Open * Priority: Normal * ruby -v: ruby 3.1.0dev (2021-12-07T23:18:11Z master 4a3e7984bf) [x86_64-darwin19] * Backport: 2.6: UNKNOWN, 2.7: UNKNOWN, 3.0: UNKNOWN ---------------------------------------- ## Summary I encountered an unexpected "hash value omission" syntax error when parentheses call expression follows: ```ruby % cat example.rb foo key: foo arg ``` ```console % ruby -cv /tmp/b.rb ruby 3.1.0dev (2021-12-07T23:18:11Z master 4a3e7984bf) [x86_64-darwin19] example.rb:2: syntax error, unexpected local variable or method, expecting `do' or '{' or '(' foo arg ``` ## Additional Information The following is a traditional usage. ```ruby # No errors. foo key: key foo arg ``` A syntax error is unexpectedly raised when hash value omission argument without parentheses is followed by a method call without parentheses. ```ruby # No errors is expected, but syntax error is raised. foo key: foo arg ``` No error occurs if any of the calls have parentheses. ```ruby # No errors. foo(key:) foo arg ``` ```ruby # Also no errors. foo key: foo(arg) ``` No error occurs when calling alone. ```ruby # No errors. foo key: ``` I encountered this error while trying to apply hash value omission to RSpec code of a real-world application (proprietary) . But this is a new Ruby 3.1 syntax and may not be supported yet. Thank you. -- https://bugs.ruby-lang.org/ Unsubscribe: