Project

General

Profile

Actions

Bug #16020

closed

Forbid `if` `elsif` without a condition

Added by bogdanvlviv (Bogdan Denkovych) over 5 years ago. Updated over 5 years ago.

Status:
Rejected
Assignee:
-
Target version:
-
ruby -v:
ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-linux]
[ruby-core:93908]

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.

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0