ext/yarp/api_node.c in yarp-0.11.0 vs ext/yarp/api_node.c in yarp-0.12.0

- old
+ new

@@ -12,11 +12,12 @@ extern VALUE rb_cYARPNode; extern VALUE rb_cYARPSource; extern VALUE rb_cYARPToken; extern VALUE rb_cYARPLocation; -static VALUE rb_cYARPAliasNode; +static VALUE rb_cYARPAliasGlobalVariableNode; +static VALUE rb_cYARPAliasMethodNode; static VALUE rb_cYARPAlternationPatternNode; static VALUE rb_cYARPAndNode; static VALUE rb_cYARPArgumentsNode; static VALUE rb_cYARPArrayNode; static VALUE rb_cYARPArrayPatternNode; @@ -77,18 +78,20 @@ static VALUE rb_cYARPGlobalVariableWriteNode; static VALUE rb_cYARPHashNode; static VALUE rb_cYARPHashPatternNode; static VALUE rb_cYARPIfNode; static VALUE rb_cYARPImaginaryNode; +static VALUE rb_cYARPImplicitNode; static VALUE rb_cYARPInNode; static VALUE rb_cYARPInstanceVariableAndWriteNode; static VALUE rb_cYARPInstanceVariableOperatorWriteNode; static VALUE rb_cYARPInstanceVariableOrWriteNode; static VALUE rb_cYARPInstanceVariableReadNode; static VALUE rb_cYARPInstanceVariableTargetNode; static VALUE rb_cYARPInstanceVariableWriteNode; static VALUE rb_cYARPIntegerNode; +static VALUE rb_cYARPInterpolatedMatchLastLineNode; static VALUE rb_cYARPInterpolatedRegularExpressionNode; static VALUE rb_cYARPInterpolatedStringNode; static VALUE rb_cYARPInterpolatedSymbolNode; static VALUE rb_cYARPInterpolatedXStringNode; static VALUE rb_cYARPKeywordHashNode; @@ -99,12 +102,14 @@ static VALUE rb_cYARPLocalVariableOperatorWriteNode; static VALUE rb_cYARPLocalVariableOrWriteNode; static VALUE rb_cYARPLocalVariableReadNode; static VALUE rb_cYARPLocalVariableTargetNode; static VALUE rb_cYARPLocalVariableWriteNode; +static VALUE rb_cYARPMatchLastLineNode; static VALUE rb_cYARPMatchPredicateNode; static VALUE rb_cYARPMatchRequiredNode; +static VALUE rb_cYARPMatchWriteNode; static VALUE rb_cYARPMissingNode; static VALUE rb_cYARPModuleNode; static VALUE rb_cYARPMultiTargetNode; static VALUE rb_cYARPMultiWriteNode; static VALUE rb_cYARPNextNode; @@ -244,17 +249,24 @@ yp_node_t *node = node_stack->visit; node_stack->visited = true; switch (YP_NODE_TYPE(node)) { #line 111 "api_node.c.erb" - case YP_ALIAS_NODE: { - yp_alias_node_t *cast = (yp_alias_node_t *) node; + case YP_ALIAS_GLOBAL_VARIABLE_NODE: { + yp_alias_global_variable_node_t *cast = (yp_alias_global_variable_node_t *) node; yp_node_stack_push(&node_stack, (yp_node_t *) cast->new_name); yp_node_stack_push(&node_stack, (yp_node_t *) cast->old_name); break; } #line 111 "api_node.c.erb" + case YP_ALIAS_METHOD_NODE: { + yp_alias_method_node_t *cast = (yp_alias_method_node_t *) node; + yp_node_stack_push(&node_stack, (yp_node_t *) cast->new_name); + yp_node_stack_push(&node_stack, (yp_node_t *) cast->old_name); + break; + } +#line 111 "api_node.c.erb" case YP_ALTERNATION_PATTERN_NODE: { yp_alternation_pattern_node_t *cast = (yp_alternation_pattern_node_t *) node; yp_node_stack_push(&node_stack, (yp_node_t *) cast->left); yp_node_stack_push(&node_stack, (yp_node_t *) cast->right); break; @@ -617,10 +629,16 @@ yp_imaginary_node_t *cast = (yp_imaginary_node_t *) node; yp_node_stack_push(&node_stack, (yp_node_t *) cast->numeric); break; } #line 111 "api_node.c.erb" + case YP_IMPLICIT_NODE: { + yp_implicit_node_t *cast = (yp_implicit_node_t *) node; + yp_node_stack_push(&node_stack, (yp_node_t *) cast->value); + break; + } +#line 111 "api_node.c.erb" case YP_IN_NODE: { yp_in_node_t *cast = (yp_in_node_t *) node; yp_node_stack_push(&node_stack, (yp_node_t *) cast->pattern); yp_node_stack_push(&node_stack, (yp_node_t *) cast->statements); break; @@ -648,10 +666,18 @@ yp_instance_variable_write_node_t *cast = (yp_instance_variable_write_node_t *) node; yp_node_stack_push(&node_stack, (yp_node_t *) cast->value); break; } #line 111 "api_node.c.erb" + case YP_INTERPOLATED_MATCH_LAST_LINE_NODE: { + yp_interpolated_match_last_line_node_t *cast = (yp_interpolated_match_last_line_node_t *) node; + for (size_t index = 0; index < cast->parts.size; index++) { + yp_node_stack_push(&node_stack, (yp_node_t *) cast->parts.nodes[index]); + } + break; + } +#line 111 "api_node.c.erb" case YP_INTERPOLATED_REGULAR_EXPRESSION_NODE: { yp_interpolated_regular_expression_node_t *cast = (yp_interpolated_regular_expression_node_t *) node; for (size_t index = 0; index < cast->parts.size; index++) { yp_node_stack_push(&node_stack, (yp_node_t *) cast->parts.nodes[index]); } @@ -739,10 +765,16 @@ yp_node_stack_push(&node_stack, (yp_node_t *) cast->value); yp_node_stack_push(&node_stack, (yp_node_t *) cast->pattern); break; } #line 111 "api_node.c.erb" + case YP_MATCH_WRITE_NODE: { + yp_match_write_node_t *cast = (yp_match_write_node_t *) node; + yp_node_stack_push(&node_stack, (yp_node_t *) cast->call); + break; + } +#line 111 "api_node.c.erb" case YP_MODULE_NODE: { yp_module_node_t *cast = (yp_module_node_t *) node; yp_node_stack_push(&node_stack, (yp_node_t *) cast->constant_path); yp_node_stack_push(&node_stack, (yp_node_t *) cast->body); break; @@ -790,14 +822,14 @@ yp_node_stack_push(&node_stack, (yp_node_t *) cast->requireds.nodes[index]); } for (size_t index = 0; index < cast->optionals.size; index++) { yp_node_stack_push(&node_stack, (yp_node_t *) cast->optionals.nodes[index]); } + yp_node_stack_push(&node_stack, (yp_node_t *) cast->rest); for (size_t index = 0; index < cast->posts.size; index++) { yp_node_stack_push(&node_stack, (yp_node_t *) cast->posts.nodes[index]); } - yp_node_stack_push(&node_stack, (yp_node_t *) cast->rest); for (size_t index = 0; index < cast->keywords.size; index++) { yp_node_stack_push(&node_stack, (yp_node_t *) cast->keywords.nodes[index]); } yp_node_stack_push(&node_stack, (yp_node_t *) cast->keyword_rest); yp_node_stack_push(&node_stack, (yp_node_t *) cast->block); @@ -971,12 +1003,12 @@ } else { yp_node_t *node = yp_node_stack_pop(&node_stack); switch (YP_NODE_TYPE(node)) { #line 137 "api_node.c.erb" - case YP_ALIAS_NODE: { - yp_alias_node_t *cast = (yp_alias_node_t *) node; + case YP_ALIAS_GLOBAL_VARIABLE_NODE: { + yp_alias_global_variable_node_t *cast = (yp_alias_global_variable_node_t *) node; VALUE argv[4]; // new_name #line 148 "api_node.c.erb" argv[0] = rb_ary_pop(value_stack); @@ -990,14 +1022,37 @@ argv[2] = yp_location_new(parser, cast->keyword_loc.start, cast->keyword_loc.end, source); // location argv[3] = yp_location_new(parser, node->location.start, node->location.end, source); - rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPAliasNode)); + rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPAliasGlobalVariableNode)); break; } #line 137 "api_node.c.erb" + case YP_ALIAS_METHOD_NODE: { + yp_alias_method_node_t *cast = (yp_alias_method_node_t *) node; + VALUE argv[4]; + + // new_name +#line 148 "api_node.c.erb" + argv[0] = rb_ary_pop(value_stack); + + // old_name +#line 148 "api_node.c.erb" + argv[1] = rb_ary_pop(value_stack); + + // keyword_loc +#line 173 "api_node.c.erb" + argv[2] = yp_location_new(parser, cast->keyword_loc.start, cast->keyword_loc.end, source); + + // location + argv[3] = yp_location_new(parser, node->location.start, node->location.end, source); + + rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPAliasMethodNode)); + break; + } +#line 137 "api_node.c.erb" case YP_ALTERNATION_PATTERN_NODE: { yp_alternation_pattern_node_t *cast = (yp_alternation_pattern_node_t *) node; VALUE argv[4]; // left @@ -1383,11 +1438,11 @@ #line 176 "api_node.c.erb" argv[5] = cast->closing_loc.start == NULL ? Qnil : yp_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source); // flags #line 182 "api_node.c.erb" - argv[6] = ULONG2NUM(node->flags >> 1); + argv[6] = ULONG2NUM(node->flags >> 2); // read_name #line 157 "api_node.c.erb" argv[7] = yp_string_new(&cast->read_name, encoding); @@ -1442,11 +1497,11 @@ #line 148 "api_node.c.erb" argv[6] = rb_ary_pop(value_stack); // flags #line 182 "api_node.c.erb" - argv[7] = ULONG2NUM(node->flags >> 1); + argv[7] = ULONG2NUM(node->flags >> 2); // name #line 157 "api_node.c.erb" argv[8] = yp_string_new(&cast->name, encoding); @@ -1485,11 +1540,11 @@ #line 176 "api_node.c.erb" argv[5] = cast->closing_loc.start == NULL ? Qnil : yp_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source); // flags #line 182 "api_node.c.erb" - argv[6] = ULONG2NUM(node->flags >> 1); + argv[6] = ULONG2NUM(node->flags >> 2); // read_name #line 157 "api_node.c.erb" argv[7] = yp_string_new(&cast->read_name, encoding); @@ -1545,11 +1600,11 @@ #line 176 "api_node.c.erb" argv[5] = cast->closing_loc.start == NULL ? Qnil : yp_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source); // flags #line 182 "api_node.c.erb" - argv[6] = ULONG2NUM(node->flags >> 1); + argv[6] = ULONG2NUM(node->flags >> 2); // read_name #line 157 "api_node.c.erb" argv[7] = yp_string_new(&cast->read_name, encoding); @@ -2361,11 +2416,11 @@ #line 173 "api_node.c.erb" argv[2] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source); // flags #line 182 "api_node.c.erb" - argv[3] = ULONG2NUM(node->flags >> 1); + argv[3] = ULONG2NUM(node->flags >> 2); // location argv[4] = yp_location_new(parser, node->location.start, node->location.end, source); rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cYARPFlipFlopNode)); @@ -2707,10 +2762,24 @@ rb_ary_push(value_stack, rb_class_new_instance(2, argv, rb_cYARPImaginaryNode)); break; } #line 137 "api_node.c.erb" + case YP_IMPLICIT_NODE: { + VALUE argv[2]; + + // value +#line 148 "api_node.c.erb" + argv[0] = rb_ary_pop(value_stack); + + // location + argv[1] = yp_location_new(parser, node->location.start, node->location.end, source); + + rb_ary_push(value_stack, rb_class_new_instance(2, argv, rb_cYARPImplicitNode)); + break; + } +#line 137 "api_node.c.erb" case YP_IN_NODE: { yp_in_node_t *cast = (yp_in_node_t *) node; VALUE argv[5]; // pattern @@ -2884,19 +2953,53 @@ rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cYARPInstanceVariableWriteNode)); break; } #line 137 "api_node.c.erb" case YP_INTEGER_NODE: { - VALUE argv[1]; + VALUE argv[2]; + // flags +#line 182 "api_node.c.erb" + argv[0] = ULONG2NUM(node->flags >> 2); + // location - argv[0] = yp_location_new(parser, node->location.start, node->location.end, source); + argv[1] = yp_location_new(parser, node->location.start, node->location.end, source); - rb_ary_push(value_stack, rb_class_new_instance(1, argv, rb_cYARPIntegerNode)); + rb_ary_push(value_stack, rb_class_new_instance(2, argv, rb_cYARPIntegerNode)); break; } #line 137 "api_node.c.erb" + case YP_INTERPOLATED_MATCH_LAST_LINE_NODE: { + yp_interpolated_match_last_line_node_t *cast = (yp_interpolated_match_last_line_node_t *) node; + VALUE argv[5]; + + // opening_loc +#line 173 "api_node.c.erb" + argv[0] = yp_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source); + + // parts +#line 151 "api_node.c.erb" + argv[1] = rb_ary_new_capa(cast->parts.size); + for (size_t index = 0; index < cast->parts.size; index++) { + rb_ary_push(argv[1], rb_ary_pop(value_stack)); + } + + // closing_loc +#line 173 "api_node.c.erb" + argv[2] = yp_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source); + + // flags +#line 182 "api_node.c.erb" + argv[3] = ULONG2NUM(node->flags >> 2); + + // location + argv[4] = yp_location_new(parser, node->location.start, node->location.end, source); + + rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cYARPInterpolatedMatchLastLineNode)); + break; + } +#line 137 "api_node.c.erb" case YP_INTERPOLATED_REGULAR_EXPRESSION_NODE: { yp_interpolated_regular_expression_node_t *cast = (yp_interpolated_regular_expression_node_t *) node; VALUE argv[5]; // opening_loc @@ -2914,11 +3017,11 @@ #line 173 "api_node.c.erb" argv[2] = yp_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source); // flags #line 182 "api_node.c.erb" - argv[3] = ULONG2NUM(node->flags >> 1); + argv[3] = ULONG2NUM(node->flags >> 2); // location argv[4] = yp_location_new(parser, node->location.start, node->location.end, source); rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cYARPInterpolatedRegularExpressionNode)); @@ -3277,10 +3380,41 @@ rb_ary_push(value_stack, rb_class_new_instance(6, argv, rb_cYARPLocalVariableWriteNode)); break; } #line 137 "api_node.c.erb" + case YP_MATCH_LAST_LINE_NODE: { + yp_match_last_line_node_t *cast = (yp_match_last_line_node_t *) node; + VALUE argv[6]; + + // opening_loc +#line 173 "api_node.c.erb" + argv[0] = yp_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source); + + // content_loc +#line 173 "api_node.c.erb" + argv[1] = yp_location_new(parser, cast->content_loc.start, cast->content_loc.end, source); + + // closing_loc +#line 173 "api_node.c.erb" + argv[2] = yp_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source); + + // unescaped +#line 157 "api_node.c.erb" + argv[3] = yp_string_new(&cast->unescaped, encoding); + + // flags +#line 182 "api_node.c.erb" + argv[4] = ULONG2NUM(node->flags >> 2); + + // location + argv[5] = yp_location_new(parser, node->location.start, node->location.end, source); + + rb_ary_push(value_stack, rb_class_new_instance(6, argv, rb_cYARPMatchLastLineNode)); + break; + } +#line 137 "api_node.c.erb" case YP_MATCH_PREDICATE_NODE: { yp_match_predicate_node_t *cast = (yp_match_predicate_node_t *) node; VALUE argv[4]; // value @@ -3323,10 +3457,33 @@ rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPMatchRequiredNode)); break; } #line 137 "api_node.c.erb" + case YP_MATCH_WRITE_NODE: { + yp_match_write_node_t *cast = (yp_match_write_node_t *) node; + VALUE argv[3]; + + // call +#line 148 "api_node.c.erb" + argv[0] = rb_ary_pop(value_stack); + + // locals +#line 166 "api_node.c.erb" + argv[1] = rb_ary_new_capa(cast->locals.size); + for (size_t index = 0; index < cast->locals.size; index++) { + assert(cast->locals.ids[index] != 0); + rb_ary_push(argv[1], rb_id2sym(constants[cast->locals.ids[index] - 1])); + } + + // location + argv[2] = yp_location_new(parser, node->location.start, node->location.end, source); + + rb_ary_push(value_stack, rb_class_new_instance(3, argv, rb_cYARPMatchWriteNode)); + break; + } +#line 137 "api_node.c.erb" case YP_MISSING_NODE: { VALUE argv[1]; // location argv[0] = yp_location_new(parser, node->location.start, node->location.end, source); @@ -3565,21 +3722,21 @@ argv[1] = rb_ary_new_capa(cast->optionals.size); for (size_t index = 0; index < cast->optionals.size; index++) { rb_ary_push(argv[1], rb_ary_pop(value_stack)); } + // rest +#line 148 "api_node.c.erb" + argv[2] = rb_ary_pop(value_stack); + // posts #line 151 "api_node.c.erb" - argv[2] = rb_ary_new_capa(cast->posts.size); + argv[3] = rb_ary_new_capa(cast->posts.size); for (size_t index = 0; index < cast->posts.size; index++) { - rb_ary_push(argv[2], rb_ary_pop(value_stack)); + rb_ary_push(argv[3], rb_ary_pop(value_stack)); } - // rest -#line 148 "api_node.c.erb" - argv[3] = rb_ary_pop(value_stack); - // keywords #line 151 "api_node.c.erb" argv[4] = rb_ary_new_capa(cast->keywords.size); for (size_t index = 0; index < cast->keywords.size; index++) { rb_ary_push(argv[4], rb_ary_pop(value_stack)); @@ -3762,11 +3919,11 @@ #line 173 "api_node.c.erb" argv[2] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source); // flags #line 182 "api_node.c.erb" - argv[3] = ULONG2NUM(node->flags >> 1); + argv[3] = ULONG2NUM(node->flags >> 2); // location argv[4] = yp_location_new(parser, node->location.start, node->location.end, source); rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cYARPRangeNode)); @@ -3817,11 +3974,11 @@ #line 157 "api_node.c.erb" argv[3] = yp_string_new(&cast->unescaped, encoding); // flags #line 182 "api_node.c.erb" - argv[4] = ULONG2NUM(node->flags >> 1); + argv[4] = ULONG2NUM(node->flags >> 2); // location argv[5] = yp_location_new(parser, node->location.start, node->location.end, source); rb_ary_push(value_stack, rb_class_new_instance(6, argv, rb_cYARPRegularExpressionNode)); @@ -4121,32 +4278,36 @@ break; } #line 137 "api_node.c.erb" case YP_STRING_NODE: { yp_string_node_t *cast = (yp_string_node_t *) node; - VALUE argv[5]; + VALUE argv[6]; + // flags +#line 182 "api_node.c.erb" + argv[0] = ULONG2NUM(node->flags >> 2); + // opening_loc #line 176 "api_node.c.erb" - argv[0] = cast->opening_loc.start == NULL ? Qnil : yp_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source); + argv[1] = cast->opening_loc.start == NULL ? Qnil : yp_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source); // content_loc #line 173 "api_node.c.erb" - argv[1] = yp_location_new(parser, cast->content_loc.start, cast->content_loc.end, source); + argv[2] = yp_location_new(parser, cast->content_loc.start, cast->content_loc.end, source); // closing_loc #line 176 "api_node.c.erb" - argv[2] = cast->closing_loc.start == NULL ? Qnil : yp_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source); + argv[3] = cast->closing_loc.start == NULL ? Qnil : yp_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source); // unescaped #line 157 "api_node.c.erb" - argv[3] = yp_string_new(&cast->unescaped, encoding); + argv[4] = yp_string_new(&cast->unescaped, encoding); // location - argv[4] = yp_location_new(parser, node->location.start, node->location.end, source); + argv[5] = yp_location_new(parser, node->location.start, node->location.end, source); - rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cYARPStringNode)); + rb_ary_push(value_stack, rb_class_new_instance(6, argv, rb_cYARPStringNode)); break; } #line 137 "api_node.c.erb" case YP_SUPER_NODE: { yp_super_node_t *cast = (yp_super_node_t *) node; @@ -4289,11 +4450,11 @@ #line 148 "api_node.c.erb" argv[3] = rb_ary_pop(value_stack); // flags #line 182 "api_node.c.erb" - argv[4] = ULONG2NUM(node->flags >> 1); + argv[4] = ULONG2NUM(node->flags >> 2); // location argv[5] = yp_location_new(parser, node->location.start, node->location.end, source); rb_ary_push(value_stack, rb_class_new_instance(6, argv, rb_cYARPUntilNode)); @@ -4346,11 +4507,11 @@ #line 148 "api_node.c.erb" argv[3] = rb_ary_pop(value_stack); // flags #line 182 "api_node.c.erb" - argv[4] = ULONG2NUM(node->flags >> 1); + argv[4] = ULONG2NUM(node->flags >> 2); // location argv[5] = yp_location_new(parser, node->location.start, node->location.end, source); rb_ary_push(value_stack, rb_class_new_instance(6, argv, rb_cYARPWhileNode)); @@ -4421,11 +4582,12 @@ return result; } void Init_yarp_api_node(void) { - rb_cYARPAliasNode = rb_define_class_under(rb_cYARP, "AliasNode", rb_cYARPNode); + rb_cYARPAliasGlobalVariableNode = rb_define_class_under(rb_cYARP, "AliasGlobalVariableNode", rb_cYARPNode); + rb_cYARPAliasMethodNode = rb_define_class_under(rb_cYARP, "AliasMethodNode", rb_cYARPNode); rb_cYARPAlternationPatternNode = rb_define_class_under(rb_cYARP, "AlternationPatternNode", rb_cYARPNode); rb_cYARPAndNode = rb_define_class_under(rb_cYARP, "AndNode", rb_cYARPNode); rb_cYARPArgumentsNode = rb_define_class_under(rb_cYARP, "ArgumentsNode", rb_cYARPNode); rb_cYARPArrayNode = rb_define_class_under(rb_cYARP, "ArrayNode", rb_cYARPNode); rb_cYARPArrayPatternNode = rb_define_class_under(rb_cYARP, "ArrayPatternNode", rb_cYARPNode); @@ -4486,18 +4648,20 @@ rb_cYARPGlobalVariableWriteNode = rb_define_class_under(rb_cYARP, "GlobalVariableWriteNode", rb_cYARPNode); rb_cYARPHashNode = rb_define_class_under(rb_cYARP, "HashNode", rb_cYARPNode); rb_cYARPHashPatternNode = rb_define_class_under(rb_cYARP, "HashPatternNode", rb_cYARPNode); rb_cYARPIfNode = rb_define_class_under(rb_cYARP, "IfNode", rb_cYARPNode); rb_cYARPImaginaryNode = rb_define_class_under(rb_cYARP, "ImaginaryNode", rb_cYARPNode); + rb_cYARPImplicitNode = rb_define_class_under(rb_cYARP, "ImplicitNode", rb_cYARPNode); rb_cYARPInNode = rb_define_class_under(rb_cYARP, "InNode", rb_cYARPNode); rb_cYARPInstanceVariableAndWriteNode = rb_define_class_under(rb_cYARP, "InstanceVariableAndWriteNode", rb_cYARPNode); rb_cYARPInstanceVariableOperatorWriteNode = rb_define_class_under(rb_cYARP, "InstanceVariableOperatorWriteNode", rb_cYARPNode); rb_cYARPInstanceVariableOrWriteNode = rb_define_class_under(rb_cYARP, "InstanceVariableOrWriteNode", rb_cYARPNode); rb_cYARPInstanceVariableReadNode = rb_define_class_under(rb_cYARP, "InstanceVariableReadNode", rb_cYARPNode); rb_cYARPInstanceVariableTargetNode = rb_define_class_under(rb_cYARP, "InstanceVariableTargetNode", rb_cYARPNode); rb_cYARPInstanceVariableWriteNode = rb_define_class_under(rb_cYARP, "InstanceVariableWriteNode", rb_cYARPNode); rb_cYARPIntegerNode = rb_define_class_under(rb_cYARP, "IntegerNode", rb_cYARPNode); + rb_cYARPInterpolatedMatchLastLineNode = rb_define_class_under(rb_cYARP, "InterpolatedMatchLastLineNode", rb_cYARPNode); rb_cYARPInterpolatedRegularExpressionNode = rb_define_class_under(rb_cYARP, "InterpolatedRegularExpressionNode", rb_cYARPNode); rb_cYARPInterpolatedStringNode = rb_define_class_under(rb_cYARP, "InterpolatedStringNode", rb_cYARPNode); rb_cYARPInterpolatedSymbolNode = rb_define_class_under(rb_cYARP, "InterpolatedSymbolNode", rb_cYARPNode); rb_cYARPInterpolatedXStringNode = rb_define_class_under(rb_cYARP, "InterpolatedXStringNode", rb_cYARPNode); rb_cYARPKeywordHashNode = rb_define_class_under(rb_cYARP, "KeywordHashNode", rb_cYARPNode); @@ -4508,11 +4672,13 @@ rb_cYARPLocalVariableOperatorWriteNode = rb_define_class_under(rb_cYARP, "LocalVariableOperatorWriteNode", rb_cYARPNode); rb_cYARPLocalVariableOrWriteNode = rb_define_class_under(rb_cYARP, "LocalVariableOrWriteNode", rb_cYARPNode); rb_cYARPLocalVariableReadNode = rb_define_class_under(rb_cYARP, "LocalVariableReadNode", rb_cYARPNode); rb_cYARPLocalVariableTargetNode = rb_define_class_under(rb_cYARP, "LocalVariableTargetNode", rb_cYARPNode); rb_cYARPLocalVariableWriteNode = rb_define_class_under(rb_cYARP, "LocalVariableWriteNode", rb_cYARPNode); + rb_cYARPMatchLastLineNode = rb_define_class_under(rb_cYARP, "MatchLastLineNode", rb_cYARPNode); rb_cYARPMatchPredicateNode = rb_define_class_under(rb_cYARP, "MatchPredicateNode", rb_cYARPNode); rb_cYARPMatchRequiredNode = rb_define_class_under(rb_cYARP, "MatchRequiredNode", rb_cYARPNode); + rb_cYARPMatchWriteNode = rb_define_class_under(rb_cYARP, "MatchWriteNode", rb_cYARPNode); rb_cYARPMissingNode = rb_define_class_under(rb_cYARP, "MissingNode", rb_cYARPNode); rb_cYARPModuleNode = rb_define_class_under(rb_cYARP, "ModuleNode", rb_cYARPNode); rb_cYARPMultiTargetNode = rb_define_class_under(rb_cYARP, "MultiTargetNode", rb_cYARPNode); rb_cYARPMultiWriteNode = rb_define_class_under(rb_cYARP, "MultiWriteNode", rb_cYARPNode); rb_cYARPNextNode = rb_define_class_under(rb_cYARP, "NextNode", rb_cYARPNode);