summaryrefslogtreecommitdiff
path: root/test/ripper/test_parser_events.rb
diff options
context:
space:
mode:
authorrhe <rhe@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-07-21 04:29:46 +0000
committerrhe <rhe@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-07-21 04:29:46 +0000
commitc4dfd0ccfbc325d3231de655f9f0dfc4cdfc8593 (patch)
treeec0f6717c80f680997b623c5fa6d3566152fe119 /test/ripper/test_parser_events.rb
parent0055f09bcc84ef28c401fae056ac5afe87d0357e (diff)
ripper: add kwrest_param parser event
* parse.y (f_kwrest): Dispatch kwrest_param event. This is especially useful for unnamed kwrest parameter for which we expose the internal ID currently. [ruby-core:75528] [Feature #12387] * test/ripper/dummyparser.rb (on_kwrest_param): Add handler for kwrest_param parser event. * test/ripper/test_parser_events.rb (test_params): Adapt to the change in DummyParser. (test_kwrest_param): Test that kwrest_param event handler is called. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59382 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test/ripper/test_parser_events.rb')
-rw-r--r--test/ripper/test_parser_events.rb11
1 files changed, 10 insertions, 1 deletions
diff --git a/test/ripper/test_parser_events.rb b/test/ripper/test_parser_events.rb
index c9189ee7a8..03580107a0 100644
--- a/test/ripper/test_parser_events.rb
+++ b/test/ripper/test_parser_events.rb
@@ -893,7 +893,7 @@ class TestRipper::ParserEvents < Test::Unit::TestCase
thru_params = false
parse('a {|**x|}', :on_params) {|_, *v| thru_params = true; arg = v}
assert_equal true, thru_params
- assert_equal [nil, nil, nil, nil, nil, "x", nil], arg
+ assert_equal [nil, nil, nil, nil, nil, "**x", nil], arg
end
def test_params_mlhs
@@ -1079,6 +1079,15 @@ class TestRipper::ParserEvents < Test::Unit::TestCase
assert_equal true, thru_rest_param
end
+ def test_kwrest_param
+ thru_kwrest = false
+ parse('def a(**) end', :on_kwrest_param) {|n, val| thru_kwrest = val}
+ assert_equal nil, thru_kwrest
+ thru_kwrest = false
+ parse('def a(**x) end', :on_kwrest_param) {|n, val| thru_kwrest = val}
+ assert_equal "x", thru_kwrest
+ end
+
def test_retry
thru_retry = false
parse('retry', :on_retry) {thru_retry = true}