Actions
Bug #21540
openprism allows `foo && return bar` when parse.y doesn't
Status:
Open
Assignee:
-
Target version:
-
ruby -v:
ruby 3.5.0dev (2025-08-08T02:57:23Z master 3ad26d0501) [x86_64-linux]
Description
Code such as foo && return bar
has been disallowed in ruby since at least Ruby 2.0. Prism allows it though:
$ 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)
The code seems to behave like I'd expect it to and I wouldn't mind it being accepted but it is inconsistent. Also happens on Ruby 3.4
Updated by nobu (Nobuyoshi Nakada) 2 days ago
It is because of the precedence, and has been since 1.x at least.
Updated by nobu (Nobuyoshi Nakada) 2 days ago
- Backport changed from 3.2: UNKNOWN, 3.3: UNKNOWN, 3.4: UNKNOWN to 3.2: DONTNEED, 3.3: DONTNEED, 3.4: REQUIRED
Updated by Earlopain (Earlopain _) 2 days ago
Right, I understand. foo && (return bar)
would be allowed, thanks for clarifying (works as expected in prism and parse.y)
Actions
Like0
Like0Like0Like0Like0