From 670ef625253724dd29328508d9e574fff5f46b79 Mon Sep 17 00:00:00 2001 From: Jeremy Evans Date: Wed, 3 Jul 2019 13:29:21 -0700 Subject: [PATCH] Do not dispatch an IGNORED_NL token in ripper if value is nil Fixes [Bug #11485] --- parse.y | 6 ++++++ test/ripper/test_parser_events.rb | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/parse.y b/parse.y index e6d1b9534c..169238dd12 100644 --- a/parse.y +++ b/parse.y @@ -8671,7 +8671,13 @@ parser_yylex(struct parser_params *p) case '|': case '&': case '.': { +#ifndef RIPPER dispatch_delayed_token(p, tIGNORED_NL); +#else + if (p->delayed != Qnil) { + dispatch_delayed_token(p, tIGNORED_NL); + } +#endif if (c == '|' ? peek(p, '>') : (peek(p, '.') == (c == '&'))) { pushback(p, c); dispatch_scan_event(p, tSP); diff --git a/test/ripper/test_parser_events.rb b/test/ripper/test_parser_events.rb index 37d72542a7..2c3b141904 100644 --- a/test/ripper/test_parser_events.rb +++ b/test/ripper/test_parser_events.rb @@ -751,6 +751,12 @@ def test_ifop assert_equal true, thru_ifop end + def test_ignored_nl + ignored_nl = [] + parse("foo # comment\n...\n", :on_ignored_nl) {|_, a| ignored_nl << a} + assert_equal ["\n"], ignored_nl + end + def test_lambda thru_lambda = false parse('->{}', :on_lambda) {thru_lambda = true} -- 2.21.0