From: zn@... Date: 2019-07-25T13:56:12+00:00 Subject: [ruby-core:93910] [Ruby master Bug#16020] Forbid `if` `elsif` without a condition Issue #16020 has been updated by znz (Kazuhiro NISHIYAMA). Rubocop can detect such bug. ---------------------------------------- Bug #16020: Forbid `if` `elsif` without a condition https://bugs.ruby-lang.org/issues/16020#change-80001 * Author: bogdanvlviv (Bogdan Denkovych) * Status: Open * Priority: Normal * Assignee: * Target version: * ruby -v: ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-linux] * Backport: 2.5: UNKNOWN, 2.6: UNKNOWN ---------------------------------------- Hello. I might have missed something, but examples like: ```ruby if puts "!!!!1" elsif puts "!!!!2" elsif puts "!!!!3" else puts "!!!!4" end # Output: # !!!!1 # !!!!2 # !!!!3 # !!!!4 ``` ```ruby if false puts "!!!!1" elsif 1==2 puts "!!!!2" elsif puts "!!!!3" else puts "!!!!4" end # Output: # !!!!3 # !!!!4 ``` are confusing. We probably should raise `SyntaxError` in the case when `if`/`elsif` is being used without any condition. What do you think about it? Original source: https://twitter.com/bogdanvlviv/status/1154356514628493313 Edited: https://twitter.com/mamantoha/status/1154369189647454213 helped me to figure out that The code like ```ruby if false puts "!!!!1" elsif 1==2 puts "!!!!2" elsif puts "!!!!3" else puts "!!!!4" end ``` is similar to ```ruby if false puts "!!!!1" elsif 1==2 puts "!!!!2" elsif (puts "!!!!3") else (puts "!!!!4") end ``` Probably Ruby should be more strict in those cases because such code is more prone to bugs. -- https://bugs.ruby-lang.org/ Unsubscribe: