From c2996514d38e9df4dc4e0dcbdfd0d3ca73af668f Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Tue, 1 Dec 2015 09:38:42 +0900 Subject: should ignore block to next, break, etc. fix #3039 --- mrbgems/mruby-compiler/core/parse.y | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'mrbgems') diff --git a/mrbgems/mruby-compiler/core/parse.y b/mrbgems/mruby-compiler/core/parse.y index e46ff5b98..600ee30e6 100644 --- a/mrbgems/mruby-compiler/core/parse.y +++ b/mrbgems/mruby-compiler/core/parse.y @@ -852,19 +852,24 @@ call_with_block(parser_state *p, node *a, node *b) { node *n; - if (a->car == (node*)NODE_SUPER || - a->car == (node*)NODE_ZSUPER) { + switch ((enum node_type)a->car) { + case NODE_SUPER: + case NODE_ZSUPER: if (!a->cdr) a->cdr = cons(0, b); else { args_with_block(p, a->cdr, b); } - } - else { + break; + case NODE_CALL: + case NODE_FCALL: n = a->cdr->cdr->cdr; if (!n->car) n->car = cons(0, b); else { args_with_block(p, n->car, b); } + break; + default: + break; } } -- cgit v1.2.3