Issue #12295 has been reported by Loren Segal.

----------------------------------------
Bug #12295: Ripper not emitting on_parse_error for global variable name syntax errors
https://bugs.ruby-lang.org/issues/12295

* Author: Loren Segal
* Status: Open
* Priority: Normal
* Assignee: 
* ruby -v: ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-linux-gnu]
* Backport: 2.1: UNKNOWN, 2.2: UNKNOWN, 2.3: UNKNOWN
----------------------------------------
Ripper is not emitting the `on_parse_error` event for certain types of syntax errors, specifically for the following snippet of code:

```
:~$
```

Here is the Ruby syntax error:

```
$ ruby -v
ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-linux-gnu]
$ ruby -e ':~$'
-e:1: `$' without identifiers is not allowed as a global variable name
```

Here is the expected Ripper result for a syntax error emitting `on_parse_error`:

```
$ ruby -rripper -e 'class X < Ripper; def on_parse_error(m) puts "ERROR #{m}" end end; X.parse "class;end"'
ERROR syntax error, unexpected ';'
```

Here is reproduction for the omitted `on_parse_error` event:

```
$ ruby -rripper -e 'class X < Ripper; def on_parse_error(m) puts "ERROR #{m}" end end; X.parse ":~$"'
$
```

Note the lack of ERROR message. The expectation is that this parse error will emit the `on_parse_error` event in Ripper.

I reproduced this in Ruby 2.3.0, I have not tested 2.2 or dev, so I don't know if it needs porting, though I imagine it does.



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