diff --git a/ChangeLog b/ChangeLog index b8f0048ef5..ab2bf09285 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Sat Dec 22 02:49:02 2007 Yukihiro Matsumoto + + * parse.y (command): block from cmd_brace_block was ignored. + [ruby-dev:32644] + Sat Dec 22 01:52:11 2007 Yukihiro Matsumoto * io.c (io_ungetc): avoid buffer relocation, which might cause diff --git a/parse.y b/parse.y index de0b596f51..08a25df257 100644 --- a/parse.y +++ b/parse.y @@ -1264,8 +1264,9 @@ command : operation command_args %prec tLOWEST | operation command_args cmd_brace_block { /*%%%*/ - $$ = NEW_FCALL($1, $2); block_dup_check($2,$3); + $3->nd_iter = NEW_FCALL($1, $2); + $$ = $3; fixpos($$, $2); /*% $$ = dispatch2(command, $1, $2); @@ -1284,8 +1285,9 @@ command : operation command_args %prec tLOWEST | primary_value '.' operation2 command_args cmd_brace_block { /*%%%*/ - $$ = NEW_CALL($1, $3, $4); block_dup_check($4,$5); + $5->nd_iter = NEW_CALL($1, $3, $4); + $$ = $5; fixpos($$, $1); /*% $$ = dispatch4(command_call, $1, ripper_id2sym('.'), $3, $4); @@ -1304,8 +1306,9 @@ command : operation command_args %prec tLOWEST | primary_value tCOLON2 operation2 command_args cmd_brace_block { /*%%%*/ - $$ = NEW_CALL($1, $3, $4); block_dup_check($4,$5); + $5->nd_iter = NEW_CALL($1, $3, $4); + $$ = $5; fixpos($$, $1); /*% $$ = dispatch4(command_call, $1, ripper_intern("::"), $3, $4);