From a214bf6913320d76ab9a62d5d86d9a9e220613b5 Mon Sep 17 00:00:00 2001 From: matz Date: Thu, 15 Jan 2009 06:06:47 +0000 Subject: * parse.y (command): moved return/break/next from command_call for better error message. * parse.y (call_args): void value check added. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@21527 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- parse.y | 49 +++++++++++++++++++++++++------------------------ 1 file changed, 25 insertions(+), 24 deletions(-) (limited to 'parse.y') diff --git a/parse.y b/parse.y index 2074cb673..511568427 100644 --- a/parse.y +++ b/parse.y @@ -1212,30 +1212,6 @@ expr_value : expr command_call : command | block_command - | keyword_return call_args - { - /*%%%*/ - $$ = NEW_RETURN(ret_args($2)); - /*% - $$ = dispatch1(return, $2); - %*/ - } - | keyword_break call_args - { - /*%%%*/ - $$ = NEW_BREAK(ret_args($2)); - /*% - $$ = dispatch1(break, $2); - %*/ - } - | keyword_next call_args - { - /*%%%*/ - $$ = NEW_NEXT(ret_args($2)); - /*% - $$ = dispatch1(next, $2); - %*/ - } ; block_command : block_call @@ -1362,6 +1338,30 @@ command : operation command_args %prec tLOWEST $$ = dispatch1(yield, $2); %*/ } + | keyword_return call_args + { + /*%%%*/ + $$ = NEW_RETURN(ret_args($2)); + /*% + $$ = dispatch1(return, $2); + %*/ + } + | keyword_break call_args + { + /*%%%*/ + $$ = NEW_BREAK(ret_args($2)); + /*% + $$ = dispatch1(break, $2); + %*/ + } + | keyword_next call_args + { + /*%%%*/ + $$ = NEW_NEXT(ret_args($2)); + /*% + $$ = dispatch1(next, $2); + %*/ + } ; mlhs : mlhs_basic @@ -2337,6 +2337,7 @@ opt_call_args : none call_args : command { /*%%%*/ + value_expr($1); $$ = NEW_LIST($1); /*% $$ = arg_add(arg_new(), $1); -- cgit