summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--parse.y1
-rw-r--r--test/ripper/test_parser_events.rb6
2 files changed, 7 insertions, 0 deletions
diff --git a/parse.y b/parse.y
index e6d1b9534c..df773edf6e 100644
--- a/parse.y
+++ b/parse.y
@@ -5340,6 +5340,7 @@ ripper_dispatch_delayed_token(struct parser_params *p, enum yytokentype t)
int saved_line = p->ruby_sourceline;
const char *saved_tokp = p->lex.ptok;
+ if (NIL_P(p->delayed)) return;
p->ruby_sourceline = p->delayed_line;
p->lex.ptok = p->lex.pbeg + p->delayed_col;
add_mark_object(p, yylval_rval = ripper_dispatch1(p, ripper_token2eventid(t), p->delayed));
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 @@ class TestRipper::ParserEvents < Test::Unit::TestCase
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}