From 3977fd332f26c44afeb2f3c950be6af358ac294d Mon Sep 17 00:00:00 2001 From: nobu Date: Sun, 4 Jan 2015 12:32:54 +0000 Subject: parse.y: fix f_label result * parse.y (f_label): return tLABEL value as it is. [ruby-core:67315] [Bug #10693] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49140 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 5 +++++ parse.y | 4 ++-- test/ripper/test_parser_events.rb | 22 +++++++++++++++++++--- 3 files changed, 26 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8d417b3451..9813fea748 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Sun Jan 4 21:32:52 2015 Nobuyoshi Nakada + + * parse.y (f_label): return tLABEL value as it is. + [ruby-core:67315] [Bug #10693] + Sun Jan 4 14:02:37 2015 Nobuyoshi Nakada * test/lib/test/unit/parallel.rb (run): expand the file name to be diff --git a/parse.y b/parse.y index cdd9009228..1a12001dec 100644 --- a/parse.y +++ b/parse.y @@ -4729,9 +4729,9 @@ f_arg : f_arg_item f_label : tLABEL { ID id = get_id($1); - $$ = formal_argument(id); - arg_var($$); + arg_var(formal_argument(id)); current_arg = id; + $$ = $1; } ; diff --git a/test/ripper/test_parser_events.rb b/test/ripper/test_parser_events.rb index 883684aca1..08296a241e 100644 --- a/test/ripper/test_parser_events.rb +++ b/test/ripper/test_parser_events.rb @@ -751,15 +751,31 @@ class TestRipper::ParserEvents < Test::Unit::TestCase end def test_params + arg = nil thru_params = false - parse('a {||}', :on_params) {thru_params = true} + parse('a {||}', :on_params) {|_, *v| thru_params = true; arg = v} assert_equal true, thru_params + assert_equal [nil, nil, nil, nil, nil, nil, nil], arg thru_params = false - parse('a {|x|}', :on_params) {thru_params = true} + parse('a {|x|}', :on_params) {|_, *v| thru_params = true; arg = v} assert_equal true, thru_params + assert_equal [["x"], nil, nil, nil, nil, nil, nil], arg thru_params = false - parse('a {|*x|}', :on_params) {thru_params = true} + parse('a {|*x|}', :on_params) {|_, *v| thru_params = true; arg = v} assert_equal true, thru_params + assert_equal [nil, nil, "*x", nil, nil, nil, nil], arg + thru_params = false + parse('a {|x: 1|}', :on_params) {|_, *v| thru_params = true; arg = v} + assert_equal true, thru_params + assert_equal [nil, nil, nil, nil, [["x:", "1"]], nil, nil], arg + 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, [["x:", false]], nil, nil], arg + 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 end def test_paren -- cgit v1.2.3