Issue #15990 has been updated by nicholaslyang (Nicholas Yang).


shevegen (Robert A. Heiler) wrote:
> I guess it should be possible to distinguish between "else if" and "elsif"
> by the ruby parser already, since it does fail if the 'e ' part is there
> in the first case, as otherwise the parser would accept the syntax. So I
> think it would be possible to change the error message without too much
> difficulty. Whether that ought to happen or not is, in my opinion, up to
> matz and the core team e. g. whether they want to have a different message
> show up here. I personally don't mind either way.
> 
> What I think has not yet been described is: what message would you recommend
> to appear other than the current one? This may help matz and/or the ruby
> core team to decide how useful the proposed change may be. Newcomers are of
> course one target audience, but so are other ruby users; so the new error
> message, if decided to make a change, should cover useful cases for both
> groups of ruby users.

The problem is that this is valid Ruby:
``` ruby
if false
  puts 'false'
else if true
  puts 'true'
end
end
```
So we can't really tell if `else if` is invalid until we parse the second `end`.





----------------------------------------
Bug #15990: "else if" causes confusing syntax error
https://bugs.ruby-lang.org/issues/15990#change-79164

* Author: viko (Viko Viko)
* Status: Open
* Priority: Normal
* Assignee: 
* Target version: 
* ruby -v: ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-darwin18]
* Backport: 2.4: UNKNOWN, 2.5: UNKNOWN, 2.6: UNKNOWN
----------------------------------------
```
if false
  puts 'false'
else if true
  puts 'true'
end
```

This fails with "syntax error: unexpected end-of-input, expecting end". `else if` isn't `elsif`, of course, but if a file contains `else if` (especially on one line, though I don't know how easy that would be to track) and fails to parse, it is probably worth noting, especially since this kind of syntax error can't easily be traced back to a particular line.



-- 
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>