From a769027f7962499e16f925e5ea8c3faed712af3d Mon Sep 17 00:00:00 2001 From: nobu Date: Tue, 30 Oct 2018 23:43:13 +0000 Subject: [PATCH] parse.y: last location from bison * parse.y (command): set the last location from the location managed by bison, so that other nodes are not needed. [ruby-core:89648] [Bug #15271] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65460 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- parse.y | 4 ++-- test/ruby/test_syntax.rb | 5 +++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/parse.y b/parse.y index 606daab7d8..21be51cb74 100644 --- a/parse.y +++ b/parse.y @@ -1351,7 +1351,7 @@ command : fcall command_args %prec tLOWEST { /*%%%*/ $1->nd_args = $2; - nd_set_last_loc($1, nd_last_loc($2)); + nd_set_last_loc($1, @2.end_pos); $$ = $1; /*% %*/ /*% ripper: command!($1, $2) %*/ @@ -1363,7 +1363,7 @@ command : fcall command_args %prec tLOWEST $1->nd_args = $2; $$ = method_add_block(p, $1, $3, &@$); fixpos($$, $1); - nd_set_last_loc($1, nd_last_loc($2)); + nd_set_last_loc($1, @2.end_pos); /*% %*/ /*% ripper: method_add_block!(command!($1, $2), $3) %*/ } diff --git a/test/ruby/test_syntax.rb b/test/ruby/test_syntax.rb index 564fc21c47..28f563046f 100644 --- a/test/ruby/test_syntax.rb +++ b/test/ruby/test_syntax.rb @@ -179,6 +179,11 @@ class TestSyntax < Test::Unit::TestCase bug13756 = '[ruby-core:82113] [Bug #13756]' assert_valid_syntax("defined? foo(**{})", bug13756) end; + assert_separately([], "#{<<~"begin;"}\n#{<<~'end;'}") + begin; + bug15271 = '[ruby-core:89648] [Bug #15271]' + assert_valid_syntax("a **{}", bug15271) + end; end def test_keyword_self_reference