ruby-changes:22949
From: nobu <ko1@a...>
Date: Tue, 13 Mar 2012 15:17:19 +0900 (JST)
Subject: [ruby-changes:22949] nobu:r34998 (trunk): * parse.y (block_param, f_args): add rules for the case arguments
nobu 2012-03-13 15:17:08 +0900 (Tue, 13 Mar 2012) New Revision: 34998 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=34998 Log: * parse.y (block_param, f_args): add rules for the case arguments begin with kwrest. [ruby-core:42455][Bug #5989] Modified files: trunk/ChangeLog trunk/parse.y trunk/test/ruby/test_syntax.rb Index: ChangeLog =================================================================== --- ChangeLog (revision 34997) +++ ChangeLog (revision 34998) @@ -1,3 +1,8 @@ +Tue Mar 13 15:17:03 2012 Nobuyoshi Nakada <nobu@r...> + + * parse.y (block_param, f_args): add rules for the case arguments + begin with kwrest. [ruby-core:42455][Bug #5989] + Tue Mar 13 12:37:53 2012 NARUSE, Yui <naruse@r...> * io.c (io_encoding_set): always warn if external encoding and internal Index: parse.y =================================================================== --- parse.y (revision 34997) +++ parse.y (revision 34998) @@ -3672,6 +3672,14 @@ $$ = params_new(Qnil, Qnil, Qnil, Qnil, $1, Qnil, escape_Qundef($2)); %*/ } + | tPOW tIDENTIFIER opt_f_block_arg + { + /*%%%*/ + $$ = new_args(0, 0, 0, 0, 0, $2, $3); + /*% + $$ = params_new(Qnil, Qnil, Qnil, Qnil, Qnil, $2, escape_Qundef($3)); + %*/ + } | f_block_arg { /*%%%*/ @@ -4994,6 +5002,14 @@ $$ = params_new(Qnil, Qnil, Qnil, Qnil, $1, Qnil, escape_Qundef($2)); %*/ } + | tPOW tIDENTIFIER opt_f_block_arg + { + /*%%%*/ + $$ = new_args(0, 0, 0, 0, 0, $2, $3); + /*% + $$ = params_new(Qnil, Qnil, Qnil, Qnil, Qnil, $2, escape_Qundef($3)); + %*/ + } | f_block_arg { /*%%%*/ Index: test/ruby/test_syntax.rb =================================================================== --- test/ruby/test_syntax.rb (revision 34997) +++ test/ruby/test_syntax.rb (revision 34998) @@ -77,6 +77,12 @@ end end + def test_keyword_rest + bug5989 = '[ruby-core:42455]' + assert_valid_syntax("def kwrest_test(**a) end", __FILE__) + assert_valid_syntax("def kwrest_test(**a, &b) end", __FILE__) + end + private def make_tmpsrc(f, src) -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/