Actions
Bug #16020
closedForbid `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 5 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 5 years ago
- Description updated (diff)
Updated by bogdanvlviv (Bogdan Denkovych) over 5 years ago
- Description updated (diff)
Updated by znz (Kazuhiro NISHIYAMA) over 5 years ago
Rubocop can detect such bug.
https://rubocop.readthedocs.io/en/stable/cops_layout/#layoutconditionposition
Updated by marcandre (Marc-Andre Lafortune) over 5 years ago
- Status changed from Open to Rejected
Actions
Like0
Like0Like0Like0Like0Like0