diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | parse.y | 49 |
2 files changed, 30 insertions, 24 deletions
@@ -7,6 +7,11 @@ Thu Jan 15 14:17:57 2009 Yukihiro Matsumoto <matz@ruby-lang.org> * parse.y (stmt): explicit error for "Object::Far += foo 1" just as "Object::Far += 1". + * parse.y (command): moved return/break/next from command_call for + better error message. + + * parse.y (call_args): void value check added. + Thu Jan 15 13:10:58 2009 NAKAMURA Usaku <usa@ruby-lang.org> * win32/Makefile.sub (COMPILERFLAG): for enc/trans/gb18030.c. @@ -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); |