diff options
author | nagachika <nagachika@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-11-06 14:49:59 +0000 |
---|---|---|
committer | nagachika <nagachika@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-11-06 14:49:59 +0000 |
commit | a2d9317d04a32eb255885eb125d0657af684f4e9 (patch) | |
tree | 4372767c2abceea5be56848d7e7004dea52c0aa5 | |
parent | cd8b9033e625d84fc0cae4d8938c5afd0bfd48ce (diff) |
merge revision(s) 64786: [Backport #15087]
parse.y: fix block passing with empty kwargs
* parse.y (arg_blk_pass): preceeding arguments node may be NULL when
an empty keyword argument hash splat is optimized away.
[ruby-core:88890] [Bug #15087]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_5@65579 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | parse.y | 1 | ||||
-rw-r--r-- | test/ruby/test_keyword.rb | 7 | ||||
-rw-r--r-- | version.h | 8 |
3 files changed, 11 insertions, 5 deletions
@@ -10789,6 +10789,7 @@ static NODE * arg_blk_pass(NODE *node1, NODE *node2) { if (node2) { + if (!node1) return node2; node2->nd_head = node1; nd_set_first_lineno(node2, nd_first_lineno(node1)); nd_set_first_column(node2, nd_first_column(node1)); diff --git a/test/ruby/test_keyword.rb b/test/ruby/test_keyword.rb index f4cc7bc9d6..8a45016c13 100644 --- a/test/ruby/test_keyword.rb +++ b/test/ruby/test_keyword.rb @@ -547,7 +547,8 @@ class TestKeywordArguments < Test::Unit::TestCase def test_dynamic_symbol_keyword bug10266 = '[ruby-dev:48564] [Bug #10266]' - assert_separately(['-', bug10266], <<-'end;') # do + assert_separately(['-', bug10266], "#{<<~"begin;"}\n#{<<~'end;'}") + begin; bug = ARGV.shift "hoge".to_sym assert_nothing_raised(bug) {eval("def a(hoge:); end")} @@ -677,4 +678,8 @@ class TestKeywordArguments < Test::Unit::TestCase obj.t(42) end end + + def test_splat_empty_hash_with_block_passing + assert_valid_syntax("bug15087(**{}, &nil)") + end end @@ -1,10 +1,10 @@ #define RUBY_VERSION "2.5.4" -#define RUBY_RELEASE_DATE "2018-10-21" -#define RUBY_PATCHLEVEL 107 +#define RUBY_RELEASE_DATE "2018-11-06" +#define RUBY_PATCHLEVEL 108 #define RUBY_RELEASE_YEAR 2018 -#define RUBY_RELEASE_MONTH 10 -#define RUBY_RELEASE_DAY 21 +#define RUBY_RELEASE_MONTH 11 +#define RUBY_RELEASE_DAY 6 #include "ruby/version.h" |