👋
[Bug #21622] Prism で `p(p a, x: b => value)` がシンタックスエラーにならないバグ報告
[Bug #21622] Prism wrongly accepts command call to be a key of keyword argument
- 次のコードは
parse.yではシンタックスエラーになるがPrismでは有効な構文として扱われてしまうというバグ報告
p(p a, x: b => value)
p(p a, x: => value)
p(p a, &block => value)
p(p a, *args => value)
p(p a, **kwargs => value)
- これ、どうなっているの…と思ったんですが
Prismではp((p a, &block) => value)みたいに解釈されるみたいですね-
(p a, &block)がキーのvalueが値の Hash として定義される
-
- 実際に値を割り当てると以下のような挙動になる
a = "a"
b = "b"
x = "x"
value = "value"
block = proc {}
args = ["args"]
kwargs = { kwargs: "kwargs" }
p(p a, x: b => value)
# => {["a", {x: "b"}] => "value"}
p(p a, x: => value)
# => {["a", {x: "x"}] => "value"}
p(p a, &block => value)
# => {"a" => "value"}
p(p a, *args => value)
# => {["a", "args"] => "value"}
p(p a, **kwargs => value)
# => {["a", {kwargs: "kwargs"}] => "value"}
Discussion