
Issue #21608 has been updated by Earlopain (Earlopain _). To elaborate, if you replace `break` with a method call, it was already a syntax error. I suspect this was changed with https://bugs.ruby-lang.org/issues/21540. Such code has been rejected since at least ruby 2.0 and was only accidentally accepted since 3.4.0 ---------------------------------------- Bug #21608: 三項演算子と break を組み合わせると SyntaxError https://bugs.ruby-lang.org/issues/21608#change-114649 * Author: ursm (Keita Urashima) * Status: Rejected * Assignee: prism * ruby -v: ruby 3.4.6 (2025-09-16 revision dbd83256b1) +PRISM [x86_64-linux] * Backport: 3.2: UNKNOWN, 3.3: UNKNOWN, 3.4: REQUIRED ---------------------------------------- ```
RUBY_VERSION => "3.4.5" [1, 2].find {|i| i.even? ? break i : nil }
RUBY_VERSION => "3.4.6" [1, 2].find {|i| i.even? ? break i : nil } <internal:kernel>:168:in 'Kernel#loop': (irb):2: syntax error found (SyntaxError) 2 | ... i : nil } | ^ unexpected local variable or method, expecting end-of-input
from /home/ursm/.local/share/mise/installs/ruby/3.4.6/lib/ruby/gems/3.4.0/gems/irb-1.15.2/exe/irb:9:in '<top (required)>' from /home/ursm/.local/share/mise/installs/ruby/3.4.6/bin/irb:25:in 'Kernel#load' from /home/ursm/.local/share/mise/installs/ruby/3.4.6/bin/irb:25:in '<main>' ``` -- https://bugs.ruby-lang.org/