Actions
Bug #14974
closed"if" statement executes wrong branch
Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]
Description
I've stumbled over a rather weird bug where Ruby 2.5+ executes an else
branch of a condition when it should not. The best minimal example I could come up with is this:
def broken
foo = 1
if is_true or is_false
foo = foo
else
raise "FAIL"
end
puts "PASS"
end
def is_true
true
end
def is_false
false
end
broken()
For me this script raises "FAIL" instead of printing "PASS".
Note that this is actually pretty much minimal; any of the following will "fix" the issue:
- inlining
is_true
oris_false
- removing the
foo = foo
or adding any other code to theif
branch - replacing
raise "FAIL"
withputs "FAIL"
- removing the
puts "PASS"
Actions
Like0
Like0Like0Like0Like0