From: mineroaoki@... Date: 2016-06-13T07:11:07+00:00 Subject: [ruby-core:75970] [Ruby trunk Bug#12295] Ripper not emitting on_parse_error for global variable name syntax errors 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: