[前][次][番号順一覧][スレッド一覧]

ruby-changes:58414

From: Nobuyoshi <ko1@a...>
Date: Fri, 25 Oct 2019 00:16:26 +0900 (JST)
Subject: [ruby-changes:58414] 6279e45cde (master): Arguments forwarding is not allowed in lambda [Feature #16253]

https://git.ruby-lang.org/ruby.git/commit/?id=6279e45cde

From 6279e45cdefa3e61ca1c9c8085b15727cb2f4a60 Mon Sep 17 00:00:00 2001
From: Nobuyoshi Nakada <nobu@r...>
Date: Fri, 25 Oct 2019 00:06:43 +0900
Subject: Arguments forwarding is not allowed in lambda [Feature #16253]


diff --git a/parse.y b/parse.y
index 657e521..c3e385e 100644
--- a/parse.y
+++ b/parse.y
@@ -4781,6 +4781,19 @@ f_arglist	: '(' f_args rparen https://github.com/ruby/ruby/blob/trunk/parse.y#L4781
 			SET_LEX_STATE(EXPR_BEG);
 			p->command_start = TRUE;
 		    }
+		| '(' args_forward rparen
+		    {
+			arg_var(p, idFWD_REST);
+			arg_var(p, idFWD_KWREST);
+			arg_var(p, idFWD_BLOCK);
+		    /*%%%*/
+			$$ = new_args_tail(p, Qnone, idFWD_KWREST, idFWD_BLOCK, &@2);
+			$$ = new_args(p, Qnone, Qnone, idFWD_REST, Qnone, $$, &@2);
+		    /*% %*/
+		    /*% ripper: paren!(params_new(Qnone, Qnone, $2, Qnone, Qnone, Qnone, Qnone)) %*/
+			SET_LEX_STATE(EXPR_BEG);
+			p->command_start = TRUE;
+		    }
 		|   {
 			$<num>$ = p->in_kwarg;
 			p->in_kwarg = 1;
@@ -4883,17 +4896,6 @@ f_args		: f_arg ',' f_optarg ',' f_rest_arg opt_args_tail https://github.com/ruby/ruby/blob/trunk/parse.y#L4896
 		    {
 			$$ = new_args(p, Qnone, Qnone, Qnone, Qnone, $1, &@$);
 		    }
-		| args_forward
-		    {
-			arg_var(p, idFWD_REST);
-			arg_var(p, idFWD_KWREST);
-			arg_var(p, idFWD_BLOCK);
-		    /*%%%*/
-			$$ = new_args_tail(p, Qnone, idFWD_KWREST, idFWD_BLOCK, &@1);
-			$$ = new_args(p, Qnone, Qnone, idFWD_REST, Qnone, $$, &@$);
-		    /*% %*/
-		    /*% ripper: params_new(Qnone, Qnone, $1, Qnone, Qnone, Qnone, Qnone) %*/
-		    }
 		| /* none */
 		    {
 			$$ = new_args_tail(p, Qnone, Qnone, Qnone, &@0);
diff --git a/test/ruby/test_syntax.rb b/test/ruby/test_syntax.rb
index 5b933d9..5bbcbef 100644
--- a/test/ruby/test_syntax.rb
+++ b/test/ruby/test_syntax.rb
@@ -1476,6 +1476,8 @@ eom https://github.com/ruby/ruby/blob/trunk/test/ruby/test_syntax.rb#L1476
     assert_valid_syntax('def foo(...) end')
     assert_syntax_error('iter do |...| end', /unexpected/)
     assert_syntax_error('iter {|...|}', /unexpected/)
+    assert_syntax_error('->... {}', /unexpected/)
+    assert_syntax_error('->(...) {}', /unexpected/)
     assert_syntax_error('def foo(x, y, z) bar(...); end', /unexpected/)
     assert_syntax_error('def foo(x, y, z) super(...); end', /unexpected/)
     assert_syntax_error('def foo(...) yield(...); end', /unexpected/)
-- 
cgit v0.10.2


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]