diff options
Diffstat (limited to 'compile.c')
-rw-r--r-- | compile.c | 6 |
1 files changed, 6 insertions, 0 deletions
@@ -4583,9 +4583,11 @@ defined_expr0(rb_iseq_t *iseq, LINK_ANCHOR *const ret, case NODE_OPCALL: case NODE_VCALL: case NODE_FCALL: + case NODE_METHREF: case NODE_ATTRASGN:{ const int explicit_receiver = (type == NODE_CALL || type == NODE_OPCALL || + type == NODE_METHREF || (type == NODE_ATTRASGN && !private_recv_p(node))); if (!lfinish[1] && (node->nd_args || explicit_receiver)) { @@ -7552,6 +7554,10 @@ iseq_compile_each0(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *node, in } break; } + case NODE_METHREF: + CHECK(COMPILE_(ret, "receiver", node->nd_recv, popped)); + ADD_ELEM(ret, &new_insn_body(iseq, line, BIN(methodref), 1, ID2SYM(node->nd_mid))->link); + break; default: UNKNOWN_NODE("iseq_compile_each", node, COMPILE_NG); ng: |