Actions
Bug #16020
closedForbid `if` `elsif` without a condition
Bug #16020: Forbid `if` `elsif` without a condition
Status:
Rejected
Assignee:
-
Target version:
-
ruby -v:
ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-linux]
Backport:
Description
Hello.
I might have missed something, but examples like:
if puts "!!!!1" elsif puts "!!!!2" elsif puts "!!!!3" else puts "!!!!4" end # Output: # !!!!1 # !!!!2 # !!!!3 # !!!!4 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
if false puts "!!!!1" elsif 1==2 puts "!!!!2" elsif puts "!!!!3" else puts "!!!!4" end is similar to
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.
Updated by bogdanvlviv (Bogdan Denkovych) over 6 years ago
- ruby -v changed from ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-linux to ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-linux]
Updated by bogdanvlviv (Bogdan Denkovych) over 6 years ago
- Description updated (diff)
Updated by bogdanvlviv (Bogdan Denkovych) over 6 years ago
- Description updated (diff)
Updated by znz (Kazuhiro NISHIYAMA) over 6 years ago
Rubocop can detect such bug.
https://rubocop.readthedocs.io/en/stable/cops_layout/#layoutconditionposition
Updated by marcandre (Marc-Andre Lafortune) over 6 years ago
- Status changed from Open to Rejected
Actions