Actions
Bug #21048
closed
[Prism] rescue in modifier form with condition behaves differently
Description
With the following code there is a discrepancy in how prism and parse.y consider precedence:
$called = false
def foo
$called = true
end
foo rescue nil if false
puts "Called: #{$called}"
Prism interprets it as foo rescue (nil if false)
, calling the method. parse.y
does (foo rescue nil) if false
since at least Ruby 2.0
$ ruby -v
ruby 3.5.0dev (2025-01-19T12:44:20Z master f27ed98eff) +PRISM [x86_64-linux]
$ ruby code.rb
Called: true
$ ruby --parser=parse.y code.rb
Called: false
Updated by Earlopain (Earlopain _) about 1 month ago
- ruby -v changed from 3.4.1 to ruby 3.4.1 (2024-12-25 revision 48d4efcb85) +PRISM [x86_64-linux]
Updated by nobu (Nobuyoshi Nakada) about 1 month ago
Earlopain (Earlopain _) wrote:
Prism interprets it as
(foo rescue nil) if false
, not calling the method.parse.y
doesfoo rescue (nil if false)
since at least Ruby 2.0
Inverse?
$ ruby -v ruby 3.5.0dev (2025-01-19T12:44:20Z master f27ed98eff) +PRISM [x86_64-linux] $ ruby code.rb Called: true $ ruby --parser=parse.y code.rb Called: false
Updated by Earlopain (Earlopain _) about 1 month ago
Yes, I switched it up in the text. Fixed
Updated by tenderlovemaking (Aaron Patterson) about 1 month ago
- Assignee set to prism
Updated by kddnewton (Kevin Newton) about 1 month ago
- Backport changed from 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN, 3.4: UNKNOWN to 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN, 3.4: REQUIRED
Updated by kddnewton (Kevin Newton) about 1 month ago
- Status changed from Open to Closed
Updated by hsbt (Hiroshi SHIBATA) 10 days ago
- Has duplicate Bug #21132: Changed postposition `rescue` and `if` behavior since Ruby 3.4 added
Updated by k0kubun (Takashi Kokubun) 9 days ago
- Backport changed from 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN, 3.4: REQUIRED to 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN, 3.4: DONE
ruby_3_4 04298f2d158fa860293d2ed2779cba69bc47f404 merged revision(s) c2908613368b2ae404d094a15df61d830fc46dc9.
Actions
Like0
Like0Like0Like0Like0Like0Like0Like0Like0Like0