diff options
-rw-r--r-- | parse.y | 4 | ||||
-rw-r--r-- | test/ruby/test_syntax.rb | 5 |
2 files changed, 7 insertions, 2 deletions
@@ -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 |