[ruby-core:75970] [Ruby trunk Bug#12295] Ripper not emitting on_parse_error for global variable name syntax errors
From:
mineroaoki@...
Date:
2016-06-13 07:11:07 UTC
List:
ruby-core #75970
Issue #12295 has been updated by Minero Aoki.
Ripper is just a thin wrapper over ruby parser, so the original parser differentiate them, ripper just inherits difference directly.
Extra work such as unifying two errors should be done by upper layer.
----------------------------------------
Bug #12295: Ripper not emitting on_parse_error for global variable name syntax errors
https://bugs.ruby-lang.org/issues/12295#change-59162
* Author: Loren Segal
* Status: Assigned
* Priority: Normal
* Assignee: Minero Aoki
* 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>