⛳
[Bug #21184] パターンマッチでロケット演算子の Hash パターンを仕様すろtシンタックスエラーになるバグ報告
[Bug #21184] SyntaxError when combining in with inline hash-rocket (=>)
- 以下のようにロケット演算子の Hash パターンと
inを組み合わせると意図せずシンタックスエラーになるというバグ報告
# 以下の構文は OK
{ a: 1 } in { a: 1 } # => true
{ a: 1 } in { a: Integer } # => true
pattern = { "a" => 1 }; { "a" => 1 } in pattern # => true
# これは NG
{ "a" => 1 } in { "a" => 1 } # => SYNTAX ERROR
- これなんですが期待する挙動で
in句の右辺にはロケット演算子の Hash リテラルを書くことはできません- 厳密にいうと Hash パターンではロケット演算子は記述できない
- なので以下のように記述できても
# OK
{ a: 1 } in { a: b }
- Hash リテラルのように以下のようには記述できない
# NG
{ :a => 1 } in { :a => b }
- 右辺は厳密にいうと Hash リテラルではなくてパターンマッチの Hash パターンの記法になるからですかねー
Discussion