From: "Earlopain (Earlopain _) via ruby-core" Date: 2025-08-21T10:45:53+00:00 Subject: [ruby-core:123022] [Ruby Bug#21540] prism allows `foo && return bar` when parse.y doesn't Issue #21540 has been updated by Earlopain (Earlopain _). That's just how parse.y shows its syntax errors in general, you can check with any other syntax error. `-c` doesn't involve the compiler. Anyways, if it was done in the compiler then other implementations would need to handle it as well and consumers of prism can successfully parse code that ruby would otherwise reject at runtime with a syntax error. ---------------------------------------- Bug #21540: prism allows `foo && return bar` when parse.y doesn't https://bugs.ruby-lang.org/issues/21540#change-114330 * Author: Earlopain (Earlopain _) * Status: Assigned * Assignee: prism * ruby -v: ruby 3.5.0dev (2025-08-08T02:57:23Z master 3ad26d0501) [x86_64-linux] * Backport: 3.2: DONTNEED, 3.3: DONTNEED, 3.4: REQUIRED ---------------------------------------- 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 -- https://bugs.ruby-lang.org/ ______________________________________________ ruby-core mailing list -- ruby-core@ml.ruby-lang.org To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/