[ruby-core:75493] [Ruby trunk Bug#12376] No error for elseif condition

From: zverok.offline@...
Date: 2016-05-13 10:59:36 UTC
List: ruby-core #75493
Issue #12376 has been updated by Victor Shepelev.


It is parsed as

~~~ruby
if a == 2
  puts 2
elsif a == 3
  puts 3
  elseif(a == 1)
  puts 1
else
  puts 4
end
~~~

With `elseif` being just a method call. With this branch not evaluated, there is no problem with unknown method in it. 

----------------------------------------
Bug #12376: No error for elseif condition
https://bugs.ruby-lang.org/issues/12376#change-58610

* Author: Daniel Ferreira
* Status: Open
* Priority: Normal
* Assignee: 
* ruby -v: 2.3.0
* Backport: 2.1: UNKNOWN, 2.2: UNKNOWN, 2.3: UNKNOWN
----------------------------------------
Something I have been for a long time wondering about.
I don't know if this is a parsing problem or not but for me it seems like it is.

Replication:

``` ruby
$ irb
> RUBY_VERSION
 => '2.3.0'
> a = 1
> if a == 2
>   puts 2
> elsif a == 3
>   puts 3
> elseif a == 1
>   puts 1
> else
>   puts 0
> end
0
 => nil
```

Shouldn't we have a parse error triggered here? 
We can replace *elseif* for any other instruction like *foo* for instance.

I believe this behaviour is around for a long time.



-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>

In This Thread

Prev Next