diff options
Diffstat (limited to 'mrbgems/mruby-compiler')
| -rw-r--r-- | mrbgems/mruby-compiler/core/parse.y | 13 |
1 files changed, 9 insertions, 4 deletions
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; } } |
