🕌
[Bug #21540] a && return foo が Prism で動作するというバグ報告
[Bug #21540] prism allows foo && return bar when parse.y doesn't
-
a && return fooのようなコードは(少なくとも Ruby 2.0 以降では)禁止されていたがPrismでは許可されているというバグ報告
$ ruby -cve "a && return foo"
ruby 3.5.0dev (2025-08-08T02:57:23Z master 3ad26d0501) +PRISM [x86_64-linux]
Syntax OK
$ ruby --parser=parse.y -cve "a && return foo"
ruby 3.5.0dev (2025-08-08T02:57:23Z master 3ad26d0501) [x86_64-linux]
-e:1: syntax error, unexpected local variable or method, expecting end-of-input
a && return foo
ruby: compile error (SyntaxError)
-
&&とreturnの優先順位の問題ぽいんですかね? -
foo && (return bar)であればparse.yでも許可されているみたいですね - また
parse.yでエラーになるのがcompile.cでパーサーではなくてバイトコードのコンパイル時の問題ぽい? - いずれにせよ一貫性がある挙動にするべき問題みたいですね
Discussion