From: lsegal@... Date: 2016-04-17T19:48:29+00:00 Subject: [ruby-core:74988] [Ruby trunk Bug#12295] Ripper not emitting on_parse_error for global variable name syntax errors 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: