9#line 2 "prism/templates/ext/prism/api_node.c.erb"
10#include "prism/extension.h"
11#include "prism/internal/allocator.h"
12#include "prism/internal/arena.h"
16extern VALUE rb_cPrism;
17extern VALUE rb_cPrismNode;
18extern VALUE rb_cPrismSource;
19extern VALUE rb_cPrismToken;
20extern VALUE rb_cPrismLocation;
22static VALUE rb_cPrismAliasGlobalVariableNode;
23static VALUE rb_cPrismAliasMethodNode;
24static VALUE rb_cPrismAlternationPatternNode;
25static VALUE rb_cPrismAndNode;
26static VALUE rb_cPrismArgumentsNode;
27static VALUE rb_cPrismArrayNode;
28static VALUE rb_cPrismArrayPatternNode;
29static VALUE rb_cPrismAssocNode;
30static VALUE rb_cPrismAssocSplatNode;
31static VALUE rb_cPrismBackReferenceReadNode;
32static VALUE rb_cPrismBeginNode;
33static VALUE rb_cPrismBlockArgumentNode;
34static VALUE rb_cPrismBlockLocalVariableNode;
35static VALUE rb_cPrismBlockNode;
36static VALUE rb_cPrismBlockParameterNode;
37static VALUE rb_cPrismBlockParametersNode;
38static VALUE rb_cPrismBreakNode;
39static VALUE rb_cPrismCallAndWriteNode;
40static VALUE rb_cPrismCallNode;
41static VALUE rb_cPrismCallOperatorWriteNode;
42static VALUE rb_cPrismCallOrWriteNode;
43static VALUE rb_cPrismCallTargetNode;
44static VALUE rb_cPrismCapturePatternNode;
45static VALUE rb_cPrismCaseMatchNode;
46static VALUE rb_cPrismCaseNode;
47static VALUE rb_cPrismClassNode;
48static VALUE rb_cPrismClassVariableAndWriteNode;
49static VALUE rb_cPrismClassVariableOperatorWriteNode;
50static VALUE rb_cPrismClassVariableOrWriteNode;
51static VALUE rb_cPrismClassVariableReadNode;
52static VALUE rb_cPrismClassVariableTargetNode;
53static VALUE rb_cPrismClassVariableWriteNode;
54static VALUE rb_cPrismConstantAndWriteNode;
55static VALUE rb_cPrismConstantOperatorWriteNode;
56static VALUE rb_cPrismConstantOrWriteNode;
57static VALUE rb_cPrismConstantPathAndWriteNode;
58static VALUE rb_cPrismConstantPathNode;
59static VALUE rb_cPrismConstantPathOperatorWriteNode;
60static VALUE rb_cPrismConstantPathOrWriteNode;
61static VALUE rb_cPrismConstantPathTargetNode;
62static VALUE rb_cPrismConstantPathWriteNode;
63static VALUE rb_cPrismConstantReadNode;
64static VALUE rb_cPrismConstantTargetNode;
65static VALUE rb_cPrismConstantWriteNode;
66static VALUE rb_cPrismDefNode;
67static VALUE rb_cPrismDefinedNode;
68static VALUE rb_cPrismElseNode;
69static VALUE rb_cPrismEmbeddedStatementsNode;
70static VALUE rb_cPrismEmbeddedVariableNode;
71static VALUE rb_cPrismEnsureNode;
72static VALUE rb_cPrismErrorRecoveryNode;
73static VALUE rb_cPrismFalseNode;
74static VALUE rb_cPrismFindPatternNode;
75static VALUE rb_cPrismFlipFlopNode;
76static VALUE rb_cPrismFloatNode;
77static VALUE rb_cPrismForNode;
78static VALUE rb_cPrismForwardingArgumentsNode;
79static VALUE rb_cPrismForwardingParameterNode;
80static VALUE rb_cPrismForwardingSuperNode;
81static VALUE rb_cPrismGlobalVariableAndWriteNode;
82static VALUE rb_cPrismGlobalVariableOperatorWriteNode;
83static VALUE rb_cPrismGlobalVariableOrWriteNode;
84static VALUE rb_cPrismGlobalVariableReadNode;
85static VALUE rb_cPrismGlobalVariableTargetNode;
86static VALUE rb_cPrismGlobalVariableWriteNode;
87static VALUE rb_cPrismHashNode;
88static VALUE rb_cPrismHashPatternNode;
89static VALUE rb_cPrismIfNode;
90static VALUE rb_cPrismImaginaryNode;
91static VALUE rb_cPrismImplicitNode;
92static VALUE rb_cPrismImplicitRestNode;
93static VALUE rb_cPrismInNode;
94static VALUE rb_cPrismIndexAndWriteNode;
95static VALUE rb_cPrismIndexOperatorWriteNode;
96static VALUE rb_cPrismIndexOrWriteNode;
97static VALUE rb_cPrismIndexTargetNode;
98static VALUE rb_cPrismInstanceVariableAndWriteNode;
99static VALUE rb_cPrismInstanceVariableOperatorWriteNode;
100static VALUE rb_cPrismInstanceVariableOrWriteNode;
101static VALUE rb_cPrismInstanceVariableReadNode;
102static VALUE rb_cPrismInstanceVariableTargetNode;
103static VALUE rb_cPrismInstanceVariableWriteNode;
104static VALUE rb_cPrismIntegerNode;
105static VALUE rb_cPrismInterpolatedMatchLastLineNode;
106static VALUE rb_cPrismInterpolatedRegularExpressionNode;
107static VALUE rb_cPrismInterpolatedStringNode;
108static VALUE rb_cPrismInterpolatedSymbolNode;
109static VALUE rb_cPrismInterpolatedXStringNode;
110static VALUE rb_cPrismItLocalVariableReadNode;
111static VALUE rb_cPrismItParametersNode;
112static VALUE rb_cPrismKeywordHashNode;
113static VALUE rb_cPrismKeywordRestParameterNode;
114static VALUE rb_cPrismLambdaNode;
115static VALUE rb_cPrismLocalVariableAndWriteNode;
116static VALUE rb_cPrismLocalVariableOperatorWriteNode;
117static VALUE rb_cPrismLocalVariableOrWriteNode;
118static VALUE rb_cPrismLocalVariableReadNode;
119static VALUE rb_cPrismLocalVariableTargetNode;
120static VALUE rb_cPrismLocalVariableWriteNode;
121static VALUE rb_cPrismMatchLastLineNode;
122static VALUE rb_cPrismMatchPredicateNode;
123static VALUE rb_cPrismMatchRequiredNode;
124static VALUE rb_cPrismMatchWriteNode;
125static VALUE rb_cPrismModuleNode;
126static VALUE rb_cPrismMultiTargetNode;
127static VALUE rb_cPrismMultiWriteNode;
128static VALUE rb_cPrismNextNode;
129static VALUE rb_cPrismNilNode;
130static VALUE rb_cPrismNoBlockParameterNode;
131static VALUE rb_cPrismNoKeywordsParameterNode;
132static VALUE rb_cPrismNumberedParametersNode;
133static VALUE rb_cPrismNumberedReferenceReadNode;
134static VALUE rb_cPrismOptionalKeywordParameterNode;
135static VALUE rb_cPrismOptionalParameterNode;
136static VALUE rb_cPrismOrNode;
137static VALUE rb_cPrismParametersNode;
138static VALUE rb_cPrismParenthesesNode;
139static VALUE rb_cPrismPinnedExpressionNode;
140static VALUE rb_cPrismPinnedVariableNode;
141static VALUE rb_cPrismPostExecutionNode;
142static VALUE rb_cPrismPreExecutionNode;
143static VALUE rb_cPrismProgramNode;
144static VALUE rb_cPrismRangeNode;
145static VALUE rb_cPrismRationalNode;
146static VALUE rb_cPrismRedoNode;
147static VALUE rb_cPrismRegularExpressionNode;
148static VALUE rb_cPrismRequiredKeywordParameterNode;
149static VALUE rb_cPrismRequiredParameterNode;
150static VALUE rb_cPrismRescueModifierNode;
151static VALUE rb_cPrismRescueNode;
152static VALUE rb_cPrismRestParameterNode;
153static VALUE rb_cPrismRetryNode;
154static VALUE rb_cPrismReturnNode;
155static VALUE rb_cPrismSelfNode;
156static VALUE rb_cPrismShareableConstantNode;
157static VALUE rb_cPrismSingletonClassNode;
158static VALUE rb_cPrismSourceEncodingNode;
159static VALUE rb_cPrismSourceFileNode;
160static VALUE rb_cPrismSourceLineNode;
161static VALUE rb_cPrismSplatNode;
162static VALUE rb_cPrismStatementsNode;
163static VALUE rb_cPrismStringNode;
164static VALUE rb_cPrismSuperNode;
165static VALUE rb_cPrismSymbolNode;
166static VALUE rb_cPrismTrueNode;
167static VALUE rb_cPrismUndefNode;
168static VALUE rb_cPrismUnlessNode;
169static VALUE rb_cPrismUntilNode;
170static VALUE rb_cPrismWhenNode;
171static VALUE rb_cPrismWhileNode;
172static VALUE rb_cPrismXStringNode;
173static VALUE rb_cPrismYieldNode;
176pm_location_new(
const uint32_t start,
const uint32_t length,
VALUE source,
bool freeze) {
181 uint64_t value = ((((uint64_t) start) << 32) | ((uint64_t) length));
188 ID type = rb_intern(pm_token_type(token->type));
189 VALUE location = pm_location_new((uint32_t) (token->start - pm_parser_start(parser)), (uint32_t) (token->end - token->start), source, freeze);
191 VALUE slice = rb_enc_str_new((
const char *) token->start, token->end - token->start, encoding);
203 return rb_obj_freeze(rb_enc_str_new((
const char *) pm_string_source(
string), pm_string_length(
string), encoding));
209 if (integer->
values == NULL) {
213 unsigned char *bytes = (
unsigned char *) RSTRING_PTR(
string);
215 size_t offset = integer->
length * 8;
216 for (
size_t value_index = 0; value_index < integer->
length; value_index++) {
217 uint32_t value = integer->
values[value_index];
219 for (
int index = 0; index < 8; index++) {
220 int byte = (value >> (4 * index)) & 0xf;
221 bytes[--offset] =
byte < 10 ?
byte +
'0' :
byte - 10 +
'a';
229 result =
rb_funcall(result, rb_intern(
"-@"), 0);
238 const uint8_t *start = pm_parser_start(parser);
239 VALUE source_string = rb_enc_str_new((
const char *) start, pm_parser_end(parser) - start, encoding);
246 for (
size_t index = 0; index < line_offsets->
size; index++) {
256 VALUE source =
rb_funcall(rb_cPrismSource, rb_intern(
"for"), 7, source_string,
LONG2NUM(pm_parser_start_line(parser)), offsets, comments, comment_attachments, comment_ranges,
ULL2NUM(pm_parser_checksum(parser)));
273 node->visited =
false;
282 *stack = current->prev;
294 VALUE string = rb_enc_str_new((
const char *) pm_constant_start(constant), pm_constant_length(constant), encoding);
299 rb_set_errinfo(
Qnil);
307 size_t constants_size = pm_parser_constants_size(parser);
310 for (
size_t index = 0; index < constants_size; index++) {
311 rb_ary_push(constants, pm_ast_constant(pm_parser_constant_at(parser, index), encoding));
316 pm_node_stack_push(node_arena, &node_stack, node);
319 while (node_stack != NULL) {
320 if (!node_stack->visited) {
321 if (node_stack->visit == NULL) {
322 pm_node_stack_pop(&node_stack);
327 const pm_node_t *node = node_stack->visit;
328 node_stack->visited =
true;
330 switch (PM_NODE_TYPE(node)) {
331#line 177 "prism/templates/ext/prism/api_node.c.erb"
332 case PM_ALIAS_GLOBAL_VARIABLE_NODE: {
334 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->new_name);
335 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->old_name);
338#line 177 "prism/templates/ext/prism/api_node.c.erb"
339 case PM_ALIAS_METHOD_NODE: {
341 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->new_name);
342 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->old_name);
345#line 177 "prism/templates/ext/prism/api_node.c.erb"
346 case PM_ALTERNATION_PATTERN_NODE: {
348 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->left);
349 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->right);
352#line 177 "prism/templates/ext/prism/api_node.c.erb"
355 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->left);
356 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->right);
359#line 177 "prism/templates/ext/prism/api_node.c.erb"
360 case PM_ARGUMENTS_NODE: {
362 for (
size_t index = 0; index <
cast->arguments.size; index++) {
363 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->arguments.nodes[index]);
367#line 177 "prism/templates/ext/prism/api_node.c.erb"
368 case PM_ARRAY_NODE: {
370 for (
size_t index = 0; index <
cast->elements.size; index++) {
371 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->elements.nodes[index]);
375#line 177 "prism/templates/ext/prism/api_node.c.erb"
376 case PM_ARRAY_PATTERN_NODE: {
378 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->constant);
379 for (
size_t index = 0; index <
cast->requireds.size; index++) {
380 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->requireds.nodes[index]);
382 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->rest);
383 for (
size_t index = 0; index <
cast->posts.size; index++) {
384 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->posts.nodes[index]);
388#line 177 "prism/templates/ext/prism/api_node.c.erb"
389 case PM_ASSOC_NODE: {
391 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->key);
392 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
395#line 177 "prism/templates/ext/prism/api_node.c.erb"
396 case PM_ASSOC_SPLAT_NODE: {
398 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
401#line 177 "prism/templates/ext/prism/api_node.c.erb"
402 case PM_BEGIN_NODE: {
404 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->statements);
405 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->rescue_clause);
406 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->else_clause);
407 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->ensure_clause);
410#line 177 "prism/templates/ext/prism/api_node.c.erb"
411 case PM_BLOCK_ARGUMENT_NODE: {
413 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->expression);
416#line 177 "prism/templates/ext/prism/api_node.c.erb"
417 case PM_BLOCK_NODE: {
419 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->parameters);
420 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->body);
423#line 177 "prism/templates/ext/prism/api_node.c.erb"
424 case PM_BLOCK_PARAMETERS_NODE: {
426 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->parameters);
427 for (
size_t index = 0; index <
cast->locals.size; index++) {
428 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->locals.nodes[index]);
432#line 177 "prism/templates/ext/prism/api_node.c.erb"
433 case PM_BREAK_NODE: {
435 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->arguments);
438#line 177 "prism/templates/ext/prism/api_node.c.erb"
439 case PM_CALL_AND_WRITE_NODE: {
441 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->receiver);
442 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
445#line 177 "prism/templates/ext/prism/api_node.c.erb"
448 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->receiver);
449 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->arguments);
450 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->block);
453#line 177 "prism/templates/ext/prism/api_node.c.erb"
454 case PM_CALL_OPERATOR_WRITE_NODE: {
456 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->receiver);
457 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
460#line 177 "prism/templates/ext/prism/api_node.c.erb"
461 case PM_CALL_OR_WRITE_NODE: {
463 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->receiver);
464 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
467#line 177 "prism/templates/ext/prism/api_node.c.erb"
468 case PM_CALL_TARGET_NODE: {
470 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->receiver);
473#line 177 "prism/templates/ext/prism/api_node.c.erb"
474 case PM_CAPTURE_PATTERN_NODE: {
476 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
477 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->target);
480#line 177 "prism/templates/ext/prism/api_node.c.erb"
481 case PM_CASE_MATCH_NODE: {
483 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->predicate);
484 for (
size_t index = 0; index <
cast->conditions.size; index++) {
485 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->conditions.nodes[index]);
487 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->else_clause);
490#line 177 "prism/templates/ext/prism/api_node.c.erb"
493 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->predicate);
494 for (
size_t index = 0; index <
cast->conditions.size; index++) {
495 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->conditions.nodes[index]);
497 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->else_clause);
500#line 177 "prism/templates/ext/prism/api_node.c.erb"
501 case PM_CLASS_NODE: {
503 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->constant_path);
504 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->superclass);
505 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->body);
508#line 177 "prism/templates/ext/prism/api_node.c.erb"
509 case PM_CLASS_VARIABLE_AND_WRITE_NODE: {
511 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
514#line 177 "prism/templates/ext/prism/api_node.c.erb"
515 case PM_CLASS_VARIABLE_OPERATOR_WRITE_NODE: {
517 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
520#line 177 "prism/templates/ext/prism/api_node.c.erb"
521 case PM_CLASS_VARIABLE_OR_WRITE_NODE: {
523 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
526#line 177 "prism/templates/ext/prism/api_node.c.erb"
527 case PM_CLASS_VARIABLE_WRITE_NODE: {
529 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
532#line 177 "prism/templates/ext/prism/api_node.c.erb"
533 case PM_CONSTANT_AND_WRITE_NODE: {
535 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
538#line 177 "prism/templates/ext/prism/api_node.c.erb"
539 case PM_CONSTANT_OPERATOR_WRITE_NODE: {
541 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
544#line 177 "prism/templates/ext/prism/api_node.c.erb"
545 case PM_CONSTANT_OR_WRITE_NODE: {
547 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
550#line 177 "prism/templates/ext/prism/api_node.c.erb"
551 case PM_CONSTANT_PATH_AND_WRITE_NODE: {
553 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->target);
554 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
557#line 177 "prism/templates/ext/prism/api_node.c.erb"
558 case PM_CONSTANT_PATH_NODE: {
560 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->parent);
563#line 177 "prism/templates/ext/prism/api_node.c.erb"
564 case PM_CONSTANT_PATH_OPERATOR_WRITE_NODE: {
566 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->target);
567 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
570#line 177 "prism/templates/ext/prism/api_node.c.erb"
571 case PM_CONSTANT_PATH_OR_WRITE_NODE: {
573 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->target);
574 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
577#line 177 "prism/templates/ext/prism/api_node.c.erb"
578 case PM_CONSTANT_PATH_TARGET_NODE: {
580 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->parent);
583#line 177 "prism/templates/ext/prism/api_node.c.erb"
584 case PM_CONSTANT_PATH_WRITE_NODE: {
586 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->target);
587 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
590#line 177 "prism/templates/ext/prism/api_node.c.erb"
591 case PM_CONSTANT_WRITE_NODE: {
593 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
596#line 177 "prism/templates/ext/prism/api_node.c.erb"
599 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->receiver);
600 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->parameters);
601 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->body);
604#line 177 "prism/templates/ext/prism/api_node.c.erb"
605 case PM_DEFINED_NODE: {
607 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
610#line 177 "prism/templates/ext/prism/api_node.c.erb"
613 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->statements);
616#line 177 "prism/templates/ext/prism/api_node.c.erb"
617 case PM_EMBEDDED_STATEMENTS_NODE: {
619 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->statements);
622#line 177 "prism/templates/ext/prism/api_node.c.erb"
623 case PM_EMBEDDED_VARIABLE_NODE: {
625 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->variable);
628#line 177 "prism/templates/ext/prism/api_node.c.erb"
629 case PM_ENSURE_NODE: {
631 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->statements);
634#line 177 "prism/templates/ext/prism/api_node.c.erb"
635 case PM_ERROR_RECOVERY_NODE: {
637 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->unexpected);
640#line 177 "prism/templates/ext/prism/api_node.c.erb"
641 case PM_FIND_PATTERN_NODE: {
643 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->constant);
644 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->left);
645 for (
size_t index = 0; index <
cast->requireds.size; index++) {
646 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->requireds.nodes[index]);
648 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->right);
651#line 177 "prism/templates/ext/prism/api_node.c.erb"
652 case PM_FLIP_FLOP_NODE: {
654 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->left);
655 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->right);
658#line 177 "prism/templates/ext/prism/api_node.c.erb"
661 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->index);
662 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->collection);
663 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->statements);
666#line 177 "prism/templates/ext/prism/api_node.c.erb"
667 case PM_FORWARDING_SUPER_NODE: {
669 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->block);
672#line 177 "prism/templates/ext/prism/api_node.c.erb"
673 case PM_GLOBAL_VARIABLE_AND_WRITE_NODE: {
675 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
678#line 177 "prism/templates/ext/prism/api_node.c.erb"
679 case PM_GLOBAL_VARIABLE_OPERATOR_WRITE_NODE: {
681 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
684#line 177 "prism/templates/ext/prism/api_node.c.erb"
685 case PM_GLOBAL_VARIABLE_OR_WRITE_NODE: {
687 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
690#line 177 "prism/templates/ext/prism/api_node.c.erb"
691 case PM_GLOBAL_VARIABLE_WRITE_NODE: {
693 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
696#line 177 "prism/templates/ext/prism/api_node.c.erb"
699 for (
size_t index = 0; index <
cast->elements.size; index++) {
700 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->elements.nodes[index]);
704#line 177 "prism/templates/ext/prism/api_node.c.erb"
705 case PM_HASH_PATTERN_NODE: {
707 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->constant);
708 for (
size_t index = 0; index <
cast->elements.size; index++) {
709 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->elements.nodes[index]);
711 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->rest);
714#line 177 "prism/templates/ext/prism/api_node.c.erb"
717 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->predicate);
718 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->statements);
719 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->subsequent);
722#line 177 "prism/templates/ext/prism/api_node.c.erb"
723 case PM_IMAGINARY_NODE: {
725 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->numeric);
728#line 177 "prism/templates/ext/prism/api_node.c.erb"
729 case PM_IMPLICIT_NODE: {
731 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
734#line 177 "prism/templates/ext/prism/api_node.c.erb"
737 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->pattern);
738 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->statements);
741#line 177 "prism/templates/ext/prism/api_node.c.erb"
742 case PM_INDEX_AND_WRITE_NODE: {
744 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->receiver);
745 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->arguments);
746 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->block);
747 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
750#line 177 "prism/templates/ext/prism/api_node.c.erb"
751 case PM_INDEX_OPERATOR_WRITE_NODE: {
753 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->receiver);
754 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->arguments);
755 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->block);
756 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
759#line 177 "prism/templates/ext/prism/api_node.c.erb"
760 case PM_INDEX_OR_WRITE_NODE: {
762 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->receiver);
763 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->arguments);
764 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->block);
765 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
768#line 177 "prism/templates/ext/prism/api_node.c.erb"
769 case PM_INDEX_TARGET_NODE: {
771 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->receiver);
772 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->arguments);
773 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->block);
776#line 177 "prism/templates/ext/prism/api_node.c.erb"
777 case PM_INSTANCE_VARIABLE_AND_WRITE_NODE: {
779 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
782#line 177 "prism/templates/ext/prism/api_node.c.erb"
783 case PM_INSTANCE_VARIABLE_OPERATOR_WRITE_NODE: {
785 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
788#line 177 "prism/templates/ext/prism/api_node.c.erb"
789 case PM_INSTANCE_VARIABLE_OR_WRITE_NODE: {
791 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
794#line 177 "prism/templates/ext/prism/api_node.c.erb"
795 case PM_INSTANCE_VARIABLE_WRITE_NODE: {
797 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
800#line 177 "prism/templates/ext/prism/api_node.c.erb"
801 case PM_INTERPOLATED_MATCH_LAST_LINE_NODE: {
803 for (
size_t index = 0; index <
cast->parts.size; index++) {
804 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->parts.nodes[index]);
808#line 177 "prism/templates/ext/prism/api_node.c.erb"
809 case PM_INTERPOLATED_REGULAR_EXPRESSION_NODE: {
811 for (
size_t index = 0; index <
cast->parts.size; index++) {
812 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->parts.nodes[index]);
816#line 177 "prism/templates/ext/prism/api_node.c.erb"
817 case PM_INTERPOLATED_STRING_NODE: {
819 for (
size_t index = 0; index <
cast->parts.size; index++) {
820 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->parts.nodes[index]);
824#line 177 "prism/templates/ext/prism/api_node.c.erb"
825 case PM_INTERPOLATED_SYMBOL_NODE: {
827 for (
size_t index = 0; index <
cast->parts.size; index++) {
828 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->parts.nodes[index]);
832#line 177 "prism/templates/ext/prism/api_node.c.erb"
833 case PM_INTERPOLATED_X_STRING_NODE: {
835 for (
size_t index = 0; index <
cast->parts.size; index++) {
836 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->parts.nodes[index]);
840#line 177 "prism/templates/ext/prism/api_node.c.erb"
841 case PM_KEYWORD_HASH_NODE: {
843 for (
size_t index = 0; index <
cast->elements.size; index++) {
844 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->elements.nodes[index]);
848#line 177 "prism/templates/ext/prism/api_node.c.erb"
849 case PM_LAMBDA_NODE: {
851 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->parameters);
852 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->body);
855#line 177 "prism/templates/ext/prism/api_node.c.erb"
856 case PM_LOCAL_VARIABLE_AND_WRITE_NODE: {
858 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
861#line 177 "prism/templates/ext/prism/api_node.c.erb"
862 case PM_LOCAL_VARIABLE_OPERATOR_WRITE_NODE: {
864 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
867#line 177 "prism/templates/ext/prism/api_node.c.erb"
868 case PM_LOCAL_VARIABLE_OR_WRITE_NODE: {
870 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
873#line 177 "prism/templates/ext/prism/api_node.c.erb"
874 case PM_LOCAL_VARIABLE_WRITE_NODE: {
876 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
879#line 177 "prism/templates/ext/prism/api_node.c.erb"
880 case PM_MATCH_PREDICATE_NODE: {
882 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
883 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->pattern);
886#line 177 "prism/templates/ext/prism/api_node.c.erb"
887 case PM_MATCH_REQUIRED_NODE: {
889 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
890 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->pattern);
893#line 177 "prism/templates/ext/prism/api_node.c.erb"
894 case PM_MATCH_WRITE_NODE: {
896 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->call);
897 for (
size_t index = 0; index <
cast->targets.size; index++) {
898 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->targets.nodes[index]);
902#line 177 "prism/templates/ext/prism/api_node.c.erb"
903 case PM_MODULE_NODE: {
905 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->constant_path);
906 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->body);
909#line 177 "prism/templates/ext/prism/api_node.c.erb"
910 case PM_MULTI_TARGET_NODE: {
912 for (
size_t index = 0; index <
cast->lefts.size; index++) {
913 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->lefts.nodes[index]);
915 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->rest);
916 for (
size_t index = 0; index <
cast->rights.size; index++) {
917 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->rights.nodes[index]);
921#line 177 "prism/templates/ext/prism/api_node.c.erb"
922 case PM_MULTI_WRITE_NODE: {
924 for (
size_t index = 0; index <
cast->lefts.size; index++) {
925 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->lefts.nodes[index]);
927 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->rest);
928 for (
size_t index = 0; index <
cast->rights.size; index++) {
929 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->rights.nodes[index]);
931 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
934#line 177 "prism/templates/ext/prism/api_node.c.erb"
937 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->arguments);
940#line 177 "prism/templates/ext/prism/api_node.c.erb"
941 case PM_OPTIONAL_KEYWORD_PARAMETER_NODE: {
943 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
946#line 177 "prism/templates/ext/prism/api_node.c.erb"
947 case PM_OPTIONAL_PARAMETER_NODE: {
949 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
952#line 177 "prism/templates/ext/prism/api_node.c.erb"
955 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->left);
956 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->right);
959#line 177 "prism/templates/ext/prism/api_node.c.erb"
960 case PM_PARAMETERS_NODE: {
962 for (
size_t index = 0; index <
cast->requireds.size; index++) {
963 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->requireds.nodes[index]);
965 for (
size_t index = 0; index <
cast->optionals.size; index++) {
966 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->optionals.nodes[index]);
968 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->rest);
969 for (
size_t index = 0; index <
cast->posts.size; index++) {
970 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->posts.nodes[index]);
972 for (
size_t index = 0; index <
cast->keywords.size; index++) {
973 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->keywords.nodes[index]);
975 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->keyword_rest);
976 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->block);
979#line 177 "prism/templates/ext/prism/api_node.c.erb"
980 case PM_PARENTHESES_NODE: {
982 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->body);
985#line 177 "prism/templates/ext/prism/api_node.c.erb"
986 case PM_PINNED_EXPRESSION_NODE: {
988 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->expression);
991#line 177 "prism/templates/ext/prism/api_node.c.erb"
992 case PM_PINNED_VARIABLE_NODE: {
994 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->variable);
997#line 177 "prism/templates/ext/prism/api_node.c.erb"
998 case PM_POST_EXECUTION_NODE: {
1000 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->statements);
1003#line 177 "prism/templates/ext/prism/api_node.c.erb"
1004 case PM_PRE_EXECUTION_NODE: {
1006 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->statements);
1009#line 177 "prism/templates/ext/prism/api_node.c.erb"
1010 case PM_PROGRAM_NODE: {
1012 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->statements);
1015#line 177 "prism/templates/ext/prism/api_node.c.erb"
1016 case PM_RANGE_NODE: {
1018 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->left);
1019 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->right);
1022#line 177 "prism/templates/ext/prism/api_node.c.erb"
1023 case PM_RESCUE_MODIFIER_NODE: {
1025 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->expression);
1026 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->rescue_expression);
1029#line 177 "prism/templates/ext/prism/api_node.c.erb"
1030 case PM_RESCUE_NODE: {
1032 for (
size_t index = 0; index <
cast->exceptions.size; index++) {
1033 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->exceptions.nodes[index]);
1035 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->reference);
1036 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->statements);
1037 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->subsequent);
1040#line 177 "prism/templates/ext/prism/api_node.c.erb"
1041 case PM_RETURN_NODE: {
1043 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->arguments);
1046#line 177 "prism/templates/ext/prism/api_node.c.erb"
1047 case PM_SHAREABLE_CONSTANT_NODE: {
1049 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->write);
1052#line 177 "prism/templates/ext/prism/api_node.c.erb"
1053 case PM_SINGLETON_CLASS_NODE: {
1055 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->expression);
1056 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->body);
1059#line 177 "prism/templates/ext/prism/api_node.c.erb"
1060 case PM_SPLAT_NODE: {
1062 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->expression);
1065#line 177 "prism/templates/ext/prism/api_node.c.erb"
1066 case PM_STATEMENTS_NODE: {
1068 for (
size_t index = 0; index <
cast->body.size; index++) {
1069 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->body.nodes[index]);
1073#line 177 "prism/templates/ext/prism/api_node.c.erb"
1074 case PM_SUPER_NODE: {
1076 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->arguments);
1077 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->block);
1080#line 177 "prism/templates/ext/prism/api_node.c.erb"
1081 case PM_UNDEF_NODE: {
1083 for (
size_t index = 0; index <
cast->names.size; index++) {
1084 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->names.nodes[index]);
1088#line 177 "prism/templates/ext/prism/api_node.c.erb"
1089 case PM_UNLESS_NODE: {
1091 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->predicate);
1092 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->statements);
1093 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->else_clause);
1096#line 177 "prism/templates/ext/prism/api_node.c.erb"
1097 case PM_UNTIL_NODE: {
1099 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->predicate);
1100 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->statements);
1103#line 177 "prism/templates/ext/prism/api_node.c.erb"
1104 case PM_WHEN_NODE: {
1106 for (
size_t index = 0; index <
cast->conditions.size; index++) {
1107 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->conditions.nodes[index]);
1109 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->statements);
1112#line 177 "prism/templates/ext/prism/api_node.c.erb"
1113 case PM_WHILE_NODE: {
1115 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->predicate);
1116 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->statements);
1119#line 177 "prism/templates/ext/prism/api_node.c.erb"
1120 case PM_YIELD_NODE: {
1122 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->arguments);
1128#line 197 "prism/templates/ext/prism/api_node.c.erb"
1130 const pm_node_t *node = pm_node_stack_pop(&node_stack);
1132 switch (PM_NODE_TYPE(node)) {
1133#line 203 "prism/templates/ext/prism/api_node.c.erb"
1134 case PM_ALIAS_GLOBAL_VARIABLE_NODE: {
1151#line 226 "prism/templates/ext/prism/api_node.c.erb"
1155#line 226 "prism/templates/ext/prism/api_node.c.erb"
1159#line 253 "prism/templates/ext/prism/api_node.c.erb"
1160 argv[6] = pm_location_new(
cast->keyword_loc.start,
cast->keyword_loc.length, source, freeze);
1168#line 203 "prism/templates/ext/prism/api_node.c.erb"
1169 case PM_ALIAS_METHOD_NODE: {
1186#line 226 "prism/templates/ext/prism/api_node.c.erb"
1190#line 226 "prism/templates/ext/prism/api_node.c.erb"
1194#line 253 "prism/templates/ext/prism/api_node.c.erb"
1195 argv[6] = pm_location_new(
cast->keyword_loc.start,
cast->keyword_loc.length, source, freeze);
1203#line 203 "prism/templates/ext/prism/api_node.c.erb"
1204 case PM_ALTERNATION_PATTERN_NODE: {
1221#line 226 "prism/templates/ext/prism/api_node.c.erb"
1225#line 226 "prism/templates/ext/prism/api_node.c.erb"
1229#line 253 "prism/templates/ext/prism/api_node.c.erb"
1230 argv[6] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
1238#line 203 "prism/templates/ext/prism/api_node.c.erb"
1256#line 226 "prism/templates/ext/prism/api_node.c.erb"
1260#line 226 "prism/templates/ext/prism/api_node.c.erb"
1264#line 253 "prism/templates/ext/prism/api_node.c.erb"
1265 argv[6] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
1273#line 203 "prism/templates/ext/prism/api_node.c.erb"
1274 case PM_ARGUMENTS_NODE: {
1291#line 229 "prism/templates/ext/prism/api_node.c.erb"
1293 for (
size_t index = 0; index <
cast->arguments.size; index++) {
1304#line 203 "prism/templates/ext/prism/api_node.c.erb"
1305 case PM_ARRAY_NODE: {
1322#line 229 "prism/templates/ext/prism/api_node.c.erb"
1324 for (
size_t index = 0; index <
cast->elements.size; index++) {
1330#line 256 "prism/templates/ext/prism/api_node.c.erb"
1331 argv[5] =
cast->opening_loc.length == 0 ?
Qnil : pm_location_new(
cast->opening_loc.start,
cast->opening_loc.length, source, freeze);
1334#line 256 "prism/templates/ext/prism/api_node.c.erb"
1335 argv[6] =
cast->closing_loc.length == 0 ?
Qnil : pm_location_new(
cast->closing_loc.start,
cast->closing_loc.length, source, freeze);
1343#line 203 "prism/templates/ext/prism/api_node.c.erb"
1344 case PM_ARRAY_PATTERN_NODE: {
1361#line 226 "prism/templates/ext/prism/api_node.c.erb"
1365#line 229 "prism/templates/ext/prism/api_node.c.erb"
1367 for (
size_t index = 0; index <
cast->requireds.size; index++) {
1373#line 226 "prism/templates/ext/prism/api_node.c.erb"
1377#line 229 "prism/templates/ext/prism/api_node.c.erb"
1379 for (
size_t index = 0; index <
cast->posts.size; index++) {
1385#line 256 "prism/templates/ext/prism/api_node.c.erb"
1386 argv[8] =
cast->opening_loc.length == 0 ?
Qnil : pm_location_new(
cast->opening_loc.start,
cast->opening_loc.length, source, freeze);
1389#line 256 "prism/templates/ext/prism/api_node.c.erb"
1390 argv[9] =
cast->closing_loc.length == 0 ?
Qnil : pm_location_new(
cast->closing_loc.start,
cast->closing_loc.length, source, freeze);
1398#line 203 "prism/templates/ext/prism/api_node.c.erb"
1399 case PM_ASSOC_NODE: {
1416#line 226 "prism/templates/ext/prism/api_node.c.erb"
1420#line 226 "prism/templates/ext/prism/api_node.c.erb"
1424#line 256 "prism/templates/ext/prism/api_node.c.erb"
1425 argv[6] =
cast->operator_loc.length == 0 ?
Qnil : pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
1433#line 203 "prism/templates/ext/prism/api_node.c.erb"
1434 case PM_ASSOC_SPLAT_NODE: {
1451#line 226 "prism/templates/ext/prism/api_node.c.erb"
1455#line 253 "prism/templates/ext/prism/api_node.c.erb"
1456 argv[5] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
1464#line 203 "prism/templates/ext/prism/api_node.c.erb"
1465 case PM_BACK_REFERENCE_READ_NODE: {
1482#line 239 "prism/templates/ext/prism/api_node.c.erb"
1483 assert(
cast->name != 0);
1492#line 203 "prism/templates/ext/prism/api_node.c.erb"
1493 case PM_BEGIN_NODE: {
1510#line 256 "prism/templates/ext/prism/api_node.c.erb"
1511 argv[4] =
cast->begin_keyword_loc.length == 0 ?
Qnil : pm_location_new(
cast->begin_keyword_loc.start,
cast->begin_keyword_loc.length, source, freeze);
1514#line 226 "prism/templates/ext/prism/api_node.c.erb"
1518#line 226 "prism/templates/ext/prism/api_node.c.erb"
1522#line 226 "prism/templates/ext/prism/api_node.c.erb"
1526#line 226 "prism/templates/ext/prism/api_node.c.erb"
1530#line 256 "prism/templates/ext/prism/api_node.c.erb"
1531 argv[9] =
cast->end_keyword_loc.length == 0 ?
Qnil : pm_location_new(
cast->end_keyword_loc.start,
cast->end_keyword_loc.length, source, freeze);
1539#line 203 "prism/templates/ext/prism/api_node.c.erb"
1540 case PM_BLOCK_ARGUMENT_NODE: {
1557#line 226 "prism/templates/ext/prism/api_node.c.erb"
1561#line 253 "prism/templates/ext/prism/api_node.c.erb"
1562 argv[5] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
1570#line 203 "prism/templates/ext/prism/api_node.c.erb"
1571 case PM_BLOCK_LOCAL_VARIABLE_NODE: {
1588#line 239 "prism/templates/ext/prism/api_node.c.erb"
1589 assert(
cast->name != 0);
1598#line 203 "prism/templates/ext/prism/api_node.c.erb"
1599 case PM_BLOCK_NODE: {
1616#line 245 "prism/templates/ext/prism/api_node.c.erb"
1618 for (
size_t index = 0; index <
cast->locals.size; index++) {
1619 assert(
cast->locals.ids[index] != 0);
1625#line 226 "prism/templates/ext/prism/api_node.c.erb"
1629#line 226 "prism/templates/ext/prism/api_node.c.erb"
1633#line 253 "prism/templates/ext/prism/api_node.c.erb"
1634 argv[7] = pm_location_new(
cast->opening_loc.start,
cast->opening_loc.length, source, freeze);
1637#line 253 "prism/templates/ext/prism/api_node.c.erb"
1638 argv[8] = pm_location_new(
cast->closing_loc.start,
cast->closing_loc.length, source, freeze);
1646#line 203 "prism/templates/ext/prism/api_node.c.erb"
1647 case PM_BLOCK_PARAMETER_NODE: {
1667#line 256 "prism/templates/ext/prism/api_node.c.erb"
1668 argv[5] =
cast->name_loc.length == 0 ?
Qnil : pm_location_new(
cast->name_loc.start,
cast->name_loc.length, source, freeze);
1671#line 253 "prism/templates/ext/prism/api_node.c.erb"
1672 argv[6] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
1680#line 203 "prism/templates/ext/prism/api_node.c.erb"
1681 case PM_BLOCK_PARAMETERS_NODE: {
1698#line 226 "prism/templates/ext/prism/api_node.c.erb"
1702#line 229 "prism/templates/ext/prism/api_node.c.erb"
1704 for (
size_t index = 0; index <
cast->locals.size; index++) {
1710#line 256 "prism/templates/ext/prism/api_node.c.erb"
1711 argv[6] =
cast->opening_loc.length == 0 ?
Qnil : pm_location_new(
cast->opening_loc.start,
cast->opening_loc.length, source, freeze);
1714#line 256 "prism/templates/ext/prism/api_node.c.erb"
1715 argv[7] =
cast->closing_loc.length == 0 ?
Qnil : pm_location_new(
cast->closing_loc.start,
cast->closing_loc.length, source, freeze);
1723#line 203 "prism/templates/ext/prism/api_node.c.erb"
1724 case PM_BREAK_NODE: {
1741#line 226 "prism/templates/ext/prism/api_node.c.erb"
1745#line 253 "prism/templates/ext/prism/api_node.c.erb"
1746 argv[5] = pm_location_new(
cast->keyword_loc.start,
cast->keyword_loc.length, source, freeze);
1754#line 203 "prism/templates/ext/prism/api_node.c.erb"
1755 case PM_CALL_AND_WRITE_NODE: {
1772#line 226 "prism/templates/ext/prism/api_node.c.erb"
1776#line 256 "prism/templates/ext/prism/api_node.c.erb"
1777 argv[5] =
cast->call_operator_loc.length == 0 ?
Qnil : pm_location_new(
cast->call_operator_loc.start,
cast->call_operator_loc.length, source, freeze);
1780#line 256 "prism/templates/ext/prism/api_node.c.erb"
1781 argv[6] =
cast->message_loc.length == 0 ?
Qnil : pm_location_new(
cast->message_loc.start,
cast->message_loc.length, source, freeze);
1784#line 239 "prism/templates/ext/prism/api_node.c.erb"
1785 assert(
cast->read_name != 0);
1789#line 239 "prism/templates/ext/prism/api_node.c.erb"
1790 assert(
cast->write_name != 0);
1794#line 253 "prism/templates/ext/prism/api_node.c.erb"
1795 argv[9] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
1798#line 226 "prism/templates/ext/prism/api_node.c.erb"
1807#line 203 "prism/templates/ext/prism/api_node.c.erb"
1808 case PM_CALL_NODE: {
1825#line 226 "prism/templates/ext/prism/api_node.c.erb"
1829#line 256 "prism/templates/ext/prism/api_node.c.erb"
1830 argv[5] =
cast->call_operator_loc.length == 0 ?
Qnil : pm_location_new(
cast->call_operator_loc.start,
cast->call_operator_loc.length, source, freeze);
1833#line 239 "prism/templates/ext/prism/api_node.c.erb"
1834 assert(
cast->name != 0);
1838#line 256 "prism/templates/ext/prism/api_node.c.erb"
1839 argv[7] =
cast->message_loc.length == 0 ?
Qnil : pm_location_new(
cast->message_loc.start,
cast->message_loc.length, source, freeze);
1842#line 256 "prism/templates/ext/prism/api_node.c.erb"
1843 argv[8] =
cast->opening_loc.length == 0 ?
Qnil : pm_location_new(
cast->opening_loc.start,
cast->opening_loc.length, source, freeze);
1846#line 226 "prism/templates/ext/prism/api_node.c.erb"
1850#line 256 "prism/templates/ext/prism/api_node.c.erb"
1851 argv[10] =
cast->closing_loc.length == 0 ?
Qnil : pm_location_new(
cast->closing_loc.start,
cast->closing_loc.length, source, freeze);
1854#line 256 "prism/templates/ext/prism/api_node.c.erb"
1855 argv[11] =
cast->equal_loc.length == 0 ?
Qnil : pm_location_new(
cast->equal_loc.start,
cast->equal_loc.length, source, freeze);
1858#line 226 "prism/templates/ext/prism/api_node.c.erb"
1867#line 203 "prism/templates/ext/prism/api_node.c.erb"
1868 case PM_CALL_OPERATOR_WRITE_NODE: {
1885#line 226 "prism/templates/ext/prism/api_node.c.erb"
1889#line 256 "prism/templates/ext/prism/api_node.c.erb"
1890 argv[5] =
cast->call_operator_loc.length == 0 ?
Qnil : pm_location_new(
cast->call_operator_loc.start,
cast->call_operator_loc.length, source, freeze);
1893#line 256 "prism/templates/ext/prism/api_node.c.erb"
1894 argv[6] =
cast->message_loc.length == 0 ?
Qnil : pm_location_new(
cast->message_loc.start,
cast->message_loc.length, source, freeze);
1897#line 239 "prism/templates/ext/prism/api_node.c.erb"
1898 assert(
cast->read_name != 0);
1902#line 239 "prism/templates/ext/prism/api_node.c.erb"
1903 assert(
cast->write_name != 0);
1907#line 239 "prism/templates/ext/prism/api_node.c.erb"
1908 assert(
cast->binary_operator != 0);
1912#line 253 "prism/templates/ext/prism/api_node.c.erb"
1913 argv[10] = pm_location_new(
cast->binary_operator_loc.start,
cast->binary_operator_loc.length, source, freeze);
1916#line 226 "prism/templates/ext/prism/api_node.c.erb"
1925#line 203 "prism/templates/ext/prism/api_node.c.erb"
1926 case PM_CALL_OR_WRITE_NODE: {
1943#line 226 "prism/templates/ext/prism/api_node.c.erb"
1947#line 256 "prism/templates/ext/prism/api_node.c.erb"
1948 argv[5] =
cast->call_operator_loc.length == 0 ?
Qnil : pm_location_new(
cast->call_operator_loc.start,
cast->call_operator_loc.length, source, freeze);
1951#line 256 "prism/templates/ext/prism/api_node.c.erb"
1952 argv[6] =
cast->message_loc.length == 0 ?
Qnil : pm_location_new(
cast->message_loc.start,
cast->message_loc.length, source, freeze);
1955#line 239 "prism/templates/ext/prism/api_node.c.erb"
1956 assert(
cast->read_name != 0);
1960#line 239 "prism/templates/ext/prism/api_node.c.erb"
1961 assert(
cast->write_name != 0);
1965#line 253 "prism/templates/ext/prism/api_node.c.erb"
1966 argv[9] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
1969#line 226 "prism/templates/ext/prism/api_node.c.erb"
1978#line 203 "prism/templates/ext/prism/api_node.c.erb"
1979 case PM_CALL_TARGET_NODE: {
1996#line 226 "prism/templates/ext/prism/api_node.c.erb"
2000#line 253 "prism/templates/ext/prism/api_node.c.erb"
2001 argv[5] = pm_location_new(
cast->call_operator_loc.start,
cast->call_operator_loc.length, source, freeze);
2004#line 239 "prism/templates/ext/prism/api_node.c.erb"
2005 assert(
cast->name != 0);
2009#line 253 "prism/templates/ext/prism/api_node.c.erb"
2010 argv[7] = pm_location_new(
cast->message_loc.start,
cast->message_loc.length, source, freeze);
2018#line 203 "prism/templates/ext/prism/api_node.c.erb"
2019 case PM_CAPTURE_PATTERN_NODE: {
2036#line 226 "prism/templates/ext/prism/api_node.c.erb"
2040#line 226 "prism/templates/ext/prism/api_node.c.erb"
2044#line 253 "prism/templates/ext/prism/api_node.c.erb"
2045 argv[6] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
2053#line 203 "prism/templates/ext/prism/api_node.c.erb"
2054 case PM_CASE_MATCH_NODE: {
2071#line 226 "prism/templates/ext/prism/api_node.c.erb"
2075#line 229 "prism/templates/ext/prism/api_node.c.erb"
2077 for (
size_t index = 0; index <
cast->conditions.size; index++) {
2083#line 226 "prism/templates/ext/prism/api_node.c.erb"
2087#line 253 "prism/templates/ext/prism/api_node.c.erb"
2088 argv[7] = pm_location_new(
cast->case_keyword_loc.start,
cast->case_keyword_loc.length, source, freeze);
2091#line 253 "prism/templates/ext/prism/api_node.c.erb"
2092 argv[8] = pm_location_new(
cast->end_keyword_loc.start,
cast->end_keyword_loc.length, source, freeze);
2100#line 203 "prism/templates/ext/prism/api_node.c.erb"
2101 case PM_CASE_NODE: {
2118#line 226 "prism/templates/ext/prism/api_node.c.erb"
2122#line 229 "prism/templates/ext/prism/api_node.c.erb"
2124 for (
size_t index = 0; index <
cast->conditions.size; index++) {
2130#line 226 "prism/templates/ext/prism/api_node.c.erb"
2134#line 253 "prism/templates/ext/prism/api_node.c.erb"
2135 argv[7] = pm_location_new(
cast->case_keyword_loc.start,
cast->case_keyword_loc.length, source, freeze);
2138#line 253 "prism/templates/ext/prism/api_node.c.erb"
2139 argv[8] = pm_location_new(
cast->end_keyword_loc.start,
cast->end_keyword_loc.length, source, freeze);
2147#line 203 "prism/templates/ext/prism/api_node.c.erb"
2148 case PM_CLASS_NODE: {
2165#line 245 "prism/templates/ext/prism/api_node.c.erb"
2167 for (
size_t index = 0; index <
cast->locals.size; index++) {
2168 assert(
cast->locals.ids[index] != 0);
2174#line 253 "prism/templates/ext/prism/api_node.c.erb"
2175 argv[5] = pm_location_new(
cast->class_keyword_loc.start,
cast->class_keyword_loc.length, source, freeze);
2178#line 226 "prism/templates/ext/prism/api_node.c.erb"
2182#line 256 "prism/templates/ext/prism/api_node.c.erb"
2183 argv[7] =
cast->inheritance_operator_loc.length == 0 ?
Qnil : pm_location_new(
cast->inheritance_operator_loc.start,
cast->inheritance_operator_loc.length, source, freeze);
2186#line 226 "prism/templates/ext/prism/api_node.c.erb"
2190#line 226 "prism/templates/ext/prism/api_node.c.erb"
2194#line 253 "prism/templates/ext/prism/api_node.c.erb"
2195 argv[10] = pm_location_new(
cast->end_keyword_loc.start,
cast->end_keyword_loc.length, source, freeze);
2198#line 239 "prism/templates/ext/prism/api_node.c.erb"
2199 assert(
cast->name != 0);
2208#line 203 "prism/templates/ext/prism/api_node.c.erb"
2209 case PM_CLASS_VARIABLE_AND_WRITE_NODE: {
2226#line 239 "prism/templates/ext/prism/api_node.c.erb"
2227 assert(
cast->name != 0);
2231#line 253 "prism/templates/ext/prism/api_node.c.erb"
2232 argv[5] = pm_location_new(
cast->name_loc.start,
cast->name_loc.length, source, freeze);
2235#line 253 "prism/templates/ext/prism/api_node.c.erb"
2236 argv[6] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
2239#line 226 "prism/templates/ext/prism/api_node.c.erb"
2248#line 203 "prism/templates/ext/prism/api_node.c.erb"
2249 case PM_CLASS_VARIABLE_OPERATOR_WRITE_NODE: {
2266#line 239 "prism/templates/ext/prism/api_node.c.erb"
2267 assert(
cast->name != 0);
2271#line 253 "prism/templates/ext/prism/api_node.c.erb"
2272 argv[5] = pm_location_new(
cast->name_loc.start,
cast->name_loc.length, source, freeze);
2275#line 253 "prism/templates/ext/prism/api_node.c.erb"
2276 argv[6] = pm_location_new(
cast->binary_operator_loc.start,
cast->binary_operator_loc.length, source, freeze);
2279#line 226 "prism/templates/ext/prism/api_node.c.erb"
2283#line 239 "prism/templates/ext/prism/api_node.c.erb"
2284 assert(
cast->binary_operator != 0);
2293#line 203 "prism/templates/ext/prism/api_node.c.erb"
2294 case PM_CLASS_VARIABLE_OR_WRITE_NODE: {
2311#line 239 "prism/templates/ext/prism/api_node.c.erb"
2312 assert(
cast->name != 0);
2316#line 253 "prism/templates/ext/prism/api_node.c.erb"
2317 argv[5] = pm_location_new(
cast->name_loc.start,
cast->name_loc.length, source, freeze);
2320#line 253 "prism/templates/ext/prism/api_node.c.erb"
2321 argv[6] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
2324#line 226 "prism/templates/ext/prism/api_node.c.erb"
2333#line 203 "prism/templates/ext/prism/api_node.c.erb"
2334 case PM_CLASS_VARIABLE_READ_NODE: {
2351#line 239 "prism/templates/ext/prism/api_node.c.erb"
2352 assert(
cast->name != 0);
2361#line 203 "prism/templates/ext/prism/api_node.c.erb"
2362 case PM_CLASS_VARIABLE_TARGET_NODE: {
2379#line 239 "prism/templates/ext/prism/api_node.c.erb"
2380 assert(
cast->name != 0);
2389#line 203 "prism/templates/ext/prism/api_node.c.erb"
2390 case PM_CLASS_VARIABLE_WRITE_NODE: {
2407#line 239 "prism/templates/ext/prism/api_node.c.erb"
2408 assert(
cast->name != 0);
2412#line 253 "prism/templates/ext/prism/api_node.c.erb"
2413 argv[5] = pm_location_new(
cast->name_loc.start,
cast->name_loc.length, source, freeze);
2416#line 226 "prism/templates/ext/prism/api_node.c.erb"
2420#line 253 "prism/templates/ext/prism/api_node.c.erb"
2421 argv[7] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
2429#line 203 "prism/templates/ext/prism/api_node.c.erb"
2430 case PM_CONSTANT_AND_WRITE_NODE: {
2447#line 239 "prism/templates/ext/prism/api_node.c.erb"
2448 assert(
cast->name != 0);
2452#line 253 "prism/templates/ext/prism/api_node.c.erb"
2453 argv[5] = pm_location_new(
cast->name_loc.start,
cast->name_loc.length, source, freeze);
2456#line 253 "prism/templates/ext/prism/api_node.c.erb"
2457 argv[6] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
2460#line 226 "prism/templates/ext/prism/api_node.c.erb"
2469#line 203 "prism/templates/ext/prism/api_node.c.erb"
2470 case PM_CONSTANT_OPERATOR_WRITE_NODE: {
2487#line 239 "prism/templates/ext/prism/api_node.c.erb"
2488 assert(
cast->name != 0);
2492#line 253 "prism/templates/ext/prism/api_node.c.erb"
2493 argv[5] = pm_location_new(
cast->name_loc.start,
cast->name_loc.length, source, freeze);
2496#line 253 "prism/templates/ext/prism/api_node.c.erb"
2497 argv[6] = pm_location_new(
cast->binary_operator_loc.start,
cast->binary_operator_loc.length, source, freeze);
2500#line 226 "prism/templates/ext/prism/api_node.c.erb"
2504#line 239 "prism/templates/ext/prism/api_node.c.erb"
2505 assert(
cast->binary_operator != 0);
2514#line 203 "prism/templates/ext/prism/api_node.c.erb"
2515 case PM_CONSTANT_OR_WRITE_NODE: {
2532#line 239 "prism/templates/ext/prism/api_node.c.erb"
2533 assert(
cast->name != 0);
2537#line 253 "prism/templates/ext/prism/api_node.c.erb"
2538 argv[5] = pm_location_new(
cast->name_loc.start,
cast->name_loc.length, source, freeze);
2541#line 253 "prism/templates/ext/prism/api_node.c.erb"
2542 argv[6] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
2545#line 226 "prism/templates/ext/prism/api_node.c.erb"
2554#line 203 "prism/templates/ext/prism/api_node.c.erb"
2555 case PM_CONSTANT_PATH_AND_WRITE_NODE: {
2572#line 226 "prism/templates/ext/prism/api_node.c.erb"
2576#line 253 "prism/templates/ext/prism/api_node.c.erb"
2577 argv[5] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
2580#line 226 "prism/templates/ext/prism/api_node.c.erb"
2589#line 203 "prism/templates/ext/prism/api_node.c.erb"
2590 case PM_CONSTANT_PATH_NODE: {
2607#line 226 "prism/templates/ext/prism/api_node.c.erb"
2614#line 253 "prism/templates/ext/prism/api_node.c.erb"
2615 argv[6] = pm_location_new(
cast->delimiter_loc.start,
cast->delimiter_loc.length, source, freeze);
2618#line 253 "prism/templates/ext/prism/api_node.c.erb"
2619 argv[7] = pm_location_new(
cast->name_loc.start,
cast->name_loc.length, source, freeze);
2627#line 203 "prism/templates/ext/prism/api_node.c.erb"
2628 case PM_CONSTANT_PATH_OPERATOR_WRITE_NODE: {
2645#line 226 "prism/templates/ext/prism/api_node.c.erb"
2649#line 253 "prism/templates/ext/prism/api_node.c.erb"
2650 argv[5] = pm_location_new(
cast->binary_operator_loc.start,
cast->binary_operator_loc.length, source, freeze);
2653#line 226 "prism/templates/ext/prism/api_node.c.erb"
2657#line 239 "prism/templates/ext/prism/api_node.c.erb"
2658 assert(
cast->binary_operator != 0);
2667#line 203 "prism/templates/ext/prism/api_node.c.erb"
2668 case PM_CONSTANT_PATH_OR_WRITE_NODE: {
2685#line 226 "prism/templates/ext/prism/api_node.c.erb"
2689#line 253 "prism/templates/ext/prism/api_node.c.erb"
2690 argv[5] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
2693#line 226 "prism/templates/ext/prism/api_node.c.erb"
2702#line 203 "prism/templates/ext/prism/api_node.c.erb"
2703 case PM_CONSTANT_PATH_TARGET_NODE: {
2720#line 226 "prism/templates/ext/prism/api_node.c.erb"
2727#line 253 "prism/templates/ext/prism/api_node.c.erb"
2728 argv[6] = pm_location_new(
cast->delimiter_loc.start,
cast->delimiter_loc.length, source, freeze);
2731#line 253 "prism/templates/ext/prism/api_node.c.erb"
2732 argv[7] = pm_location_new(
cast->name_loc.start,
cast->name_loc.length, source, freeze);
2740#line 203 "prism/templates/ext/prism/api_node.c.erb"
2741 case PM_CONSTANT_PATH_WRITE_NODE: {
2758#line 226 "prism/templates/ext/prism/api_node.c.erb"
2762#line 253 "prism/templates/ext/prism/api_node.c.erb"
2763 argv[5] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
2766#line 226 "prism/templates/ext/prism/api_node.c.erb"
2775#line 203 "prism/templates/ext/prism/api_node.c.erb"
2776 case PM_CONSTANT_READ_NODE: {
2793#line 239 "prism/templates/ext/prism/api_node.c.erb"
2794 assert(
cast->name != 0);
2803#line 203 "prism/templates/ext/prism/api_node.c.erb"
2804 case PM_CONSTANT_TARGET_NODE: {
2821#line 239 "prism/templates/ext/prism/api_node.c.erb"
2822 assert(
cast->name != 0);
2831#line 203 "prism/templates/ext/prism/api_node.c.erb"
2832 case PM_CONSTANT_WRITE_NODE: {
2849#line 239 "prism/templates/ext/prism/api_node.c.erb"
2850 assert(
cast->name != 0);
2854#line 253 "prism/templates/ext/prism/api_node.c.erb"
2855 argv[5] = pm_location_new(
cast->name_loc.start,
cast->name_loc.length, source, freeze);
2858#line 226 "prism/templates/ext/prism/api_node.c.erb"
2862#line 253 "prism/templates/ext/prism/api_node.c.erb"
2863 argv[7] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
2871#line 203 "prism/templates/ext/prism/api_node.c.erb"
2889#line 239 "prism/templates/ext/prism/api_node.c.erb"
2890 assert(
cast->name != 0);
2894#line 253 "prism/templates/ext/prism/api_node.c.erb"
2895 argv[5] = pm_location_new(
cast->name_loc.start,
cast->name_loc.length, source, freeze);
2898#line 226 "prism/templates/ext/prism/api_node.c.erb"
2902#line 226 "prism/templates/ext/prism/api_node.c.erb"
2906#line 226 "prism/templates/ext/prism/api_node.c.erb"
2910#line 245 "prism/templates/ext/prism/api_node.c.erb"
2912 for (
size_t index = 0; index <
cast->locals.size; index++) {
2913 assert(
cast->locals.ids[index] != 0);
2919#line 253 "prism/templates/ext/prism/api_node.c.erb"
2920 argv[10] = pm_location_new(
cast->def_keyword_loc.start,
cast->def_keyword_loc.length, source, freeze);
2923#line 256 "prism/templates/ext/prism/api_node.c.erb"
2924 argv[11] =
cast->operator_loc.length == 0 ?
Qnil : pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
2927#line 256 "prism/templates/ext/prism/api_node.c.erb"
2928 argv[12] =
cast->lparen_loc.length == 0 ?
Qnil : pm_location_new(
cast->lparen_loc.start,
cast->lparen_loc.length, source, freeze);
2931#line 256 "prism/templates/ext/prism/api_node.c.erb"
2932 argv[13] =
cast->rparen_loc.length == 0 ?
Qnil : pm_location_new(
cast->rparen_loc.start,
cast->rparen_loc.length, source, freeze);
2935#line 256 "prism/templates/ext/prism/api_node.c.erb"
2936 argv[14] =
cast->equal_loc.length == 0 ?
Qnil : pm_location_new(
cast->equal_loc.start,
cast->equal_loc.length, source, freeze);
2939#line 256 "prism/templates/ext/prism/api_node.c.erb"
2940 argv[15] =
cast->end_keyword_loc.length == 0 ?
Qnil : pm_location_new(
cast->end_keyword_loc.start,
cast->end_keyword_loc.length, source, freeze);
2948#line 203 "prism/templates/ext/prism/api_node.c.erb"
2949 case PM_DEFINED_NODE: {
2966#line 256 "prism/templates/ext/prism/api_node.c.erb"
2967 argv[4] =
cast->lparen_loc.length == 0 ?
Qnil : pm_location_new(
cast->lparen_loc.start,
cast->lparen_loc.length, source, freeze);
2970#line 226 "prism/templates/ext/prism/api_node.c.erb"
2974#line 256 "prism/templates/ext/prism/api_node.c.erb"
2975 argv[6] =
cast->rparen_loc.length == 0 ?
Qnil : pm_location_new(
cast->rparen_loc.start,
cast->rparen_loc.length, source, freeze);
2978#line 253 "prism/templates/ext/prism/api_node.c.erb"
2979 argv[7] = pm_location_new(
cast->keyword_loc.start,
cast->keyword_loc.length, source, freeze);
2987#line 203 "prism/templates/ext/prism/api_node.c.erb"
2988 case PM_ELSE_NODE: {
3005#line 253 "prism/templates/ext/prism/api_node.c.erb"
3006 argv[4] = pm_location_new(
cast->else_keyword_loc.start,
cast->else_keyword_loc.length, source, freeze);
3009#line 226 "prism/templates/ext/prism/api_node.c.erb"
3013#line 256 "prism/templates/ext/prism/api_node.c.erb"
3014 argv[6] =
cast->end_keyword_loc.length == 0 ?
Qnil : pm_location_new(
cast->end_keyword_loc.start,
cast->end_keyword_loc.length, source, freeze);
3022#line 203 "prism/templates/ext/prism/api_node.c.erb"
3023 case PM_EMBEDDED_STATEMENTS_NODE: {
3040#line 253 "prism/templates/ext/prism/api_node.c.erb"
3041 argv[4] = pm_location_new(
cast->opening_loc.start,
cast->opening_loc.length, source, freeze);
3044#line 226 "prism/templates/ext/prism/api_node.c.erb"
3048#line 253 "prism/templates/ext/prism/api_node.c.erb"
3049 argv[6] = pm_location_new(
cast->closing_loc.start,
cast->closing_loc.length, source, freeze);
3057#line 203 "prism/templates/ext/prism/api_node.c.erb"
3058 case PM_EMBEDDED_VARIABLE_NODE: {
3075#line 253 "prism/templates/ext/prism/api_node.c.erb"
3076 argv[4] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
3079#line 226 "prism/templates/ext/prism/api_node.c.erb"
3088#line 203 "prism/templates/ext/prism/api_node.c.erb"
3089 case PM_ENSURE_NODE: {
3106#line 253 "prism/templates/ext/prism/api_node.c.erb"
3107 argv[4] = pm_location_new(
cast->ensure_keyword_loc.start,
cast->ensure_keyword_loc.length, source, freeze);
3110#line 226 "prism/templates/ext/prism/api_node.c.erb"
3114#line 253 "prism/templates/ext/prism/api_node.c.erb"
3115 argv[6] = pm_location_new(
cast->end_keyword_loc.start,
cast->end_keyword_loc.length, source, freeze);
3123#line 203 "prism/templates/ext/prism/api_node.c.erb"
3124 case PM_ERROR_RECOVERY_NODE: {
3140#line 226 "prism/templates/ext/prism/api_node.c.erb"
3149#line 203 "prism/templates/ext/prism/api_node.c.erb"
3150 case PM_FALSE_NODE: {
3171#line 203 "prism/templates/ext/prism/api_node.c.erb"
3172 case PM_FIND_PATTERN_NODE: {
3189#line 226 "prism/templates/ext/prism/api_node.c.erb"
3193#line 226 "prism/templates/ext/prism/api_node.c.erb"
3197#line 229 "prism/templates/ext/prism/api_node.c.erb"
3199 for (
size_t index = 0; index <
cast->requireds.size; index++) {
3205#line 226 "prism/templates/ext/prism/api_node.c.erb"
3209#line 256 "prism/templates/ext/prism/api_node.c.erb"
3210 argv[8] =
cast->opening_loc.length == 0 ?
Qnil : pm_location_new(
cast->opening_loc.start,
cast->opening_loc.length, source, freeze);
3213#line 256 "prism/templates/ext/prism/api_node.c.erb"
3214 argv[9] =
cast->closing_loc.length == 0 ?
Qnil : pm_location_new(
cast->closing_loc.start,
cast->closing_loc.length, source, freeze);
3222#line 203 "prism/templates/ext/prism/api_node.c.erb"
3223 case PM_FLIP_FLOP_NODE: {
3240#line 226 "prism/templates/ext/prism/api_node.c.erb"
3244#line 226 "prism/templates/ext/prism/api_node.c.erb"
3248#line 253 "prism/templates/ext/prism/api_node.c.erb"
3249 argv[6] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
3257#line 203 "prism/templates/ext/prism/api_node.c.erb"
3258 case PM_FLOAT_NODE: {
3275#line 268 "prism/templates/ext/prism/api_node.c.erb"
3284#line 203 "prism/templates/ext/prism/api_node.c.erb"
3302#line 226 "prism/templates/ext/prism/api_node.c.erb"
3306#line 226 "prism/templates/ext/prism/api_node.c.erb"
3310#line 226 "prism/templates/ext/prism/api_node.c.erb"
3314#line 253 "prism/templates/ext/prism/api_node.c.erb"
3315 argv[7] = pm_location_new(
cast->for_keyword_loc.start,
cast->for_keyword_loc.length, source, freeze);
3318#line 253 "prism/templates/ext/prism/api_node.c.erb"
3319 argv[8] = pm_location_new(
cast->in_keyword_loc.start,
cast->in_keyword_loc.length, source, freeze);
3322#line 256 "prism/templates/ext/prism/api_node.c.erb"
3323 argv[9] =
cast->do_keyword_loc.length == 0 ?
Qnil : pm_location_new(
cast->do_keyword_loc.start,
cast->do_keyword_loc.length, source, freeze);
3326#line 253 "prism/templates/ext/prism/api_node.c.erb"
3327 argv[10] = pm_location_new(
cast->end_keyword_loc.start,
cast->end_keyword_loc.length, source, freeze);
3335#line 203 "prism/templates/ext/prism/api_node.c.erb"
3336 case PM_FORWARDING_ARGUMENTS_NODE: {
3357#line 203 "prism/templates/ext/prism/api_node.c.erb"
3358 case PM_FORWARDING_PARAMETER_NODE: {
3379#line 203 "prism/templates/ext/prism/api_node.c.erb"
3380 case PM_FORWARDING_SUPER_NODE: {
3397#line 253 "prism/templates/ext/prism/api_node.c.erb"
3398 argv[4] = pm_location_new(
cast->keyword_loc.start,
cast->keyword_loc.length, source, freeze);
3401#line 226 "prism/templates/ext/prism/api_node.c.erb"
3410#line 203 "prism/templates/ext/prism/api_node.c.erb"
3411 case PM_GLOBAL_VARIABLE_AND_WRITE_NODE: {
3428#line 239 "prism/templates/ext/prism/api_node.c.erb"
3429 assert(
cast->name != 0);
3433#line 253 "prism/templates/ext/prism/api_node.c.erb"
3434 argv[5] = pm_location_new(
cast->name_loc.start,
cast->name_loc.length, source, freeze);
3437#line 253 "prism/templates/ext/prism/api_node.c.erb"
3438 argv[6] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
3441#line 226 "prism/templates/ext/prism/api_node.c.erb"
3450#line 203 "prism/templates/ext/prism/api_node.c.erb"
3451 case PM_GLOBAL_VARIABLE_OPERATOR_WRITE_NODE: {
3468#line 239 "prism/templates/ext/prism/api_node.c.erb"
3469 assert(
cast->name != 0);
3473#line 253 "prism/templates/ext/prism/api_node.c.erb"
3474 argv[5] = pm_location_new(
cast->name_loc.start,
cast->name_loc.length, source, freeze);
3477#line 253 "prism/templates/ext/prism/api_node.c.erb"
3478 argv[6] = pm_location_new(
cast->binary_operator_loc.start,
cast->binary_operator_loc.length, source, freeze);
3481#line 226 "prism/templates/ext/prism/api_node.c.erb"
3485#line 239 "prism/templates/ext/prism/api_node.c.erb"
3486 assert(
cast->binary_operator != 0);
3495#line 203 "prism/templates/ext/prism/api_node.c.erb"
3496 case PM_GLOBAL_VARIABLE_OR_WRITE_NODE: {
3513#line 239 "prism/templates/ext/prism/api_node.c.erb"
3514 assert(
cast->name != 0);
3518#line 253 "prism/templates/ext/prism/api_node.c.erb"
3519 argv[5] = pm_location_new(
cast->name_loc.start,
cast->name_loc.length, source, freeze);
3522#line 253 "prism/templates/ext/prism/api_node.c.erb"
3523 argv[6] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
3526#line 226 "prism/templates/ext/prism/api_node.c.erb"
3535#line 203 "prism/templates/ext/prism/api_node.c.erb"
3536 case PM_GLOBAL_VARIABLE_READ_NODE: {
3553#line 239 "prism/templates/ext/prism/api_node.c.erb"
3554 assert(
cast->name != 0);
3563#line 203 "prism/templates/ext/prism/api_node.c.erb"
3564 case PM_GLOBAL_VARIABLE_TARGET_NODE: {
3581#line 239 "prism/templates/ext/prism/api_node.c.erb"
3582 assert(
cast->name != 0);
3591#line 203 "prism/templates/ext/prism/api_node.c.erb"
3592 case PM_GLOBAL_VARIABLE_WRITE_NODE: {
3609#line 239 "prism/templates/ext/prism/api_node.c.erb"
3610 assert(
cast->name != 0);
3614#line 253 "prism/templates/ext/prism/api_node.c.erb"
3615 argv[5] = pm_location_new(
cast->name_loc.start,
cast->name_loc.length, source, freeze);
3618#line 226 "prism/templates/ext/prism/api_node.c.erb"
3622#line 253 "prism/templates/ext/prism/api_node.c.erb"
3623 argv[7] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
3631#line 203 "prism/templates/ext/prism/api_node.c.erb"
3632 case PM_HASH_NODE: {
3649#line 253 "prism/templates/ext/prism/api_node.c.erb"
3650 argv[4] = pm_location_new(
cast->opening_loc.start,
cast->opening_loc.length, source, freeze);
3653#line 229 "prism/templates/ext/prism/api_node.c.erb"
3655 for (
size_t index = 0; index <
cast->elements.size; index++) {
3661#line 253 "prism/templates/ext/prism/api_node.c.erb"
3662 argv[6] = pm_location_new(
cast->closing_loc.start,
cast->closing_loc.length, source, freeze);
3670#line 203 "prism/templates/ext/prism/api_node.c.erb"
3671 case PM_HASH_PATTERN_NODE: {
3688#line 226 "prism/templates/ext/prism/api_node.c.erb"
3692#line 229 "prism/templates/ext/prism/api_node.c.erb"
3694 for (
size_t index = 0; index <
cast->elements.size; index++) {
3700#line 226 "prism/templates/ext/prism/api_node.c.erb"
3704#line 256 "prism/templates/ext/prism/api_node.c.erb"
3705 argv[7] =
cast->opening_loc.length == 0 ?
Qnil : pm_location_new(
cast->opening_loc.start,
cast->opening_loc.length, source, freeze);
3708#line 256 "prism/templates/ext/prism/api_node.c.erb"
3709 argv[8] =
cast->closing_loc.length == 0 ?
Qnil : pm_location_new(
cast->closing_loc.start,
cast->closing_loc.length, source, freeze);
3717#line 203 "prism/templates/ext/prism/api_node.c.erb"
3735#line 256 "prism/templates/ext/prism/api_node.c.erb"
3736 argv[4] =
cast->if_keyword_loc.length == 0 ?
Qnil : pm_location_new(
cast->if_keyword_loc.start,
cast->if_keyword_loc.length, source, freeze);
3739#line 226 "prism/templates/ext/prism/api_node.c.erb"
3743#line 256 "prism/templates/ext/prism/api_node.c.erb"
3744 argv[6] =
cast->then_keyword_loc.length == 0 ?
Qnil : pm_location_new(
cast->then_keyword_loc.start,
cast->then_keyword_loc.length, source, freeze);
3747#line 226 "prism/templates/ext/prism/api_node.c.erb"
3751#line 226 "prism/templates/ext/prism/api_node.c.erb"
3755#line 256 "prism/templates/ext/prism/api_node.c.erb"
3756 argv[9] =
cast->end_keyword_loc.length == 0 ?
Qnil : pm_location_new(
cast->end_keyword_loc.start,
cast->end_keyword_loc.length, source, freeze);
3764#line 203 "prism/templates/ext/prism/api_node.c.erb"
3765 case PM_IMAGINARY_NODE: {
3781#line 226 "prism/templates/ext/prism/api_node.c.erb"
3790#line 203 "prism/templates/ext/prism/api_node.c.erb"
3791 case PM_IMPLICIT_NODE: {
3807#line 226 "prism/templates/ext/prism/api_node.c.erb"
3816#line 203 "prism/templates/ext/prism/api_node.c.erb"
3817 case PM_IMPLICIT_REST_NODE: {
3838#line 203 "prism/templates/ext/prism/api_node.c.erb"
3856#line 226 "prism/templates/ext/prism/api_node.c.erb"
3860#line 226 "prism/templates/ext/prism/api_node.c.erb"
3864#line 253 "prism/templates/ext/prism/api_node.c.erb"
3865 argv[6] = pm_location_new(
cast->in_keyword_loc.start,
cast->in_keyword_loc.length, source, freeze);
3868#line 256 "prism/templates/ext/prism/api_node.c.erb"
3869 argv[7] =
cast->then_keyword_loc.length == 0 ?
Qnil : pm_location_new(
cast->then_keyword_loc.start,
cast->then_keyword_loc.length, source, freeze);
3877#line 203 "prism/templates/ext/prism/api_node.c.erb"
3878 case PM_INDEX_AND_WRITE_NODE: {
3895#line 226 "prism/templates/ext/prism/api_node.c.erb"
3899#line 256 "prism/templates/ext/prism/api_node.c.erb"
3900 argv[5] =
cast->call_operator_loc.length == 0 ?
Qnil : pm_location_new(
cast->call_operator_loc.start,
cast->call_operator_loc.length, source, freeze);
3903#line 253 "prism/templates/ext/prism/api_node.c.erb"
3904 argv[6] = pm_location_new(
cast->opening_loc.start,
cast->opening_loc.length, source, freeze);
3907#line 226 "prism/templates/ext/prism/api_node.c.erb"
3911#line 253 "prism/templates/ext/prism/api_node.c.erb"
3912 argv[8] = pm_location_new(
cast->closing_loc.start,
cast->closing_loc.length, source, freeze);
3915#line 226 "prism/templates/ext/prism/api_node.c.erb"
3919#line 253 "prism/templates/ext/prism/api_node.c.erb"
3920 argv[10] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
3923#line 226 "prism/templates/ext/prism/api_node.c.erb"
3932#line 203 "prism/templates/ext/prism/api_node.c.erb"
3933 case PM_INDEX_OPERATOR_WRITE_NODE: {
3950#line 226 "prism/templates/ext/prism/api_node.c.erb"
3954#line 256 "prism/templates/ext/prism/api_node.c.erb"
3955 argv[5] =
cast->call_operator_loc.length == 0 ?
Qnil : pm_location_new(
cast->call_operator_loc.start,
cast->call_operator_loc.length, source, freeze);
3958#line 253 "prism/templates/ext/prism/api_node.c.erb"
3959 argv[6] = pm_location_new(
cast->opening_loc.start,
cast->opening_loc.length, source, freeze);
3962#line 226 "prism/templates/ext/prism/api_node.c.erb"
3966#line 253 "prism/templates/ext/prism/api_node.c.erb"
3967 argv[8] = pm_location_new(
cast->closing_loc.start,
cast->closing_loc.length, source, freeze);
3970#line 226 "prism/templates/ext/prism/api_node.c.erb"
3974#line 239 "prism/templates/ext/prism/api_node.c.erb"
3975 assert(
cast->binary_operator != 0);
3979#line 253 "prism/templates/ext/prism/api_node.c.erb"
3980 argv[11] = pm_location_new(
cast->binary_operator_loc.start,
cast->binary_operator_loc.length, source, freeze);
3983#line 226 "prism/templates/ext/prism/api_node.c.erb"
3992#line 203 "prism/templates/ext/prism/api_node.c.erb"
3993 case PM_INDEX_OR_WRITE_NODE: {
4010#line 226 "prism/templates/ext/prism/api_node.c.erb"
4014#line 256 "prism/templates/ext/prism/api_node.c.erb"
4015 argv[5] =
cast->call_operator_loc.length == 0 ?
Qnil : pm_location_new(
cast->call_operator_loc.start,
cast->call_operator_loc.length, source, freeze);
4018#line 253 "prism/templates/ext/prism/api_node.c.erb"
4019 argv[6] = pm_location_new(
cast->opening_loc.start,
cast->opening_loc.length, source, freeze);
4022#line 226 "prism/templates/ext/prism/api_node.c.erb"
4026#line 253 "prism/templates/ext/prism/api_node.c.erb"
4027 argv[8] = pm_location_new(
cast->closing_loc.start,
cast->closing_loc.length, source, freeze);
4030#line 226 "prism/templates/ext/prism/api_node.c.erb"
4034#line 253 "prism/templates/ext/prism/api_node.c.erb"
4035 argv[10] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
4038#line 226 "prism/templates/ext/prism/api_node.c.erb"
4047#line 203 "prism/templates/ext/prism/api_node.c.erb"
4048 case PM_INDEX_TARGET_NODE: {
4065#line 226 "prism/templates/ext/prism/api_node.c.erb"
4069#line 253 "prism/templates/ext/prism/api_node.c.erb"
4070 argv[5] = pm_location_new(
cast->opening_loc.start,
cast->opening_loc.length, source, freeze);
4073#line 226 "prism/templates/ext/prism/api_node.c.erb"
4077#line 253 "prism/templates/ext/prism/api_node.c.erb"
4078 argv[7] = pm_location_new(
cast->closing_loc.start,
cast->closing_loc.length, source, freeze);
4081#line 226 "prism/templates/ext/prism/api_node.c.erb"
4090#line 203 "prism/templates/ext/prism/api_node.c.erb"
4091 case PM_INSTANCE_VARIABLE_AND_WRITE_NODE: {
4108#line 239 "prism/templates/ext/prism/api_node.c.erb"
4109 assert(
cast->name != 0);
4113#line 253 "prism/templates/ext/prism/api_node.c.erb"
4114 argv[5] = pm_location_new(
cast->name_loc.start,
cast->name_loc.length, source, freeze);
4117#line 253 "prism/templates/ext/prism/api_node.c.erb"
4118 argv[6] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
4121#line 226 "prism/templates/ext/prism/api_node.c.erb"
4130#line 203 "prism/templates/ext/prism/api_node.c.erb"
4131 case PM_INSTANCE_VARIABLE_OPERATOR_WRITE_NODE: {
4148#line 239 "prism/templates/ext/prism/api_node.c.erb"
4149 assert(
cast->name != 0);
4153#line 253 "prism/templates/ext/prism/api_node.c.erb"
4154 argv[5] = pm_location_new(
cast->name_loc.start,
cast->name_loc.length, source, freeze);
4157#line 253 "prism/templates/ext/prism/api_node.c.erb"
4158 argv[6] = pm_location_new(
cast->binary_operator_loc.start,
cast->binary_operator_loc.length, source, freeze);
4161#line 226 "prism/templates/ext/prism/api_node.c.erb"
4165#line 239 "prism/templates/ext/prism/api_node.c.erb"
4166 assert(
cast->binary_operator != 0);
4175#line 203 "prism/templates/ext/prism/api_node.c.erb"
4176 case PM_INSTANCE_VARIABLE_OR_WRITE_NODE: {
4193#line 239 "prism/templates/ext/prism/api_node.c.erb"
4194 assert(
cast->name != 0);
4198#line 253 "prism/templates/ext/prism/api_node.c.erb"
4199 argv[5] = pm_location_new(
cast->name_loc.start,
cast->name_loc.length, source, freeze);
4202#line 253 "prism/templates/ext/prism/api_node.c.erb"
4203 argv[6] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
4206#line 226 "prism/templates/ext/prism/api_node.c.erb"
4215#line 203 "prism/templates/ext/prism/api_node.c.erb"
4216 case PM_INSTANCE_VARIABLE_READ_NODE: {
4233#line 239 "prism/templates/ext/prism/api_node.c.erb"
4234 assert(
cast->name != 0);
4243#line 203 "prism/templates/ext/prism/api_node.c.erb"
4244 case PM_INSTANCE_VARIABLE_TARGET_NODE: {
4261#line 239 "prism/templates/ext/prism/api_node.c.erb"
4262 assert(
cast->name != 0);
4271#line 203 "prism/templates/ext/prism/api_node.c.erb"
4272 case PM_INSTANCE_VARIABLE_WRITE_NODE: {
4289#line 239 "prism/templates/ext/prism/api_node.c.erb"
4290 assert(
cast->name != 0);
4294#line 253 "prism/templates/ext/prism/api_node.c.erb"
4295 argv[5] = pm_location_new(
cast->name_loc.start,
cast->name_loc.length, source, freeze);
4298#line 226 "prism/templates/ext/prism/api_node.c.erb"
4302#line 253 "prism/templates/ext/prism/api_node.c.erb"
4303 argv[7] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
4311#line 203 "prism/templates/ext/prism/api_node.c.erb"
4312 case PM_INTEGER_NODE: {
4329#line 265 "prism/templates/ext/prism/api_node.c.erb"
4330 argv[4] = pm_integer_new(&
cast->value);
4338#line 203 "prism/templates/ext/prism/api_node.c.erb"
4339 case PM_INTERPOLATED_MATCH_LAST_LINE_NODE: {
4356#line 253 "prism/templates/ext/prism/api_node.c.erb"
4357 argv[4] = pm_location_new(
cast->opening_loc.start,
cast->opening_loc.length, source, freeze);
4360#line 229 "prism/templates/ext/prism/api_node.c.erb"
4362 for (
size_t index = 0; index <
cast->parts.size; index++) {
4368#line 253 "prism/templates/ext/prism/api_node.c.erb"
4369 argv[6] = pm_location_new(
cast->closing_loc.start,
cast->closing_loc.length, source, freeze);
4377#line 203 "prism/templates/ext/prism/api_node.c.erb"
4378 case PM_INTERPOLATED_REGULAR_EXPRESSION_NODE: {
4395#line 253 "prism/templates/ext/prism/api_node.c.erb"
4396 argv[4] = pm_location_new(
cast->opening_loc.start,
cast->opening_loc.length, source, freeze);
4399#line 229 "prism/templates/ext/prism/api_node.c.erb"
4401 for (
size_t index = 0; index <
cast->parts.size; index++) {
4407#line 253 "prism/templates/ext/prism/api_node.c.erb"
4408 argv[6] = pm_location_new(
cast->closing_loc.start,
cast->closing_loc.length, source, freeze);
4416#line 203 "prism/templates/ext/prism/api_node.c.erb"
4417 case PM_INTERPOLATED_STRING_NODE: {
4434#line 256 "prism/templates/ext/prism/api_node.c.erb"
4435 argv[4] =
cast->opening_loc.length == 0 ?
Qnil : pm_location_new(
cast->opening_loc.start,
cast->opening_loc.length, source, freeze);
4438#line 229 "prism/templates/ext/prism/api_node.c.erb"
4440 for (
size_t index = 0; index <
cast->parts.size; index++) {
4446#line 256 "prism/templates/ext/prism/api_node.c.erb"
4447 argv[6] =
cast->closing_loc.length == 0 ?
Qnil : pm_location_new(
cast->closing_loc.start,
cast->closing_loc.length, source, freeze);
4455#line 203 "prism/templates/ext/prism/api_node.c.erb"
4456 case PM_INTERPOLATED_SYMBOL_NODE: {
4473#line 256 "prism/templates/ext/prism/api_node.c.erb"
4474 argv[4] =
cast->opening_loc.length == 0 ?
Qnil : pm_location_new(
cast->opening_loc.start,
cast->opening_loc.length, source, freeze);
4477#line 229 "prism/templates/ext/prism/api_node.c.erb"
4479 for (
size_t index = 0; index <
cast->parts.size; index++) {
4485#line 256 "prism/templates/ext/prism/api_node.c.erb"
4486 argv[6] =
cast->closing_loc.length == 0 ?
Qnil : pm_location_new(
cast->closing_loc.start,
cast->closing_loc.length, source, freeze);
4494#line 203 "prism/templates/ext/prism/api_node.c.erb"
4495 case PM_INTERPOLATED_X_STRING_NODE: {
4512#line 253 "prism/templates/ext/prism/api_node.c.erb"
4513 argv[4] = pm_location_new(
cast->opening_loc.start,
cast->opening_loc.length, source, freeze);
4516#line 229 "prism/templates/ext/prism/api_node.c.erb"
4518 for (
size_t index = 0; index <
cast->parts.size; index++) {
4524#line 253 "prism/templates/ext/prism/api_node.c.erb"
4525 argv[6] = pm_location_new(
cast->closing_loc.start,
cast->closing_loc.length, source, freeze);
4533#line 203 "prism/templates/ext/prism/api_node.c.erb"
4534 case PM_IT_LOCAL_VARIABLE_READ_NODE: {
4555#line 203 "prism/templates/ext/prism/api_node.c.erb"
4556 case PM_IT_PARAMETERS_NODE: {
4577#line 203 "prism/templates/ext/prism/api_node.c.erb"
4578 case PM_KEYWORD_HASH_NODE: {
4595#line 229 "prism/templates/ext/prism/api_node.c.erb"
4597 for (
size_t index = 0; index <
cast->elements.size; index++) {
4608#line 203 "prism/templates/ext/prism/api_node.c.erb"
4609 case PM_KEYWORD_REST_PARAMETER_NODE: {
4629#line 256 "prism/templates/ext/prism/api_node.c.erb"
4630 argv[5] =
cast->name_loc.length == 0 ?
Qnil : pm_location_new(
cast->name_loc.start,
cast->name_loc.length, source, freeze);
4633#line 253 "prism/templates/ext/prism/api_node.c.erb"
4634 argv[6] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
4642#line 203 "prism/templates/ext/prism/api_node.c.erb"
4643 case PM_LAMBDA_NODE: {
4660#line 245 "prism/templates/ext/prism/api_node.c.erb"
4662 for (
size_t index = 0; index <
cast->locals.size; index++) {
4663 assert(
cast->locals.ids[index] != 0);
4669#line 253 "prism/templates/ext/prism/api_node.c.erb"
4670 argv[5] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
4673#line 253 "prism/templates/ext/prism/api_node.c.erb"
4674 argv[6] = pm_location_new(
cast->opening_loc.start,
cast->opening_loc.length, source, freeze);
4677#line 253 "prism/templates/ext/prism/api_node.c.erb"
4678 argv[7] = pm_location_new(
cast->closing_loc.start,
cast->closing_loc.length, source, freeze);
4681#line 226 "prism/templates/ext/prism/api_node.c.erb"
4685#line 226 "prism/templates/ext/prism/api_node.c.erb"
4694#line 203 "prism/templates/ext/prism/api_node.c.erb"
4695 case PM_LOCAL_VARIABLE_AND_WRITE_NODE: {
4712#line 253 "prism/templates/ext/prism/api_node.c.erb"
4713 argv[4] = pm_location_new(
cast->name_loc.start,
cast->name_loc.length, source, freeze);
4716#line 253 "prism/templates/ext/prism/api_node.c.erb"
4717 argv[5] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
4720#line 226 "prism/templates/ext/prism/api_node.c.erb"
4724#line 239 "prism/templates/ext/prism/api_node.c.erb"
4725 assert(
cast->name != 0);
4729#line 262 "prism/templates/ext/prism/api_node.c.erb"
4738#line 203 "prism/templates/ext/prism/api_node.c.erb"
4739 case PM_LOCAL_VARIABLE_OPERATOR_WRITE_NODE: {
4756#line 253 "prism/templates/ext/prism/api_node.c.erb"
4757 argv[4] = pm_location_new(
cast->name_loc.start,
cast->name_loc.length, source, freeze);
4760#line 253 "prism/templates/ext/prism/api_node.c.erb"
4761 argv[5] = pm_location_new(
cast->binary_operator_loc.start,
cast->binary_operator_loc.length, source, freeze);
4764#line 226 "prism/templates/ext/prism/api_node.c.erb"
4768#line 239 "prism/templates/ext/prism/api_node.c.erb"
4769 assert(
cast->name != 0);
4773#line 239 "prism/templates/ext/prism/api_node.c.erb"
4774 assert(
cast->binary_operator != 0);
4778#line 262 "prism/templates/ext/prism/api_node.c.erb"
4787#line 203 "prism/templates/ext/prism/api_node.c.erb"
4788 case PM_LOCAL_VARIABLE_OR_WRITE_NODE: {
4805#line 253 "prism/templates/ext/prism/api_node.c.erb"
4806 argv[4] = pm_location_new(
cast->name_loc.start,
cast->name_loc.length, source, freeze);
4809#line 253 "prism/templates/ext/prism/api_node.c.erb"
4810 argv[5] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
4813#line 226 "prism/templates/ext/prism/api_node.c.erb"
4817#line 239 "prism/templates/ext/prism/api_node.c.erb"
4818 assert(
cast->name != 0);
4822#line 262 "prism/templates/ext/prism/api_node.c.erb"
4831#line 203 "prism/templates/ext/prism/api_node.c.erb"
4832 case PM_LOCAL_VARIABLE_READ_NODE: {
4849#line 239 "prism/templates/ext/prism/api_node.c.erb"
4850 assert(
cast->name != 0);
4854#line 262 "prism/templates/ext/prism/api_node.c.erb"
4863#line 203 "prism/templates/ext/prism/api_node.c.erb"
4864 case PM_LOCAL_VARIABLE_TARGET_NODE: {
4881#line 239 "prism/templates/ext/prism/api_node.c.erb"
4882 assert(
cast->name != 0);
4886#line 262 "prism/templates/ext/prism/api_node.c.erb"
4895#line 203 "prism/templates/ext/prism/api_node.c.erb"
4896 case PM_LOCAL_VARIABLE_WRITE_NODE: {
4913#line 239 "prism/templates/ext/prism/api_node.c.erb"
4914 assert(
cast->name != 0);
4918#line 262 "prism/templates/ext/prism/api_node.c.erb"
4922#line 253 "prism/templates/ext/prism/api_node.c.erb"
4923 argv[6] = pm_location_new(
cast->name_loc.start,
cast->name_loc.length, source, freeze);
4926#line 226 "prism/templates/ext/prism/api_node.c.erb"
4930#line 253 "prism/templates/ext/prism/api_node.c.erb"
4931 argv[8] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
4939#line 203 "prism/templates/ext/prism/api_node.c.erb"
4940 case PM_MATCH_LAST_LINE_NODE: {
4957#line 253 "prism/templates/ext/prism/api_node.c.erb"
4958 argv[4] = pm_location_new(
cast->opening_loc.start,
cast->opening_loc.length, source, freeze);
4961#line 253 "prism/templates/ext/prism/api_node.c.erb"
4962 argv[5] = pm_location_new(
cast->content_loc.start,
cast->content_loc.length, source, freeze);
4965#line 253 "prism/templates/ext/prism/api_node.c.erb"
4966 argv[6] = pm_location_new(
cast->closing_loc.start,
cast->closing_loc.length, source, freeze);
4969#line 236 "prism/templates/ext/prism/api_node.c.erb"
4970 argv[7] = pm_string_new(&
cast->unescaped, encoding);
4978#line 203 "prism/templates/ext/prism/api_node.c.erb"
4979 case PM_MATCH_PREDICATE_NODE: {
4996#line 226 "prism/templates/ext/prism/api_node.c.erb"
5000#line 226 "prism/templates/ext/prism/api_node.c.erb"
5004#line 253 "prism/templates/ext/prism/api_node.c.erb"
5005 argv[6] = pm_location_new(
cast->keyword_loc.start,
cast->keyword_loc.length, source, freeze);
5013#line 203 "prism/templates/ext/prism/api_node.c.erb"
5014 case PM_MATCH_REQUIRED_NODE: {
5031#line 226 "prism/templates/ext/prism/api_node.c.erb"
5035#line 226 "prism/templates/ext/prism/api_node.c.erb"
5039#line 253 "prism/templates/ext/prism/api_node.c.erb"
5040 argv[6] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
5048#line 203 "prism/templates/ext/prism/api_node.c.erb"
5049 case PM_MATCH_WRITE_NODE: {
5066#line 226 "prism/templates/ext/prism/api_node.c.erb"
5070#line 229 "prism/templates/ext/prism/api_node.c.erb"
5072 for (
size_t index = 0; index <
cast->targets.size; index++) {
5083#line 203 "prism/templates/ext/prism/api_node.c.erb"
5084 case PM_MODULE_NODE: {
5101#line 245 "prism/templates/ext/prism/api_node.c.erb"
5103 for (
size_t index = 0; index <
cast->locals.size; index++) {
5104 assert(
cast->locals.ids[index] != 0);
5110#line 253 "prism/templates/ext/prism/api_node.c.erb"
5111 argv[5] = pm_location_new(
cast->module_keyword_loc.start,
cast->module_keyword_loc.length, source, freeze);
5114#line 226 "prism/templates/ext/prism/api_node.c.erb"
5118#line 226 "prism/templates/ext/prism/api_node.c.erb"
5122#line 253 "prism/templates/ext/prism/api_node.c.erb"
5123 argv[8] = pm_location_new(
cast->end_keyword_loc.start,
cast->end_keyword_loc.length, source, freeze);
5126#line 239 "prism/templates/ext/prism/api_node.c.erb"
5127 assert(
cast->name != 0);
5136#line 203 "prism/templates/ext/prism/api_node.c.erb"
5137 case PM_MULTI_TARGET_NODE: {
5154#line 229 "prism/templates/ext/prism/api_node.c.erb"
5156 for (
size_t index = 0; index <
cast->lefts.size; index++) {
5162#line 226 "prism/templates/ext/prism/api_node.c.erb"
5166#line 229 "prism/templates/ext/prism/api_node.c.erb"
5168 for (
size_t index = 0; index <
cast->rights.size; index++) {
5174#line 256 "prism/templates/ext/prism/api_node.c.erb"
5175 argv[7] =
cast->lparen_loc.length == 0 ?
Qnil : pm_location_new(
cast->lparen_loc.start,
cast->lparen_loc.length, source, freeze);
5178#line 256 "prism/templates/ext/prism/api_node.c.erb"
5179 argv[8] =
cast->rparen_loc.length == 0 ?
Qnil : pm_location_new(
cast->rparen_loc.start,
cast->rparen_loc.length, source, freeze);
5187#line 203 "prism/templates/ext/prism/api_node.c.erb"
5188 case PM_MULTI_WRITE_NODE: {
5205#line 229 "prism/templates/ext/prism/api_node.c.erb"
5207 for (
size_t index = 0; index <
cast->lefts.size; index++) {
5213#line 226 "prism/templates/ext/prism/api_node.c.erb"
5217#line 229 "prism/templates/ext/prism/api_node.c.erb"
5219 for (
size_t index = 0; index <
cast->rights.size; index++) {
5225#line 256 "prism/templates/ext/prism/api_node.c.erb"
5226 argv[7] =
cast->lparen_loc.length == 0 ?
Qnil : pm_location_new(
cast->lparen_loc.start,
cast->lparen_loc.length, source, freeze);
5229#line 256 "prism/templates/ext/prism/api_node.c.erb"
5230 argv[8] =
cast->rparen_loc.length == 0 ?
Qnil : pm_location_new(
cast->rparen_loc.start,
cast->rparen_loc.length, source, freeze);
5233#line 253 "prism/templates/ext/prism/api_node.c.erb"
5234 argv[9] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
5237#line 226 "prism/templates/ext/prism/api_node.c.erb"
5246#line 203 "prism/templates/ext/prism/api_node.c.erb"
5247 case PM_NEXT_NODE: {
5264#line 226 "prism/templates/ext/prism/api_node.c.erb"
5268#line 253 "prism/templates/ext/prism/api_node.c.erb"
5269 argv[5] = pm_location_new(
cast->keyword_loc.start,
cast->keyword_loc.length, source, freeze);
5277#line 203 "prism/templates/ext/prism/api_node.c.erb"
5299#line 203 "prism/templates/ext/prism/api_node.c.erb"
5300 case PM_NO_BLOCK_PARAMETER_NODE: {
5317#line 253 "prism/templates/ext/prism/api_node.c.erb"
5318 argv[4] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
5321#line 253 "prism/templates/ext/prism/api_node.c.erb"
5322 argv[5] = pm_location_new(
cast->keyword_loc.start,
cast->keyword_loc.length, source, freeze);
5330#line 203 "prism/templates/ext/prism/api_node.c.erb"
5331 case PM_NO_KEYWORDS_PARAMETER_NODE: {
5348#line 253 "prism/templates/ext/prism/api_node.c.erb"
5349 argv[4] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
5352#line 253 "prism/templates/ext/prism/api_node.c.erb"
5353 argv[5] = pm_location_new(
cast->keyword_loc.start,
cast->keyword_loc.length, source, freeze);
5361#line 203 "prism/templates/ext/prism/api_node.c.erb"
5362 case PM_NUMBERED_PARAMETERS_NODE: {
5379#line 259 "prism/templates/ext/prism/api_node.c.erb"
5388#line 203 "prism/templates/ext/prism/api_node.c.erb"
5389 case PM_NUMBERED_REFERENCE_READ_NODE: {
5406#line 262 "prism/templates/ext/prism/api_node.c.erb"
5415#line 203 "prism/templates/ext/prism/api_node.c.erb"
5416 case PM_OPTIONAL_KEYWORD_PARAMETER_NODE: {
5433#line 239 "prism/templates/ext/prism/api_node.c.erb"
5434 assert(
cast->name != 0);
5438#line 253 "prism/templates/ext/prism/api_node.c.erb"
5439 argv[5] = pm_location_new(
cast->name_loc.start,
cast->name_loc.length, source, freeze);
5442#line 226 "prism/templates/ext/prism/api_node.c.erb"
5451#line 203 "prism/templates/ext/prism/api_node.c.erb"
5452 case PM_OPTIONAL_PARAMETER_NODE: {
5469#line 239 "prism/templates/ext/prism/api_node.c.erb"
5470 assert(
cast->name != 0);
5474#line 253 "prism/templates/ext/prism/api_node.c.erb"
5475 argv[5] = pm_location_new(
cast->name_loc.start,
cast->name_loc.length, source, freeze);
5478#line 253 "prism/templates/ext/prism/api_node.c.erb"
5479 argv[6] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
5482#line 226 "prism/templates/ext/prism/api_node.c.erb"
5491#line 203 "prism/templates/ext/prism/api_node.c.erb"
5509#line 226 "prism/templates/ext/prism/api_node.c.erb"
5513#line 226 "prism/templates/ext/prism/api_node.c.erb"
5517#line 253 "prism/templates/ext/prism/api_node.c.erb"
5518 argv[6] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
5526#line 203 "prism/templates/ext/prism/api_node.c.erb"
5527 case PM_PARAMETERS_NODE: {
5544#line 229 "prism/templates/ext/prism/api_node.c.erb"
5546 for (
size_t index = 0; index <
cast->requireds.size; index++) {
5552#line 229 "prism/templates/ext/prism/api_node.c.erb"
5554 for (
size_t index = 0; index <
cast->optionals.size; index++) {
5560#line 226 "prism/templates/ext/prism/api_node.c.erb"
5564#line 229 "prism/templates/ext/prism/api_node.c.erb"
5566 for (
size_t index = 0; index <
cast->posts.size; index++) {
5572#line 229 "prism/templates/ext/prism/api_node.c.erb"
5574 for (
size_t index = 0; index <
cast->keywords.size; index++) {
5580#line 226 "prism/templates/ext/prism/api_node.c.erb"
5584#line 226 "prism/templates/ext/prism/api_node.c.erb"
5593#line 203 "prism/templates/ext/prism/api_node.c.erb"
5594 case PM_PARENTHESES_NODE: {
5611#line 226 "prism/templates/ext/prism/api_node.c.erb"
5615#line 253 "prism/templates/ext/prism/api_node.c.erb"
5616 argv[5] = pm_location_new(
cast->opening_loc.start,
cast->opening_loc.length, source, freeze);
5619#line 253 "prism/templates/ext/prism/api_node.c.erb"
5620 argv[6] = pm_location_new(
cast->closing_loc.start,
cast->closing_loc.length, source, freeze);
5628#line 203 "prism/templates/ext/prism/api_node.c.erb"
5629 case PM_PINNED_EXPRESSION_NODE: {
5646#line 226 "prism/templates/ext/prism/api_node.c.erb"
5650#line 253 "prism/templates/ext/prism/api_node.c.erb"
5651 argv[5] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
5654#line 253 "prism/templates/ext/prism/api_node.c.erb"
5655 argv[6] = pm_location_new(
cast->lparen_loc.start,
cast->lparen_loc.length, source, freeze);
5658#line 253 "prism/templates/ext/prism/api_node.c.erb"
5659 argv[7] = pm_location_new(
cast->rparen_loc.start,
cast->rparen_loc.length, source, freeze);
5667#line 203 "prism/templates/ext/prism/api_node.c.erb"
5668 case PM_PINNED_VARIABLE_NODE: {
5685#line 226 "prism/templates/ext/prism/api_node.c.erb"
5689#line 253 "prism/templates/ext/prism/api_node.c.erb"
5690 argv[5] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
5698#line 203 "prism/templates/ext/prism/api_node.c.erb"
5699 case PM_POST_EXECUTION_NODE: {
5716#line 226 "prism/templates/ext/prism/api_node.c.erb"
5720#line 253 "prism/templates/ext/prism/api_node.c.erb"
5721 argv[5] = pm_location_new(
cast->keyword_loc.start,
cast->keyword_loc.length, source, freeze);
5724#line 253 "prism/templates/ext/prism/api_node.c.erb"
5725 argv[6] = pm_location_new(
cast->opening_loc.start,
cast->opening_loc.length, source, freeze);
5728#line 253 "prism/templates/ext/prism/api_node.c.erb"
5729 argv[7] = pm_location_new(
cast->closing_loc.start,
cast->closing_loc.length, source, freeze);
5737#line 203 "prism/templates/ext/prism/api_node.c.erb"
5738 case PM_PRE_EXECUTION_NODE: {
5755#line 226 "prism/templates/ext/prism/api_node.c.erb"
5759#line 253 "prism/templates/ext/prism/api_node.c.erb"
5760 argv[5] = pm_location_new(
cast->keyword_loc.start,
cast->keyword_loc.length, source, freeze);
5763#line 253 "prism/templates/ext/prism/api_node.c.erb"
5764 argv[6] = pm_location_new(
cast->opening_loc.start,
cast->opening_loc.length, source, freeze);
5767#line 253 "prism/templates/ext/prism/api_node.c.erb"
5768 argv[7] = pm_location_new(
cast->closing_loc.start,
cast->closing_loc.length, source, freeze);
5776#line 203 "prism/templates/ext/prism/api_node.c.erb"
5777 case PM_PROGRAM_NODE: {
5794#line 245 "prism/templates/ext/prism/api_node.c.erb"
5796 for (
size_t index = 0; index <
cast->locals.size; index++) {
5797 assert(
cast->locals.ids[index] != 0);
5803#line 226 "prism/templates/ext/prism/api_node.c.erb"
5812#line 203 "prism/templates/ext/prism/api_node.c.erb"
5813 case PM_RANGE_NODE: {
5830#line 226 "prism/templates/ext/prism/api_node.c.erb"
5834#line 226 "prism/templates/ext/prism/api_node.c.erb"
5838#line 253 "prism/templates/ext/prism/api_node.c.erb"
5839 argv[6] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
5847#line 203 "prism/templates/ext/prism/api_node.c.erb"
5848 case PM_RATIONAL_NODE: {
5865#line 265 "prism/templates/ext/prism/api_node.c.erb"
5866 argv[4] = pm_integer_new(&
cast->numerator);
5869#line 265 "prism/templates/ext/prism/api_node.c.erb"
5870 argv[5] = pm_integer_new(&
cast->denominator);
5878#line 203 "prism/templates/ext/prism/api_node.c.erb"
5879 case PM_REDO_NODE: {
5900#line 203 "prism/templates/ext/prism/api_node.c.erb"
5901 case PM_REGULAR_EXPRESSION_NODE: {
5918#line 253 "prism/templates/ext/prism/api_node.c.erb"
5919 argv[4] = pm_location_new(
cast->opening_loc.start,
cast->opening_loc.length, source, freeze);
5922#line 253 "prism/templates/ext/prism/api_node.c.erb"
5923 argv[5] = pm_location_new(
cast->content_loc.start,
cast->content_loc.length, source, freeze);
5926#line 253 "prism/templates/ext/prism/api_node.c.erb"
5927 argv[6] = pm_location_new(
cast->closing_loc.start,
cast->closing_loc.length, source, freeze);
5930#line 236 "prism/templates/ext/prism/api_node.c.erb"
5931 argv[7] = pm_string_new(&
cast->unescaped, encoding);
5939#line 203 "prism/templates/ext/prism/api_node.c.erb"
5940 case PM_REQUIRED_KEYWORD_PARAMETER_NODE: {
5957#line 239 "prism/templates/ext/prism/api_node.c.erb"
5958 assert(
cast->name != 0);
5962#line 253 "prism/templates/ext/prism/api_node.c.erb"
5963 argv[5] = pm_location_new(
cast->name_loc.start,
cast->name_loc.length, source, freeze);
5971#line 203 "prism/templates/ext/prism/api_node.c.erb"
5972 case PM_REQUIRED_PARAMETER_NODE: {
5989#line 239 "prism/templates/ext/prism/api_node.c.erb"
5990 assert(
cast->name != 0);
5999#line 203 "prism/templates/ext/prism/api_node.c.erb"
6000 case PM_RESCUE_MODIFIER_NODE: {
6017#line 226 "prism/templates/ext/prism/api_node.c.erb"
6021#line 253 "prism/templates/ext/prism/api_node.c.erb"
6022 argv[5] = pm_location_new(
cast->keyword_loc.start,
cast->keyword_loc.length, source, freeze);
6025#line 226 "prism/templates/ext/prism/api_node.c.erb"
6034#line 203 "prism/templates/ext/prism/api_node.c.erb"
6035 case PM_RESCUE_NODE: {
6052#line 253 "prism/templates/ext/prism/api_node.c.erb"
6053 argv[4] = pm_location_new(
cast->keyword_loc.start,
cast->keyword_loc.length, source, freeze);
6056#line 229 "prism/templates/ext/prism/api_node.c.erb"
6058 for (
size_t index = 0; index <
cast->exceptions.size; index++) {
6064#line 256 "prism/templates/ext/prism/api_node.c.erb"
6065 argv[6] =
cast->operator_loc.length == 0 ?
Qnil : pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
6068#line 226 "prism/templates/ext/prism/api_node.c.erb"
6072#line 256 "prism/templates/ext/prism/api_node.c.erb"
6073 argv[8] =
cast->then_keyword_loc.length == 0 ?
Qnil : pm_location_new(
cast->then_keyword_loc.start,
cast->then_keyword_loc.length, source, freeze);
6076#line 226 "prism/templates/ext/prism/api_node.c.erb"
6080#line 226 "prism/templates/ext/prism/api_node.c.erb"
6089#line 203 "prism/templates/ext/prism/api_node.c.erb"
6090 case PM_REST_PARAMETER_NODE: {
6110#line 256 "prism/templates/ext/prism/api_node.c.erb"
6111 argv[5] =
cast->name_loc.length == 0 ?
Qnil : pm_location_new(
cast->name_loc.start,
cast->name_loc.length, source, freeze);
6114#line 253 "prism/templates/ext/prism/api_node.c.erb"
6115 argv[6] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
6123#line 203 "prism/templates/ext/prism/api_node.c.erb"
6124 case PM_RETRY_NODE: {
6145#line 203 "prism/templates/ext/prism/api_node.c.erb"
6146 case PM_RETURN_NODE: {
6163#line 253 "prism/templates/ext/prism/api_node.c.erb"
6164 argv[4] = pm_location_new(
cast->keyword_loc.start,
cast->keyword_loc.length, source, freeze);
6167#line 226 "prism/templates/ext/prism/api_node.c.erb"
6176#line 203 "prism/templates/ext/prism/api_node.c.erb"
6177 case PM_SELF_NODE: {
6198#line 203 "prism/templates/ext/prism/api_node.c.erb"
6199 case PM_SHAREABLE_CONSTANT_NODE: {
6215#line 226 "prism/templates/ext/prism/api_node.c.erb"
6224#line 203 "prism/templates/ext/prism/api_node.c.erb"
6225 case PM_SINGLETON_CLASS_NODE: {
6242#line 245 "prism/templates/ext/prism/api_node.c.erb"
6244 for (
size_t index = 0; index <
cast->locals.size; index++) {
6245 assert(
cast->locals.ids[index] != 0);
6251#line 253 "prism/templates/ext/prism/api_node.c.erb"
6252 argv[5] = pm_location_new(
cast->class_keyword_loc.start,
cast->class_keyword_loc.length, source, freeze);
6255#line 253 "prism/templates/ext/prism/api_node.c.erb"
6256 argv[6] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
6259#line 226 "prism/templates/ext/prism/api_node.c.erb"
6263#line 226 "prism/templates/ext/prism/api_node.c.erb"
6267#line 253 "prism/templates/ext/prism/api_node.c.erb"
6268 argv[9] = pm_location_new(
cast->end_keyword_loc.start,
cast->end_keyword_loc.length, source, freeze);
6276#line 203 "prism/templates/ext/prism/api_node.c.erb"
6277 case PM_SOURCE_ENCODING_NODE: {
6298#line 203 "prism/templates/ext/prism/api_node.c.erb"
6299 case PM_SOURCE_FILE_NODE: {
6316#line 236 "prism/templates/ext/prism/api_node.c.erb"
6317 argv[4] = pm_string_new(&
cast->filepath, encoding);
6325#line 203 "prism/templates/ext/prism/api_node.c.erb"
6326 case PM_SOURCE_LINE_NODE: {
6347#line 203 "prism/templates/ext/prism/api_node.c.erb"
6348 case PM_SPLAT_NODE: {
6365#line 253 "prism/templates/ext/prism/api_node.c.erb"
6366 argv[4] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
6369#line 226 "prism/templates/ext/prism/api_node.c.erb"
6378#line 203 "prism/templates/ext/prism/api_node.c.erb"
6379 case PM_STATEMENTS_NODE: {
6396#line 229 "prism/templates/ext/prism/api_node.c.erb"
6398 for (
size_t index = 0; index <
cast->body.size; index++) {
6409#line 203 "prism/templates/ext/prism/api_node.c.erb"
6410 case PM_STRING_NODE: {
6427#line 256 "prism/templates/ext/prism/api_node.c.erb"
6428 argv[4] =
cast->opening_loc.length == 0 ?
Qnil : pm_location_new(
cast->opening_loc.start,
cast->opening_loc.length, source, freeze);
6431#line 253 "prism/templates/ext/prism/api_node.c.erb"
6432 argv[5] = pm_location_new(
cast->content_loc.start,
cast->content_loc.length, source, freeze);
6435#line 256 "prism/templates/ext/prism/api_node.c.erb"
6436 argv[6] =
cast->closing_loc.length == 0 ?
Qnil : pm_location_new(
cast->closing_loc.start,
cast->closing_loc.length, source, freeze);
6439#line 236 "prism/templates/ext/prism/api_node.c.erb"
6440 argv[7] = pm_string_new(&
cast->unescaped, encoding);
6448#line 203 "prism/templates/ext/prism/api_node.c.erb"
6449 case PM_SUPER_NODE: {
6466#line 253 "prism/templates/ext/prism/api_node.c.erb"
6467 argv[4] = pm_location_new(
cast->keyword_loc.start,
cast->keyword_loc.length, source, freeze);
6470#line 256 "prism/templates/ext/prism/api_node.c.erb"
6471 argv[5] =
cast->lparen_loc.length == 0 ?
Qnil : pm_location_new(
cast->lparen_loc.start,
cast->lparen_loc.length, source, freeze);
6474#line 226 "prism/templates/ext/prism/api_node.c.erb"
6478#line 256 "prism/templates/ext/prism/api_node.c.erb"
6479 argv[7] =
cast->rparen_loc.length == 0 ?
Qnil : pm_location_new(
cast->rparen_loc.start,
cast->rparen_loc.length, source, freeze);
6482#line 226 "prism/templates/ext/prism/api_node.c.erb"
6491#line 203 "prism/templates/ext/prism/api_node.c.erb"
6492 case PM_SYMBOL_NODE: {
6509#line 256 "prism/templates/ext/prism/api_node.c.erb"
6510 argv[4] =
cast->opening_loc.length == 0 ?
Qnil : pm_location_new(
cast->opening_loc.start,
cast->opening_loc.length, source, freeze);
6513#line 253 "prism/templates/ext/prism/api_node.c.erb"
6514 argv[5] = pm_location_new(
cast->content_loc.start,
cast->content_loc.length, source, freeze);
6517#line 256 "prism/templates/ext/prism/api_node.c.erb"
6518 argv[6] =
cast->closing_loc.length == 0 ?
Qnil : pm_location_new(
cast->closing_loc.start,
cast->closing_loc.length, source, freeze);
6521#line 236 "prism/templates/ext/prism/api_node.c.erb"
6522 argv[7] = pm_string_new(&
cast->unescaped, encoding);
6530#line 203 "prism/templates/ext/prism/api_node.c.erb"
6531 case PM_TRUE_NODE: {
6552#line 203 "prism/templates/ext/prism/api_node.c.erb"
6553 case PM_UNDEF_NODE: {
6570#line 229 "prism/templates/ext/prism/api_node.c.erb"
6572 for (
size_t index = 0; index <
cast->names.size; index++) {
6578#line 253 "prism/templates/ext/prism/api_node.c.erb"
6579 argv[5] = pm_location_new(
cast->keyword_loc.start,
cast->keyword_loc.length, source, freeze);
6587#line 203 "prism/templates/ext/prism/api_node.c.erb"
6588 case PM_UNLESS_NODE: {
6605#line 253 "prism/templates/ext/prism/api_node.c.erb"
6606 argv[4] = pm_location_new(
cast->unless_keyword_loc.start,
cast->unless_keyword_loc.length, source, freeze);
6609#line 226 "prism/templates/ext/prism/api_node.c.erb"
6613#line 256 "prism/templates/ext/prism/api_node.c.erb"
6614 argv[6] =
cast->then_keyword_loc.length == 0 ?
Qnil : pm_location_new(
cast->then_keyword_loc.start,
cast->then_keyword_loc.length, source, freeze);
6617#line 226 "prism/templates/ext/prism/api_node.c.erb"
6621#line 226 "prism/templates/ext/prism/api_node.c.erb"
6625#line 256 "prism/templates/ext/prism/api_node.c.erb"
6626 argv[9] =
cast->end_keyword_loc.length == 0 ?
Qnil : pm_location_new(
cast->end_keyword_loc.start,
cast->end_keyword_loc.length, source, freeze);
6634#line 203 "prism/templates/ext/prism/api_node.c.erb"
6635 case PM_UNTIL_NODE: {
6652#line 253 "prism/templates/ext/prism/api_node.c.erb"
6653 argv[4] = pm_location_new(
cast->until_keyword_loc.start,
cast->until_keyword_loc.length, source, freeze);
6656#line 256 "prism/templates/ext/prism/api_node.c.erb"
6657 argv[5] =
cast->do_keyword_loc.length == 0 ?
Qnil : pm_location_new(
cast->do_keyword_loc.start,
cast->do_keyword_loc.length, source, freeze);
6660#line 256 "prism/templates/ext/prism/api_node.c.erb"
6661 argv[6] =
cast->end_keyword_loc.length == 0 ?
Qnil : pm_location_new(
cast->end_keyword_loc.start,
cast->end_keyword_loc.length, source, freeze);
6664#line 226 "prism/templates/ext/prism/api_node.c.erb"
6668#line 226 "prism/templates/ext/prism/api_node.c.erb"
6677#line 203 "prism/templates/ext/prism/api_node.c.erb"
6678 case PM_WHEN_NODE: {
6695#line 253 "prism/templates/ext/prism/api_node.c.erb"
6696 argv[4] = pm_location_new(
cast->when_keyword_loc.start,
cast->when_keyword_loc.length, source, freeze);
6699#line 229 "prism/templates/ext/prism/api_node.c.erb"
6701 for (
size_t index = 0; index <
cast->conditions.size; index++) {
6707#line 256 "prism/templates/ext/prism/api_node.c.erb"
6708 argv[6] =
cast->then_keyword_loc.length == 0 ?
Qnil : pm_location_new(
cast->then_keyword_loc.start,
cast->then_keyword_loc.length, source, freeze);
6711#line 226 "prism/templates/ext/prism/api_node.c.erb"
6720#line 203 "prism/templates/ext/prism/api_node.c.erb"
6721 case PM_WHILE_NODE: {
6738#line 253 "prism/templates/ext/prism/api_node.c.erb"
6739 argv[4] = pm_location_new(
cast->while_keyword_loc.start,
cast->while_keyword_loc.length, source, freeze);
6742#line 256 "prism/templates/ext/prism/api_node.c.erb"
6743 argv[5] =
cast->do_keyword_loc.length == 0 ?
Qnil : pm_location_new(
cast->do_keyword_loc.start,
cast->do_keyword_loc.length, source, freeze);
6746#line 256 "prism/templates/ext/prism/api_node.c.erb"
6747 argv[6] =
cast->end_keyword_loc.length == 0 ?
Qnil : pm_location_new(
cast->end_keyword_loc.start,
cast->end_keyword_loc.length, source, freeze);
6750#line 226 "prism/templates/ext/prism/api_node.c.erb"
6754#line 226 "prism/templates/ext/prism/api_node.c.erb"
6763#line 203 "prism/templates/ext/prism/api_node.c.erb"
6764 case PM_X_STRING_NODE: {
6781#line 253 "prism/templates/ext/prism/api_node.c.erb"
6782 argv[4] = pm_location_new(
cast->opening_loc.start,
cast->opening_loc.length, source, freeze);
6785#line 253 "prism/templates/ext/prism/api_node.c.erb"
6786 argv[5] = pm_location_new(
cast->content_loc.start,
cast->content_loc.length, source, freeze);
6789#line 253 "prism/templates/ext/prism/api_node.c.erb"
6790 argv[6] = pm_location_new(
cast->closing_loc.start,
cast->closing_loc.length, source, freeze);
6793#line 236 "prism/templates/ext/prism/api_node.c.erb"
6794 argv[7] = pm_string_new(&
cast->unescaped, encoding);
6802#line 203 "prism/templates/ext/prism/api_node.c.erb"
6803 case PM_YIELD_NODE: {
6820#line 253 "prism/templates/ext/prism/api_node.c.erb"
6821 argv[4] = pm_location_new(
cast->keyword_loc.start,
cast->keyword_loc.length, source, freeze);
6824#line 256 "prism/templates/ext/prism/api_node.c.erb"
6825 argv[5] =
cast->lparen_loc.length == 0 ?
Qnil : pm_location_new(
cast->lparen_loc.start,
cast->lparen_loc.length, source, freeze);
6828#line 226 "prism/templates/ext/prism/api_node.c.erb"
6832#line 256 "prism/templates/ext/prism/api_node.c.erb"
6833 argv[7] =
cast->rparen_loc.length == 0 ?
Qnil : pm_location_new(
cast->rparen_loc.start,
cast->rparen_loc.length, source, freeze);
6847 pm_arena_free(node_arena);
6852Init_prism_api_node(
void) {
6853 rb_cPrismAliasGlobalVariableNode = rb_define_class_under(rb_cPrism,
"AliasGlobalVariableNode", rb_cPrismNode);
6854 rb_cPrismAliasMethodNode = rb_define_class_under(rb_cPrism,
"AliasMethodNode", rb_cPrismNode);
6855 rb_cPrismAlternationPatternNode = rb_define_class_under(rb_cPrism,
"AlternationPatternNode", rb_cPrismNode);
6856 rb_cPrismAndNode = rb_define_class_under(rb_cPrism,
"AndNode", rb_cPrismNode);
6857 rb_cPrismArgumentsNode = rb_define_class_under(rb_cPrism,
"ArgumentsNode", rb_cPrismNode);
6858 rb_cPrismArrayNode = rb_define_class_under(rb_cPrism,
"ArrayNode", rb_cPrismNode);
6859 rb_cPrismArrayPatternNode = rb_define_class_under(rb_cPrism,
"ArrayPatternNode", rb_cPrismNode);
6860 rb_cPrismAssocNode = rb_define_class_under(rb_cPrism,
"AssocNode", rb_cPrismNode);
6861 rb_cPrismAssocSplatNode = rb_define_class_under(rb_cPrism,
"AssocSplatNode", rb_cPrismNode);
6862 rb_cPrismBackReferenceReadNode = rb_define_class_under(rb_cPrism,
"BackReferenceReadNode", rb_cPrismNode);
6863 rb_cPrismBeginNode = rb_define_class_under(rb_cPrism,
"BeginNode", rb_cPrismNode);
6864 rb_cPrismBlockArgumentNode = rb_define_class_under(rb_cPrism,
"BlockArgumentNode", rb_cPrismNode);
6865 rb_cPrismBlockLocalVariableNode = rb_define_class_under(rb_cPrism,
"BlockLocalVariableNode", rb_cPrismNode);
6866 rb_cPrismBlockNode = rb_define_class_under(rb_cPrism,
"BlockNode", rb_cPrismNode);
6867 rb_cPrismBlockParameterNode = rb_define_class_under(rb_cPrism,
"BlockParameterNode", rb_cPrismNode);
6868 rb_cPrismBlockParametersNode = rb_define_class_under(rb_cPrism,
"BlockParametersNode", rb_cPrismNode);
6869 rb_cPrismBreakNode = rb_define_class_under(rb_cPrism,
"BreakNode", rb_cPrismNode);
6870 rb_cPrismCallAndWriteNode = rb_define_class_under(rb_cPrism,
"CallAndWriteNode", rb_cPrismNode);
6871 rb_cPrismCallNode = rb_define_class_under(rb_cPrism,
"CallNode", rb_cPrismNode);
6872 rb_cPrismCallOperatorWriteNode = rb_define_class_under(rb_cPrism,
"CallOperatorWriteNode", rb_cPrismNode);
6873 rb_cPrismCallOrWriteNode = rb_define_class_under(rb_cPrism,
"CallOrWriteNode", rb_cPrismNode);
6874 rb_cPrismCallTargetNode = rb_define_class_under(rb_cPrism,
"CallTargetNode", rb_cPrismNode);
6875 rb_cPrismCapturePatternNode = rb_define_class_under(rb_cPrism,
"CapturePatternNode", rb_cPrismNode);
6876 rb_cPrismCaseMatchNode = rb_define_class_under(rb_cPrism,
"CaseMatchNode", rb_cPrismNode);
6877 rb_cPrismCaseNode = rb_define_class_under(rb_cPrism,
"CaseNode", rb_cPrismNode);
6878 rb_cPrismClassNode = rb_define_class_under(rb_cPrism,
"ClassNode", rb_cPrismNode);
6879 rb_cPrismClassVariableAndWriteNode = rb_define_class_under(rb_cPrism,
"ClassVariableAndWriteNode", rb_cPrismNode);
6880 rb_cPrismClassVariableOperatorWriteNode = rb_define_class_under(rb_cPrism,
"ClassVariableOperatorWriteNode", rb_cPrismNode);
6881 rb_cPrismClassVariableOrWriteNode = rb_define_class_under(rb_cPrism,
"ClassVariableOrWriteNode", rb_cPrismNode);
6882 rb_cPrismClassVariableReadNode = rb_define_class_under(rb_cPrism,
"ClassVariableReadNode", rb_cPrismNode);
6883 rb_cPrismClassVariableTargetNode = rb_define_class_under(rb_cPrism,
"ClassVariableTargetNode", rb_cPrismNode);
6884 rb_cPrismClassVariableWriteNode = rb_define_class_under(rb_cPrism,
"ClassVariableWriteNode", rb_cPrismNode);
6885 rb_cPrismConstantAndWriteNode = rb_define_class_under(rb_cPrism,
"ConstantAndWriteNode", rb_cPrismNode);
6886 rb_cPrismConstantOperatorWriteNode = rb_define_class_under(rb_cPrism,
"ConstantOperatorWriteNode", rb_cPrismNode);
6887 rb_cPrismConstantOrWriteNode = rb_define_class_under(rb_cPrism,
"ConstantOrWriteNode", rb_cPrismNode);
6888 rb_cPrismConstantPathAndWriteNode = rb_define_class_under(rb_cPrism,
"ConstantPathAndWriteNode", rb_cPrismNode);
6889 rb_cPrismConstantPathNode = rb_define_class_under(rb_cPrism,
"ConstantPathNode", rb_cPrismNode);
6890 rb_cPrismConstantPathOperatorWriteNode = rb_define_class_under(rb_cPrism,
"ConstantPathOperatorWriteNode", rb_cPrismNode);
6891 rb_cPrismConstantPathOrWriteNode = rb_define_class_under(rb_cPrism,
"ConstantPathOrWriteNode", rb_cPrismNode);
6892 rb_cPrismConstantPathTargetNode = rb_define_class_under(rb_cPrism,
"ConstantPathTargetNode", rb_cPrismNode);
6893 rb_cPrismConstantPathWriteNode = rb_define_class_under(rb_cPrism,
"ConstantPathWriteNode", rb_cPrismNode);
6894 rb_cPrismConstantReadNode = rb_define_class_under(rb_cPrism,
"ConstantReadNode", rb_cPrismNode);
6895 rb_cPrismConstantTargetNode = rb_define_class_under(rb_cPrism,
"ConstantTargetNode", rb_cPrismNode);
6896 rb_cPrismConstantWriteNode = rb_define_class_under(rb_cPrism,
"ConstantWriteNode", rb_cPrismNode);
6897 rb_cPrismDefNode = rb_define_class_under(rb_cPrism,
"DefNode", rb_cPrismNode);
6898 rb_cPrismDefinedNode = rb_define_class_under(rb_cPrism,
"DefinedNode", rb_cPrismNode);
6899 rb_cPrismElseNode = rb_define_class_under(rb_cPrism,
"ElseNode", rb_cPrismNode);
6900 rb_cPrismEmbeddedStatementsNode = rb_define_class_under(rb_cPrism,
"EmbeddedStatementsNode", rb_cPrismNode);
6901 rb_cPrismEmbeddedVariableNode = rb_define_class_under(rb_cPrism,
"EmbeddedVariableNode", rb_cPrismNode);
6902 rb_cPrismEnsureNode = rb_define_class_under(rb_cPrism,
"EnsureNode", rb_cPrismNode);
6903 rb_cPrismErrorRecoveryNode = rb_define_class_under(rb_cPrism,
"ErrorRecoveryNode", rb_cPrismNode);
6904 rb_cPrismFalseNode = rb_define_class_under(rb_cPrism,
"FalseNode", rb_cPrismNode);
6905 rb_cPrismFindPatternNode = rb_define_class_under(rb_cPrism,
"FindPatternNode", rb_cPrismNode);
6906 rb_cPrismFlipFlopNode = rb_define_class_under(rb_cPrism,
"FlipFlopNode", rb_cPrismNode);
6907 rb_cPrismFloatNode = rb_define_class_under(rb_cPrism,
"FloatNode", rb_cPrismNode);
6908 rb_cPrismForNode = rb_define_class_under(rb_cPrism,
"ForNode", rb_cPrismNode);
6909 rb_cPrismForwardingArgumentsNode = rb_define_class_under(rb_cPrism,
"ForwardingArgumentsNode", rb_cPrismNode);
6910 rb_cPrismForwardingParameterNode = rb_define_class_under(rb_cPrism,
"ForwardingParameterNode", rb_cPrismNode);
6911 rb_cPrismForwardingSuperNode = rb_define_class_under(rb_cPrism,
"ForwardingSuperNode", rb_cPrismNode);
6912 rb_cPrismGlobalVariableAndWriteNode = rb_define_class_under(rb_cPrism,
"GlobalVariableAndWriteNode", rb_cPrismNode);
6913 rb_cPrismGlobalVariableOperatorWriteNode = rb_define_class_under(rb_cPrism,
"GlobalVariableOperatorWriteNode", rb_cPrismNode);
6914 rb_cPrismGlobalVariableOrWriteNode = rb_define_class_under(rb_cPrism,
"GlobalVariableOrWriteNode", rb_cPrismNode);
6915 rb_cPrismGlobalVariableReadNode = rb_define_class_under(rb_cPrism,
"GlobalVariableReadNode", rb_cPrismNode);
6916 rb_cPrismGlobalVariableTargetNode = rb_define_class_under(rb_cPrism,
"GlobalVariableTargetNode", rb_cPrismNode);
6917 rb_cPrismGlobalVariableWriteNode = rb_define_class_under(rb_cPrism,
"GlobalVariableWriteNode", rb_cPrismNode);
6918 rb_cPrismHashNode = rb_define_class_under(rb_cPrism,
"HashNode", rb_cPrismNode);
6919 rb_cPrismHashPatternNode = rb_define_class_under(rb_cPrism,
"HashPatternNode", rb_cPrismNode);
6920 rb_cPrismIfNode = rb_define_class_under(rb_cPrism,
"IfNode", rb_cPrismNode);
6921 rb_cPrismImaginaryNode = rb_define_class_under(rb_cPrism,
"ImaginaryNode", rb_cPrismNode);
6922 rb_cPrismImplicitNode = rb_define_class_under(rb_cPrism,
"ImplicitNode", rb_cPrismNode);
6923 rb_cPrismImplicitRestNode = rb_define_class_under(rb_cPrism,
"ImplicitRestNode", rb_cPrismNode);
6924 rb_cPrismInNode = rb_define_class_under(rb_cPrism,
"InNode", rb_cPrismNode);
6925 rb_cPrismIndexAndWriteNode = rb_define_class_under(rb_cPrism,
"IndexAndWriteNode", rb_cPrismNode);
6926 rb_cPrismIndexOperatorWriteNode = rb_define_class_under(rb_cPrism,
"IndexOperatorWriteNode", rb_cPrismNode);
6927 rb_cPrismIndexOrWriteNode = rb_define_class_under(rb_cPrism,
"IndexOrWriteNode", rb_cPrismNode);
6928 rb_cPrismIndexTargetNode = rb_define_class_under(rb_cPrism,
"IndexTargetNode", rb_cPrismNode);
6929 rb_cPrismInstanceVariableAndWriteNode = rb_define_class_under(rb_cPrism,
"InstanceVariableAndWriteNode", rb_cPrismNode);
6930 rb_cPrismInstanceVariableOperatorWriteNode = rb_define_class_under(rb_cPrism,
"InstanceVariableOperatorWriteNode", rb_cPrismNode);
6931 rb_cPrismInstanceVariableOrWriteNode = rb_define_class_under(rb_cPrism,
"InstanceVariableOrWriteNode", rb_cPrismNode);
6932 rb_cPrismInstanceVariableReadNode = rb_define_class_under(rb_cPrism,
"InstanceVariableReadNode", rb_cPrismNode);
6933 rb_cPrismInstanceVariableTargetNode = rb_define_class_under(rb_cPrism,
"InstanceVariableTargetNode", rb_cPrismNode);
6934 rb_cPrismInstanceVariableWriteNode = rb_define_class_under(rb_cPrism,
"InstanceVariableWriteNode", rb_cPrismNode);
6935 rb_cPrismIntegerNode = rb_define_class_under(rb_cPrism,
"IntegerNode", rb_cPrismNode);
6936 rb_cPrismInterpolatedMatchLastLineNode = rb_define_class_under(rb_cPrism,
"InterpolatedMatchLastLineNode", rb_cPrismNode);
6937 rb_cPrismInterpolatedRegularExpressionNode = rb_define_class_under(rb_cPrism,
"InterpolatedRegularExpressionNode", rb_cPrismNode);
6938 rb_cPrismInterpolatedStringNode = rb_define_class_under(rb_cPrism,
"InterpolatedStringNode", rb_cPrismNode);
6939 rb_cPrismInterpolatedSymbolNode = rb_define_class_under(rb_cPrism,
"InterpolatedSymbolNode", rb_cPrismNode);
6940 rb_cPrismInterpolatedXStringNode = rb_define_class_under(rb_cPrism,
"InterpolatedXStringNode", rb_cPrismNode);
6941 rb_cPrismItLocalVariableReadNode = rb_define_class_under(rb_cPrism,
"ItLocalVariableReadNode", rb_cPrismNode);
6942 rb_cPrismItParametersNode = rb_define_class_under(rb_cPrism,
"ItParametersNode", rb_cPrismNode);
6943 rb_cPrismKeywordHashNode = rb_define_class_under(rb_cPrism,
"KeywordHashNode", rb_cPrismNode);
6944 rb_cPrismKeywordRestParameterNode = rb_define_class_under(rb_cPrism,
"KeywordRestParameterNode", rb_cPrismNode);
6945 rb_cPrismLambdaNode = rb_define_class_under(rb_cPrism,
"LambdaNode", rb_cPrismNode);
6946 rb_cPrismLocalVariableAndWriteNode = rb_define_class_under(rb_cPrism,
"LocalVariableAndWriteNode", rb_cPrismNode);
6947 rb_cPrismLocalVariableOperatorWriteNode = rb_define_class_under(rb_cPrism,
"LocalVariableOperatorWriteNode", rb_cPrismNode);
6948 rb_cPrismLocalVariableOrWriteNode = rb_define_class_under(rb_cPrism,
"LocalVariableOrWriteNode", rb_cPrismNode);
6949 rb_cPrismLocalVariableReadNode = rb_define_class_under(rb_cPrism,
"LocalVariableReadNode", rb_cPrismNode);
6950 rb_cPrismLocalVariableTargetNode = rb_define_class_under(rb_cPrism,
"LocalVariableTargetNode", rb_cPrismNode);
6951 rb_cPrismLocalVariableWriteNode = rb_define_class_under(rb_cPrism,
"LocalVariableWriteNode", rb_cPrismNode);
6952 rb_cPrismMatchLastLineNode = rb_define_class_under(rb_cPrism,
"MatchLastLineNode", rb_cPrismNode);
6953 rb_cPrismMatchPredicateNode = rb_define_class_under(rb_cPrism,
"MatchPredicateNode", rb_cPrismNode);
6954 rb_cPrismMatchRequiredNode = rb_define_class_under(rb_cPrism,
"MatchRequiredNode", rb_cPrismNode);
6955 rb_cPrismMatchWriteNode = rb_define_class_under(rb_cPrism,
"MatchWriteNode", rb_cPrismNode);
6956 rb_cPrismModuleNode = rb_define_class_under(rb_cPrism,
"ModuleNode", rb_cPrismNode);
6957 rb_cPrismMultiTargetNode = rb_define_class_under(rb_cPrism,
"MultiTargetNode", rb_cPrismNode);
6958 rb_cPrismMultiWriteNode = rb_define_class_under(rb_cPrism,
"MultiWriteNode", rb_cPrismNode);
6959 rb_cPrismNextNode = rb_define_class_under(rb_cPrism,
"NextNode", rb_cPrismNode);
6960 rb_cPrismNilNode = rb_define_class_under(rb_cPrism,
"NilNode", rb_cPrismNode);
6961 rb_cPrismNoBlockParameterNode = rb_define_class_under(rb_cPrism,
"NoBlockParameterNode", rb_cPrismNode);
6962 rb_cPrismNoKeywordsParameterNode = rb_define_class_under(rb_cPrism,
"NoKeywordsParameterNode", rb_cPrismNode);
6963 rb_cPrismNumberedParametersNode = rb_define_class_under(rb_cPrism,
"NumberedParametersNode", rb_cPrismNode);
6964 rb_cPrismNumberedReferenceReadNode = rb_define_class_under(rb_cPrism,
"NumberedReferenceReadNode", rb_cPrismNode);
6965 rb_cPrismOptionalKeywordParameterNode = rb_define_class_under(rb_cPrism,
"OptionalKeywordParameterNode", rb_cPrismNode);
6966 rb_cPrismOptionalParameterNode = rb_define_class_under(rb_cPrism,
"OptionalParameterNode", rb_cPrismNode);
6967 rb_cPrismOrNode = rb_define_class_under(rb_cPrism,
"OrNode", rb_cPrismNode);
6968 rb_cPrismParametersNode = rb_define_class_under(rb_cPrism,
"ParametersNode", rb_cPrismNode);
6969 rb_cPrismParenthesesNode = rb_define_class_under(rb_cPrism,
"ParenthesesNode", rb_cPrismNode);
6970 rb_cPrismPinnedExpressionNode = rb_define_class_under(rb_cPrism,
"PinnedExpressionNode", rb_cPrismNode);
6971 rb_cPrismPinnedVariableNode = rb_define_class_under(rb_cPrism,
"PinnedVariableNode", rb_cPrismNode);
6972 rb_cPrismPostExecutionNode = rb_define_class_under(rb_cPrism,
"PostExecutionNode", rb_cPrismNode);
6973 rb_cPrismPreExecutionNode = rb_define_class_under(rb_cPrism,
"PreExecutionNode", rb_cPrismNode);
6974 rb_cPrismProgramNode = rb_define_class_under(rb_cPrism,
"ProgramNode", rb_cPrismNode);
6975 rb_cPrismRangeNode = rb_define_class_under(rb_cPrism,
"RangeNode", rb_cPrismNode);
6976 rb_cPrismRationalNode = rb_define_class_under(rb_cPrism,
"RationalNode", rb_cPrismNode);
6977 rb_cPrismRedoNode = rb_define_class_under(rb_cPrism,
"RedoNode", rb_cPrismNode);
6978 rb_cPrismRegularExpressionNode = rb_define_class_under(rb_cPrism,
"RegularExpressionNode", rb_cPrismNode);
6979 rb_cPrismRequiredKeywordParameterNode = rb_define_class_under(rb_cPrism,
"RequiredKeywordParameterNode", rb_cPrismNode);
6980 rb_cPrismRequiredParameterNode = rb_define_class_under(rb_cPrism,
"RequiredParameterNode", rb_cPrismNode);
6981 rb_cPrismRescueModifierNode = rb_define_class_under(rb_cPrism,
"RescueModifierNode", rb_cPrismNode);
6982 rb_cPrismRescueNode = rb_define_class_under(rb_cPrism,
"RescueNode", rb_cPrismNode);
6983 rb_cPrismRestParameterNode = rb_define_class_under(rb_cPrism,
"RestParameterNode", rb_cPrismNode);
6984 rb_cPrismRetryNode = rb_define_class_under(rb_cPrism,
"RetryNode", rb_cPrismNode);
6985 rb_cPrismReturnNode = rb_define_class_under(rb_cPrism,
"ReturnNode", rb_cPrismNode);
6986 rb_cPrismSelfNode = rb_define_class_under(rb_cPrism,
"SelfNode", rb_cPrismNode);
6987 rb_cPrismShareableConstantNode = rb_define_class_under(rb_cPrism,
"ShareableConstantNode", rb_cPrismNode);
6988 rb_cPrismSingletonClassNode = rb_define_class_under(rb_cPrism,
"SingletonClassNode", rb_cPrismNode);
6989 rb_cPrismSourceEncodingNode = rb_define_class_under(rb_cPrism,
"SourceEncodingNode", rb_cPrismNode);
6990 rb_cPrismSourceFileNode = rb_define_class_under(rb_cPrism,
"SourceFileNode", rb_cPrismNode);
6991 rb_cPrismSourceLineNode = rb_define_class_under(rb_cPrism,
"SourceLineNode", rb_cPrismNode);
6992 rb_cPrismSplatNode = rb_define_class_under(rb_cPrism,
"SplatNode", rb_cPrismNode);
6993 rb_cPrismStatementsNode = rb_define_class_under(rb_cPrism,
"StatementsNode", rb_cPrismNode);
6994 rb_cPrismStringNode = rb_define_class_under(rb_cPrism,
"StringNode", rb_cPrismNode);
6995 rb_cPrismSuperNode = rb_define_class_under(rb_cPrism,
"SuperNode", rb_cPrismNode);
6996 rb_cPrismSymbolNode = rb_define_class_under(rb_cPrism,
"SymbolNode", rb_cPrismNode);
6997 rb_cPrismTrueNode = rb_define_class_under(rb_cPrism,
"TrueNode", rb_cPrismNode);
6998 rb_cPrismUndefNode = rb_define_class_under(rb_cPrism,
"UndefNode", rb_cPrismNode);
6999 rb_cPrismUnlessNode = rb_define_class_under(rb_cPrism,
"UnlessNode", rb_cPrismNode);
7000 rb_cPrismUntilNode = rb_define_class_under(rb_cPrism,
"UntilNode", rb_cPrismNode);
7001 rb_cPrismWhenNode = rb_define_class_under(rb_cPrism,
"WhenNode", rb_cPrismNode);
7002 rb_cPrismWhileNode = rb_define_class_under(rb_cPrism,
"WhileNode", rb_cPrismNode);
7003 rb_cPrismXStringNode = rb_define_class_under(rb_cPrism,
"XStringNode", rb_cPrismNode);
7004 rb_cPrismYieldNode = rb_define_class_under(rb_cPrism,
"YieldNode", rb_cPrismNode);
#define PRISM_ALIGNOF
Get the alignment requirement of a type.
static PRISM_INLINE size_t pm_constant_id_index(pm_constant_id_t constant_id)
Returns the index of the constant with the given id among the constants of the parser that produced i...
#define INT2FIX
Old name of RB_INT2FIX.
#define ID2SYM
Old name of RB_ID2SYM.
#define ULONG2NUM
Old name of RB_ULONG2NUM.
#define LONG2FIX
Old name of RB_INT2FIX.
#define LONG2NUM
Old name of RB_LONG2NUM.
#define ULL2NUM
Old name of RB_ULL2NUM.
#define Qnil
Old name of RUBY_Qnil.
#define DBL2NUM
Old name of rb_float_new.
#define UINT2NUM
Old name of RB_UINT2NUM.
VALUE rb_eRuntimeError
RuntimeError exception.
VALUE rb_class_new_instance(int argc, const VALUE *argv, VALUE klass)
Allocates, then initialises an instance of the given class.
VALUE rb_obj_freeze(VALUE obj)
Same as RB_OBJ_FREEZE(), but returns the given object.
VALUE rb_funcall(VALUE recv, ID mid, int n,...)
Calls a method.
VALUE rb_ary_new_capa(rb_len_t capa)
Identical to rb_ary_new(), except it additionally specifies how many rooms of objects it should alloc...
VALUE rb_ary_new(void)
Allocates a new, empty array.
VALUE rb_ary_pop(VALUE ary)
Destructively deletes an element from the end of the passed array and returns what was deleted.
VALUE rb_ary_push(VALUE ary, VALUE elem)
Special case of rb_ary_cat() that it adds only one element.
#define rb_str_new(str, len)
Allocates an instance of rb_cString.
VALUE rb_str_intern(VALUE str)
Identical to rb_to_symbol(), except it assumes the receiver being an instance of RString.
static ID rb_intern_const(const char *str)
This is a "tiny optimisation" over rb_intern().
VALUE type(ANYARGS)
ANYARGS-ed function type.
T * cast(pm_node_t *node) noexcept
Cast the given node, which must not be null and must be of the given struct, to that struct.
std::string_view slice(const pm_parser_t *parser PRISM_LIFETIMEBOUND, pm_location_t location) noexcept
The bytes of source that the given location covers.
#define RARRAY_AREF(a, i)
References an object in an array.
ClassVariableAndWriteNode.
ClassVariableOperatorWriteNode.
ClassVariableOrWriteNode.
ConstantOperatorWriteNode.
ConstantPathAndWriteNode.
ConstantPathOperatorWriteNode.
GlobalVariableAndWriteNode.
GlobalVariableOperatorWriteNode.
GlobalVariableOrWriteNode.
GlobalVariableTargetNode.
InstanceVariableAndWriteNode.
InstanceVariableOperatorWriteNode.
InstanceVariableOrWriteNode.
InstanceVariableReadNode.
InstanceVariableTargetNode.
InstanceVariableWriteNode.
A structure represents an arbitrary-sized integer.
size_t length
The number of allocated values.
uint32_t value
Embedded value for small integer.
uint32_t * values
List of 32-bit integers.
bool negative
Whether or not the integer is negative.
InterpolatedMatchLastLineNode.
InterpolatedRegularExpressionNode.
KeywordRestParameterNode.
A list of offsets of the start of lines in a string.
uint32_t * offsets
The list of offsets.
size_t size
The number of offsets in the list.
LocalVariableAndWriteNode.
LocalVariableOperatorWriteNode.
LocalVariableOrWriteNode.
uint32_t start
The offset of the location from the start of the source.
uint32_t length
The length of the location.
This is the base structure that represents a node in the syntax tree.
uint32_t node_id
The unique identifier for this node, which is deterministic based on the source.
pm_node_flags_t flags
This represents any flags on the node.
pm_location_t location
This is the location of the node in the source.
NumberedReferenceReadNode.
OptionalKeywordParameterNode.
RequiredKeywordParameterNode.
A view of a sequence of bytes.
This struct represents a token in the Ruby source.
uintptr_t ID
Type that represents a Ruby identifier such as a variable name.
uintptr_t VALUE
Type that represents a Ruby object.