[ruby-core:121354] [Ruby master Bug#21184] SyntaxError when combining `in` with inline hash-rocket (`=>`)

Issue #21184 has been reported by jtannas (Joel Tannas). ---------------------------------------- Bug #21184: SyntaxError when combining `in` with inline hash-rocket (`=>`) https://bugs.ruby-lang.org/issues/21184 * Author: jtannas (Joel Tannas) * Status: Open * ruby -v: ruby 3.4.2 (2025-02-15 revision d2930f8e7a) +PRISM [x86_64-linux] * Backport: 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN, 3.4: UNKNOWN ---------------------------------------- I believe the following should be valid syntax but it's throwing a `SyntaxError`: ``` ruby { a: 1 } in { a: 1 } # => true { a: 1 } in { a: Integer } # => true pattern = { "a" => 1 }; { "a" => 1 } in pattern # => true { "a" => 1 } in { "a" => 1 } # => SYNTAX ERROR ``` -- https://bugs.ruby-lang.org/

Issue #21184 has been updated by alanwu (Alan Wu). Status changed from Open to Rejected It's working as [documented](https://docs.ruby-lang.org/en/3.4/syntax/pattern_matching_rdoc.html)
Note that only symbol keys are supported for hash patterns.
By the way, the third line that uses `in` uses a wildcard pattern so is essentially assigning to `pattern`: ``` irb(main):003> pattern = { "a" => 1 }; 0 in pattern => true irb(main):004> p pattern 0 ``` ---------------------------------------- Bug #21184: SyntaxError when combining `in` with inline hash-rocket (`=>`) https://bugs.ruby-lang.org/issues/21184#change-112326 * Author: jtannas (Joel Tannas) * Status: Rejected * ruby -v: ruby 3.4.2 (2025-02-15 revision d2930f8e7a) +PRISM [x86_64-linux] * Backport: 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN, 3.4: UNKNOWN ---------------------------------------- I believe the following should be valid syntax but it's throwing a `SyntaxError`: ``` ruby { a: 1 } in { a: 1 } # => true { a: 1 } in { a: Integer } # => true pattern = { "a" => 1 }; { "a" => 1 } in pattern # => true { "a" => 1 } in { "a" => 1 } # => SYNTAX ERROR ``` -- https://bugs.ruby-lang.org/

Issue #21184 has been updated by jtannas (Joel Tannas). Thank you for the prompt reply Alan. Sorry I missed that line while skimming through that document prior to submitting. I think I need to do some more reading up on the `=>` operator. ---------------------------------------- Bug #21184: SyntaxError when combining `in` with inline hash-rocket (`=>`) https://bugs.ruby-lang.org/issues/21184#change-112327 * Author: jtannas (Joel Tannas) * Status: Rejected * ruby -v: ruby 3.4.2 (2025-02-15 revision d2930f8e7a) +PRISM [x86_64-linux] * Backport: 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN, 3.4: UNKNOWN ---------------------------------------- I believe the following should be valid syntax but it's throwing a `SyntaxError`: ``` ruby { a: 1 } in { a: 1 } # => true { a: 1 } in { a: Integer } # => true pattern = { "a" => 1 }; { "a" => 1 } in pattern # => true { "a" => 1 } in { "a" => 1 } # => SYNTAX ERROR ``` -- https://bugs.ruby-lang.org/
participants (2)
-
alanwu (Alan Wu)
-
jtannas (Joel Tannas)