Project

General

Profile

Bug #16020

Updated by bogdanvlviv (Bogdan Denkovych) over 4 years ago

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 


 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.

Back