From: merch-redmine@... Date: 2018-08-07T18:44:19+00:00 Subject: [ruby-core:88328] [Ruby trunk Bug#14974][Closed] "if" statement executes wrong branch Issue #14974 has been updated by jeremyevans0 (Jeremy Evans). Status changed from Open to Closed This appears to be a duplicate of #14897. ---------------------------------------- Bug #14974: "if" statement executes wrong branch https://bugs.ruby-lang.org/issues/14974#change-73357 * Author: kratob (Tobias Kraze) * Status: Closed * Priority: Normal * Assignee: * Target version: * ruby -v: ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux] * Backport: 2.3: UNKNOWN, 2.4: UNKNOWN, 2.5: UNKNOWN ---------------------------------------- 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` or `is_false` * removing the `foo = foo` or adding any other code to the `if` branch * replacing `raise "FAIL"` with `puts "FAIL"` * removing the `puts "PASS"` -- https://bugs.ruby-lang.org/ Unsubscribe: