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

From: matz@...
Date: 2016-05-13 10:59:59 UTC
List: ruby-core #75492
Issue #12376 has been updated by Yukihiro Matsumoto.

Status changed from Open to Closed

it's parsed like

``` ruby
a = 1
if a == 2
  puts 2
  elseif(a==1)
  puts 1
else
  puts 0
end
```

and the method `elseif` is not called in the false condition.
But you can find this kind of bugs using rubocop or other tools

Matz.

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

* Author: Daniel Ferreira
* Status: Closed
* 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