9#line 2 "prism/templates/ext/prism/api_node.c.erb"
10#include "prism/extension.h"
12#include "prism/internal/allocator.h"
13#include "prism/internal/arena.h"
14#include "prism/internal/assert.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));
216 if (value <= LLONG_MAX)
return LL2NUM(-(
long long) value);
220 return rb_integer_unpack(words, length,
sizeof(uint32_t), 0, flags);
226 const uint8_t *start = pm_parser_start(parser);
227 VALUE source_string = rb_enc_str_new((
const char *) start, pm_parser_end(parser) - start, encoding);
234 for (
size_t index = 0; index < line_offsets->
size; index++) {
244 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)));
261 node->visited =
false;
270 *stack = current->prev;
282 VALUE string = rb_enc_str_new((
const char *) pm_constant_start(constant), pm_constant_length(constant), encoding);
287 rb_set_errinfo(
Qnil);
295 size_t constants_size = pm_parser_constants_size(parser);
298 for (
size_t index = 0; index < constants_size; index++) {
299 rb_ary_push(constants, pm_ast_constant(pm_parser_constant_at(parser, index), encoding));
304 pm_node_stack_push(node_arena, &node_stack, node);
307 while (node_stack != NULL) {
308 if (!node_stack->visited) {
309 if (node_stack->visit == NULL) {
310 pm_node_stack_pop(&node_stack);
315 const pm_node_t *node = node_stack->visit;
316 node_stack->visited =
true;
318 switch (PM_NODE_TYPE(node)) {
319#line 165 "prism/templates/ext/prism/api_node.c.erb"
320 case PM_ALIAS_GLOBAL_VARIABLE_NODE: {
322 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->new_name);
323 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->old_name);
326#line 165 "prism/templates/ext/prism/api_node.c.erb"
327 case PM_ALIAS_METHOD_NODE: {
329 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->new_name);
330 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->old_name);
333#line 165 "prism/templates/ext/prism/api_node.c.erb"
334 case PM_ALTERNATION_PATTERN_NODE: {
336 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->left);
337 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->right);
340#line 165 "prism/templates/ext/prism/api_node.c.erb"
343 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->left);
344 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->right);
347#line 165 "prism/templates/ext/prism/api_node.c.erb"
348 case PM_ARGUMENTS_NODE: {
350 for (
size_t index = 0; index <
cast->arguments.size; index++) {
351 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->arguments.nodes[index]);
355#line 165 "prism/templates/ext/prism/api_node.c.erb"
356 case PM_ARRAY_NODE: {
358 for (
size_t index = 0; index <
cast->elements.size; index++) {
359 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->elements.nodes[index]);
363#line 165 "prism/templates/ext/prism/api_node.c.erb"
364 case PM_ARRAY_PATTERN_NODE: {
366 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->constant);
367 for (
size_t index = 0; index <
cast->requireds.size; index++) {
368 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->requireds.nodes[index]);
370 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->rest);
371 for (
size_t index = 0; index <
cast->posts.size; index++) {
372 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->posts.nodes[index]);
376#line 165 "prism/templates/ext/prism/api_node.c.erb"
377 case PM_ASSOC_NODE: {
379 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->key);
380 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
383#line 165 "prism/templates/ext/prism/api_node.c.erb"
384 case PM_ASSOC_SPLAT_NODE: {
386 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
389#line 165 "prism/templates/ext/prism/api_node.c.erb"
390 case PM_BEGIN_NODE: {
392 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->statements);
393 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->rescue_clause);
394 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->else_clause);
395 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->ensure_clause);
398#line 165 "prism/templates/ext/prism/api_node.c.erb"
399 case PM_BLOCK_ARGUMENT_NODE: {
401 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->expression);
404#line 165 "prism/templates/ext/prism/api_node.c.erb"
405 case PM_BLOCK_NODE: {
407 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->parameters);
408 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->body);
411#line 165 "prism/templates/ext/prism/api_node.c.erb"
412 case PM_BLOCK_PARAMETERS_NODE: {
414 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->parameters);
415 for (
size_t index = 0; index <
cast->locals.size; index++) {
416 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->locals.nodes[index]);
420#line 165 "prism/templates/ext/prism/api_node.c.erb"
421 case PM_BREAK_NODE: {
423 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->arguments);
426#line 165 "prism/templates/ext/prism/api_node.c.erb"
427 case PM_CALL_AND_WRITE_NODE: {
429 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->receiver);
430 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
433#line 165 "prism/templates/ext/prism/api_node.c.erb"
436 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->receiver);
437 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->arguments);
438 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->block);
441#line 165 "prism/templates/ext/prism/api_node.c.erb"
442 case PM_CALL_OPERATOR_WRITE_NODE: {
444 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->receiver);
445 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
448#line 165 "prism/templates/ext/prism/api_node.c.erb"
449 case PM_CALL_OR_WRITE_NODE: {
451 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->receiver);
452 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
455#line 165 "prism/templates/ext/prism/api_node.c.erb"
456 case PM_CALL_TARGET_NODE: {
458 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->receiver);
461#line 165 "prism/templates/ext/prism/api_node.c.erb"
462 case PM_CAPTURE_PATTERN_NODE: {
464 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
465 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->target);
468#line 165 "prism/templates/ext/prism/api_node.c.erb"
469 case PM_CASE_MATCH_NODE: {
471 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->predicate);
472 for (
size_t index = 0; index <
cast->conditions.size; index++) {
473 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->conditions.nodes[index]);
475 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->else_clause);
478#line 165 "prism/templates/ext/prism/api_node.c.erb"
481 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->predicate);
482 for (
size_t index = 0; index <
cast->conditions.size; index++) {
483 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->conditions.nodes[index]);
485 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->else_clause);
488#line 165 "prism/templates/ext/prism/api_node.c.erb"
489 case PM_CLASS_NODE: {
491 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->constant_path);
492 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->superclass);
493 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->body);
496#line 165 "prism/templates/ext/prism/api_node.c.erb"
497 case PM_CLASS_VARIABLE_AND_WRITE_NODE: {
499 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
502#line 165 "prism/templates/ext/prism/api_node.c.erb"
503 case PM_CLASS_VARIABLE_OPERATOR_WRITE_NODE: {
505 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
508#line 165 "prism/templates/ext/prism/api_node.c.erb"
509 case PM_CLASS_VARIABLE_OR_WRITE_NODE: {
511 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
514#line 165 "prism/templates/ext/prism/api_node.c.erb"
515 case PM_CLASS_VARIABLE_WRITE_NODE: {
517 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
520#line 165 "prism/templates/ext/prism/api_node.c.erb"
521 case PM_CONSTANT_AND_WRITE_NODE: {
523 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
526#line 165 "prism/templates/ext/prism/api_node.c.erb"
527 case PM_CONSTANT_OPERATOR_WRITE_NODE: {
529 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
532#line 165 "prism/templates/ext/prism/api_node.c.erb"
533 case PM_CONSTANT_OR_WRITE_NODE: {
535 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
538#line 165 "prism/templates/ext/prism/api_node.c.erb"
539 case PM_CONSTANT_PATH_AND_WRITE_NODE: {
541 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->target);
542 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
545#line 165 "prism/templates/ext/prism/api_node.c.erb"
546 case PM_CONSTANT_PATH_NODE: {
548 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->parent);
551#line 165 "prism/templates/ext/prism/api_node.c.erb"
552 case PM_CONSTANT_PATH_OPERATOR_WRITE_NODE: {
554 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->target);
555 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
558#line 165 "prism/templates/ext/prism/api_node.c.erb"
559 case PM_CONSTANT_PATH_OR_WRITE_NODE: {
561 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->target);
562 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
565#line 165 "prism/templates/ext/prism/api_node.c.erb"
566 case PM_CONSTANT_PATH_TARGET_NODE: {
568 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->parent);
571#line 165 "prism/templates/ext/prism/api_node.c.erb"
572 case PM_CONSTANT_PATH_WRITE_NODE: {
574 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->target);
575 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
578#line 165 "prism/templates/ext/prism/api_node.c.erb"
579 case PM_CONSTANT_WRITE_NODE: {
581 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
584#line 165 "prism/templates/ext/prism/api_node.c.erb"
587 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->receiver);
588 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->parameters);
589 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->body);
592#line 165 "prism/templates/ext/prism/api_node.c.erb"
593 case PM_DEFINED_NODE: {
595 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
598#line 165 "prism/templates/ext/prism/api_node.c.erb"
601 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->statements);
604#line 165 "prism/templates/ext/prism/api_node.c.erb"
605 case PM_EMBEDDED_STATEMENTS_NODE: {
607 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->statements);
610#line 165 "prism/templates/ext/prism/api_node.c.erb"
611 case PM_EMBEDDED_VARIABLE_NODE: {
613 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->variable);
616#line 165 "prism/templates/ext/prism/api_node.c.erb"
617 case PM_ENSURE_NODE: {
619 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->statements);
622#line 165 "prism/templates/ext/prism/api_node.c.erb"
623 case PM_ERROR_RECOVERY_NODE: {
625 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->unexpected);
628#line 165 "prism/templates/ext/prism/api_node.c.erb"
629 case PM_FIND_PATTERN_NODE: {
631 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->constant);
632 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->left);
633 for (
size_t index = 0; index <
cast->requireds.size; index++) {
634 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->requireds.nodes[index]);
636 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->right);
639#line 165 "prism/templates/ext/prism/api_node.c.erb"
640 case PM_FLIP_FLOP_NODE: {
642 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->left);
643 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->right);
646#line 165 "prism/templates/ext/prism/api_node.c.erb"
649 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->index);
650 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->collection);
651 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->statements);
654#line 165 "prism/templates/ext/prism/api_node.c.erb"
655 case PM_FORWARDING_SUPER_NODE: {
657 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->block);
660#line 165 "prism/templates/ext/prism/api_node.c.erb"
661 case PM_GLOBAL_VARIABLE_AND_WRITE_NODE: {
663 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
666#line 165 "prism/templates/ext/prism/api_node.c.erb"
667 case PM_GLOBAL_VARIABLE_OPERATOR_WRITE_NODE: {
669 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
672#line 165 "prism/templates/ext/prism/api_node.c.erb"
673 case PM_GLOBAL_VARIABLE_OR_WRITE_NODE: {
675 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
678#line 165 "prism/templates/ext/prism/api_node.c.erb"
679 case PM_GLOBAL_VARIABLE_WRITE_NODE: {
681 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
684#line 165 "prism/templates/ext/prism/api_node.c.erb"
687 for (
size_t index = 0; index <
cast->elements.size; index++) {
688 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->elements.nodes[index]);
692#line 165 "prism/templates/ext/prism/api_node.c.erb"
693 case PM_HASH_PATTERN_NODE: {
695 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->constant);
696 for (
size_t index = 0; index <
cast->elements.size; index++) {
697 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->elements.nodes[index]);
699 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->rest);
702#line 165 "prism/templates/ext/prism/api_node.c.erb"
705 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->predicate);
706 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->statements);
707 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->subsequent);
710#line 165 "prism/templates/ext/prism/api_node.c.erb"
711 case PM_IMAGINARY_NODE: {
713 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->numeric);
716#line 165 "prism/templates/ext/prism/api_node.c.erb"
717 case PM_IMPLICIT_NODE: {
719 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
722#line 165 "prism/templates/ext/prism/api_node.c.erb"
725 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->pattern);
726 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->statements);
729#line 165 "prism/templates/ext/prism/api_node.c.erb"
730 case PM_INDEX_AND_WRITE_NODE: {
732 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->receiver);
733 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->arguments);
734 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->block);
735 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
738#line 165 "prism/templates/ext/prism/api_node.c.erb"
739 case PM_INDEX_OPERATOR_WRITE_NODE: {
741 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->receiver);
742 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->arguments);
743 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->block);
744 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
747#line 165 "prism/templates/ext/prism/api_node.c.erb"
748 case PM_INDEX_OR_WRITE_NODE: {
750 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->receiver);
751 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->arguments);
752 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->block);
753 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
756#line 165 "prism/templates/ext/prism/api_node.c.erb"
757 case PM_INDEX_TARGET_NODE: {
759 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->receiver);
760 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->arguments);
761 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->block);
764#line 165 "prism/templates/ext/prism/api_node.c.erb"
765 case PM_INSTANCE_VARIABLE_AND_WRITE_NODE: {
767 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
770#line 165 "prism/templates/ext/prism/api_node.c.erb"
771 case PM_INSTANCE_VARIABLE_OPERATOR_WRITE_NODE: {
773 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
776#line 165 "prism/templates/ext/prism/api_node.c.erb"
777 case PM_INSTANCE_VARIABLE_OR_WRITE_NODE: {
779 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
782#line 165 "prism/templates/ext/prism/api_node.c.erb"
783 case PM_INSTANCE_VARIABLE_WRITE_NODE: {
785 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
788#line 165 "prism/templates/ext/prism/api_node.c.erb"
789 case PM_INTERPOLATED_MATCH_LAST_LINE_NODE: {
791 for (
size_t index = 0; index <
cast->parts.size; index++) {
792 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->parts.nodes[index]);
796#line 165 "prism/templates/ext/prism/api_node.c.erb"
797 case PM_INTERPOLATED_REGULAR_EXPRESSION_NODE: {
799 for (
size_t index = 0; index <
cast->parts.size; index++) {
800 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->parts.nodes[index]);
804#line 165 "prism/templates/ext/prism/api_node.c.erb"
805 case PM_INTERPOLATED_STRING_NODE: {
807 for (
size_t index = 0; index <
cast->parts.size; index++) {
808 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->parts.nodes[index]);
812#line 165 "prism/templates/ext/prism/api_node.c.erb"
813 case PM_INTERPOLATED_SYMBOL_NODE: {
815 for (
size_t index = 0; index <
cast->parts.size; index++) {
816 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->parts.nodes[index]);
820#line 165 "prism/templates/ext/prism/api_node.c.erb"
821 case PM_INTERPOLATED_X_STRING_NODE: {
823 for (
size_t index = 0; index <
cast->parts.size; index++) {
824 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->parts.nodes[index]);
828#line 165 "prism/templates/ext/prism/api_node.c.erb"
829 case PM_KEYWORD_HASH_NODE: {
831 for (
size_t index = 0; index <
cast->elements.size; index++) {
832 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->elements.nodes[index]);
836#line 165 "prism/templates/ext/prism/api_node.c.erb"
837 case PM_LAMBDA_NODE: {
839 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->parameters);
840 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->body);
843#line 165 "prism/templates/ext/prism/api_node.c.erb"
844 case PM_LOCAL_VARIABLE_AND_WRITE_NODE: {
846 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
849#line 165 "prism/templates/ext/prism/api_node.c.erb"
850 case PM_LOCAL_VARIABLE_OPERATOR_WRITE_NODE: {
852 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
855#line 165 "prism/templates/ext/prism/api_node.c.erb"
856 case PM_LOCAL_VARIABLE_OR_WRITE_NODE: {
858 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
861#line 165 "prism/templates/ext/prism/api_node.c.erb"
862 case PM_LOCAL_VARIABLE_WRITE_NODE: {
864 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
867#line 165 "prism/templates/ext/prism/api_node.c.erb"
868 case PM_MATCH_PREDICATE_NODE: {
870 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
871 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->pattern);
874#line 165 "prism/templates/ext/prism/api_node.c.erb"
875 case PM_MATCH_REQUIRED_NODE: {
877 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
878 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->pattern);
881#line 165 "prism/templates/ext/prism/api_node.c.erb"
882 case PM_MATCH_WRITE_NODE: {
884 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->call);
885 for (
size_t index = 0; index <
cast->targets.size; index++) {
886 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->targets.nodes[index]);
890#line 165 "prism/templates/ext/prism/api_node.c.erb"
891 case PM_MODULE_NODE: {
893 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->constant_path);
894 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->body);
897#line 165 "prism/templates/ext/prism/api_node.c.erb"
898 case PM_MULTI_TARGET_NODE: {
900 for (
size_t index = 0; index <
cast->lefts.size; index++) {
901 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->lefts.nodes[index]);
903 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->rest);
904 for (
size_t index = 0; index <
cast->rights.size; index++) {
905 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->rights.nodes[index]);
909#line 165 "prism/templates/ext/prism/api_node.c.erb"
910 case PM_MULTI_WRITE_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]);
919 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
922#line 165 "prism/templates/ext/prism/api_node.c.erb"
925 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->arguments);
928#line 165 "prism/templates/ext/prism/api_node.c.erb"
929 case PM_OPTIONAL_KEYWORD_PARAMETER_NODE: {
931 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
934#line 165 "prism/templates/ext/prism/api_node.c.erb"
935 case PM_OPTIONAL_PARAMETER_NODE: {
937 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->value);
940#line 165 "prism/templates/ext/prism/api_node.c.erb"
943 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->left);
944 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->right);
947#line 165 "prism/templates/ext/prism/api_node.c.erb"
948 case PM_PARAMETERS_NODE: {
950 for (
size_t index = 0; index <
cast->requireds.size; index++) {
951 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->requireds.nodes[index]);
953 for (
size_t index = 0; index <
cast->optionals.size; index++) {
954 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->optionals.nodes[index]);
956 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->rest);
957 for (
size_t index = 0; index <
cast->posts.size; index++) {
958 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->posts.nodes[index]);
960 for (
size_t index = 0; index <
cast->keywords.size; index++) {
961 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->keywords.nodes[index]);
963 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->keyword_rest);
964 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->block);
967#line 165 "prism/templates/ext/prism/api_node.c.erb"
968 case PM_PARENTHESES_NODE: {
970 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->body);
973#line 165 "prism/templates/ext/prism/api_node.c.erb"
974 case PM_PINNED_EXPRESSION_NODE: {
976 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->expression);
979#line 165 "prism/templates/ext/prism/api_node.c.erb"
980 case PM_PINNED_VARIABLE_NODE: {
982 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->variable);
985#line 165 "prism/templates/ext/prism/api_node.c.erb"
986 case PM_POST_EXECUTION_NODE: {
988 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->statements);
991#line 165 "prism/templates/ext/prism/api_node.c.erb"
992 case PM_PRE_EXECUTION_NODE: {
994 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->statements);
997#line 165 "prism/templates/ext/prism/api_node.c.erb"
998 case PM_PROGRAM_NODE: {
1000 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->statements);
1003#line 165 "prism/templates/ext/prism/api_node.c.erb"
1004 case PM_RANGE_NODE: {
1006 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->left);
1007 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->right);
1010#line 165 "prism/templates/ext/prism/api_node.c.erb"
1011 case PM_RESCUE_MODIFIER_NODE: {
1013 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->expression);
1014 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->rescue_expression);
1017#line 165 "prism/templates/ext/prism/api_node.c.erb"
1018 case PM_RESCUE_NODE: {
1020 for (
size_t index = 0; index <
cast->exceptions.size; index++) {
1021 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->exceptions.nodes[index]);
1023 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->reference);
1024 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->statements);
1025 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->subsequent);
1028#line 165 "prism/templates/ext/prism/api_node.c.erb"
1029 case PM_RETURN_NODE: {
1031 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->arguments);
1034#line 165 "prism/templates/ext/prism/api_node.c.erb"
1035 case PM_SHAREABLE_CONSTANT_NODE: {
1037 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->write);
1040#line 165 "prism/templates/ext/prism/api_node.c.erb"
1041 case PM_SINGLETON_CLASS_NODE: {
1043 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->expression);
1044 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->body);
1047#line 165 "prism/templates/ext/prism/api_node.c.erb"
1048 case PM_SPLAT_NODE: {
1050 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->expression);
1053#line 165 "prism/templates/ext/prism/api_node.c.erb"
1054 case PM_STATEMENTS_NODE: {
1056 for (
size_t index = 0; index <
cast->body.size; index++) {
1057 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->body.nodes[index]);
1061#line 165 "prism/templates/ext/prism/api_node.c.erb"
1062 case PM_SUPER_NODE: {
1064 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->arguments);
1065 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->block);
1068#line 165 "prism/templates/ext/prism/api_node.c.erb"
1069 case PM_UNDEF_NODE: {
1071 for (
size_t index = 0; index <
cast->names.size; index++) {
1072 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->names.nodes[index]);
1076#line 165 "prism/templates/ext/prism/api_node.c.erb"
1077 case PM_UNLESS_NODE: {
1079 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->predicate);
1080 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->statements);
1081 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->else_clause);
1084#line 165 "prism/templates/ext/prism/api_node.c.erb"
1085 case PM_UNTIL_NODE: {
1087 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->predicate);
1088 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->statements);
1091#line 165 "prism/templates/ext/prism/api_node.c.erb"
1092 case PM_WHEN_NODE: {
1094 for (
size_t index = 0; index <
cast->conditions.size; index++) {
1095 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->conditions.nodes[index]);
1097 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->statements);
1100#line 165 "prism/templates/ext/prism/api_node.c.erb"
1101 case PM_WHILE_NODE: {
1103 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->predicate);
1104 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->statements);
1107#line 165 "prism/templates/ext/prism/api_node.c.erb"
1108 case PM_YIELD_NODE: {
1110 pm_node_stack_push(node_arena, &node_stack, (
pm_node_t *)
cast->arguments);
1116#line 185 "prism/templates/ext/prism/api_node.c.erb"
1118 const pm_node_t *node = pm_node_stack_pop(&node_stack);
1120 switch (PM_NODE_TYPE(node)) {
1121#line 191 "prism/templates/ext/prism/api_node.c.erb"
1122 case PM_ALIAS_GLOBAL_VARIABLE_NODE: {
1139#line 214 "prism/templates/ext/prism/api_node.c.erb"
1143#line 214 "prism/templates/ext/prism/api_node.c.erb"
1147#line 241 "prism/templates/ext/prism/api_node.c.erb"
1148 argv[6] = pm_location_new(
cast->keyword_loc.start,
cast->keyword_loc.length, source, freeze);
1156#line 191 "prism/templates/ext/prism/api_node.c.erb"
1157 case PM_ALIAS_METHOD_NODE: {
1174#line 214 "prism/templates/ext/prism/api_node.c.erb"
1178#line 214 "prism/templates/ext/prism/api_node.c.erb"
1182#line 241 "prism/templates/ext/prism/api_node.c.erb"
1183 argv[6] = pm_location_new(
cast->keyword_loc.start,
cast->keyword_loc.length, source, freeze);
1191#line 191 "prism/templates/ext/prism/api_node.c.erb"
1192 case PM_ALTERNATION_PATTERN_NODE: {
1209#line 214 "prism/templates/ext/prism/api_node.c.erb"
1213#line 214 "prism/templates/ext/prism/api_node.c.erb"
1217#line 241 "prism/templates/ext/prism/api_node.c.erb"
1218 argv[6] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
1226#line 191 "prism/templates/ext/prism/api_node.c.erb"
1244#line 214 "prism/templates/ext/prism/api_node.c.erb"
1248#line 214 "prism/templates/ext/prism/api_node.c.erb"
1252#line 241 "prism/templates/ext/prism/api_node.c.erb"
1253 argv[6] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
1261#line 191 "prism/templates/ext/prism/api_node.c.erb"
1262 case PM_ARGUMENTS_NODE: {
1279#line 217 "prism/templates/ext/prism/api_node.c.erb"
1281 for (
size_t index = 0; index <
cast->arguments.size; index++) {
1292#line 191 "prism/templates/ext/prism/api_node.c.erb"
1293 case PM_ARRAY_NODE: {
1310#line 217 "prism/templates/ext/prism/api_node.c.erb"
1312 for (
size_t index = 0; index <
cast->elements.size; index++) {
1318#line 244 "prism/templates/ext/prism/api_node.c.erb"
1319 argv[5] =
cast->opening_loc.length == 0 ?
Qnil : pm_location_new(
cast->opening_loc.start,
cast->opening_loc.length, source, freeze);
1322#line 244 "prism/templates/ext/prism/api_node.c.erb"
1323 argv[6] =
cast->closing_loc.length == 0 ?
Qnil : pm_location_new(
cast->closing_loc.start,
cast->closing_loc.length, source, freeze);
1331#line 191 "prism/templates/ext/prism/api_node.c.erb"
1332 case PM_ARRAY_PATTERN_NODE: {
1349#line 214 "prism/templates/ext/prism/api_node.c.erb"
1353#line 217 "prism/templates/ext/prism/api_node.c.erb"
1355 for (
size_t index = 0; index <
cast->requireds.size; index++) {
1361#line 214 "prism/templates/ext/prism/api_node.c.erb"
1365#line 217 "prism/templates/ext/prism/api_node.c.erb"
1367 for (
size_t index = 0; index <
cast->posts.size; index++) {
1373#line 244 "prism/templates/ext/prism/api_node.c.erb"
1374 argv[8] =
cast->opening_loc.length == 0 ?
Qnil : pm_location_new(
cast->opening_loc.start,
cast->opening_loc.length, source, freeze);
1377#line 244 "prism/templates/ext/prism/api_node.c.erb"
1378 argv[9] =
cast->closing_loc.length == 0 ?
Qnil : pm_location_new(
cast->closing_loc.start,
cast->closing_loc.length, source, freeze);
1386#line 191 "prism/templates/ext/prism/api_node.c.erb"
1387 case PM_ASSOC_NODE: {
1404#line 214 "prism/templates/ext/prism/api_node.c.erb"
1408#line 214 "prism/templates/ext/prism/api_node.c.erb"
1412#line 244 "prism/templates/ext/prism/api_node.c.erb"
1413 argv[6] =
cast->operator_loc.length == 0 ?
Qnil : pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
1421#line 191 "prism/templates/ext/prism/api_node.c.erb"
1422 case PM_ASSOC_SPLAT_NODE: {
1439#line 214 "prism/templates/ext/prism/api_node.c.erb"
1443#line 241 "prism/templates/ext/prism/api_node.c.erb"
1444 argv[5] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
1452#line 191 "prism/templates/ext/prism/api_node.c.erb"
1453 case PM_BACK_REFERENCE_READ_NODE: {
1470#line 227 "prism/templates/ext/prism/api_node.c.erb"
1471 PRISM_ASSERT(
cast->name != 0);
1480#line 191 "prism/templates/ext/prism/api_node.c.erb"
1481 case PM_BEGIN_NODE: {
1498#line 244 "prism/templates/ext/prism/api_node.c.erb"
1499 argv[4] =
cast->begin_keyword_loc.length == 0 ?
Qnil : pm_location_new(
cast->begin_keyword_loc.start,
cast->begin_keyword_loc.length, source, freeze);
1502#line 214 "prism/templates/ext/prism/api_node.c.erb"
1506#line 214 "prism/templates/ext/prism/api_node.c.erb"
1510#line 214 "prism/templates/ext/prism/api_node.c.erb"
1514#line 214 "prism/templates/ext/prism/api_node.c.erb"
1518#line 244 "prism/templates/ext/prism/api_node.c.erb"
1519 argv[9] =
cast->end_keyword_loc.length == 0 ?
Qnil : pm_location_new(
cast->end_keyword_loc.start,
cast->end_keyword_loc.length, source, freeze);
1527#line 191 "prism/templates/ext/prism/api_node.c.erb"
1528 case PM_BLOCK_ARGUMENT_NODE: {
1545#line 214 "prism/templates/ext/prism/api_node.c.erb"
1549#line 241 "prism/templates/ext/prism/api_node.c.erb"
1550 argv[5] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
1558#line 191 "prism/templates/ext/prism/api_node.c.erb"
1559 case PM_BLOCK_LOCAL_VARIABLE_NODE: {
1576#line 227 "prism/templates/ext/prism/api_node.c.erb"
1577 PRISM_ASSERT(
cast->name != 0);
1586#line 191 "prism/templates/ext/prism/api_node.c.erb"
1587 case PM_BLOCK_NODE: {
1604#line 233 "prism/templates/ext/prism/api_node.c.erb"
1606 for (
size_t index = 0; index <
cast->locals.size; index++) {
1607 PRISM_ASSERT(
cast->locals.ids[index] != 0);
1613#line 214 "prism/templates/ext/prism/api_node.c.erb"
1617#line 214 "prism/templates/ext/prism/api_node.c.erb"
1621#line 241 "prism/templates/ext/prism/api_node.c.erb"
1622 argv[7] = pm_location_new(
cast->opening_loc.start,
cast->opening_loc.length, source, freeze);
1625#line 241 "prism/templates/ext/prism/api_node.c.erb"
1626 argv[8] = pm_location_new(
cast->closing_loc.start,
cast->closing_loc.length, source, freeze);
1634#line 191 "prism/templates/ext/prism/api_node.c.erb"
1635 case PM_BLOCK_PARAMETER_NODE: {
1655#line 244 "prism/templates/ext/prism/api_node.c.erb"
1656 argv[5] =
cast->name_loc.length == 0 ?
Qnil : pm_location_new(
cast->name_loc.start,
cast->name_loc.length, source, freeze);
1659#line 241 "prism/templates/ext/prism/api_node.c.erb"
1660 argv[6] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
1668#line 191 "prism/templates/ext/prism/api_node.c.erb"
1669 case PM_BLOCK_PARAMETERS_NODE: {
1686#line 214 "prism/templates/ext/prism/api_node.c.erb"
1690#line 217 "prism/templates/ext/prism/api_node.c.erb"
1692 for (
size_t index = 0; index <
cast->locals.size; index++) {
1698#line 244 "prism/templates/ext/prism/api_node.c.erb"
1699 argv[6] =
cast->opening_loc.length == 0 ?
Qnil : pm_location_new(
cast->opening_loc.start,
cast->opening_loc.length, source, freeze);
1702#line 244 "prism/templates/ext/prism/api_node.c.erb"
1703 argv[7] =
cast->closing_loc.length == 0 ?
Qnil : pm_location_new(
cast->closing_loc.start,
cast->closing_loc.length, source, freeze);
1711#line 191 "prism/templates/ext/prism/api_node.c.erb"
1712 case PM_BREAK_NODE: {
1729#line 214 "prism/templates/ext/prism/api_node.c.erb"
1733#line 241 "prism/templates/ext/prism/api_node.c.erb"
1734 argv[5] = pm_location_new(
cast->keyword_loc.start,
cast->keyword_loc.length, source, freeze);
1742#line 191 "prism/templates/ext/prism/api_node.c.erb"
1743 case PM_CALL_AND_WRITE_NODE: {
1760#line 214 "prism/templates/ext/prism/api_node.c.erb"
1764#line 244 "prism/templates/ext/prism/api_node.c.erb"
1765 argv[5] =
cast->call_operator_loc.length == 0 ?
Qnil : pm_location_new(
cast->call_operator_loc.start,
cast->call_operator_loc.length, source, freeze);
1768#line 244 "prism/templates/ext/prism/api_node.c.erb"
1769 argv[6] =
cast->message_loc.length == 0 ?
Qnil : pm_location_new(
cast->message_loc.start,
cast->message_loc.length, source, freeze);
1772#line 227 "prism/templates/ext/prism/api_node.c.erb"
1773 PRISM_ASSERT(
cast->read_name != 0);
1777#line 227 "prism/templates/ext/prism/api_node.c.erb"
1778 PRISM_ASSERT(
cast->write_name != 0);
1782#line 241 "prism/templates/ext/prism/api_node.c.erb"
1783 argv[9] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
1786#line 214 "prism/templates/ext/prism/api_node.c.erb"
1795#line 191 "prism/templates/ext/prism/api_node.c.erb"
1796 case PM_CALL_NODE: {
1813#line 214 "prism/templates/ext/prism/api_node.c.erb"
1817#line 244 "prism/templates/ext/prism/api_node.c.erb"
1818 argv[5] =
cast->call_operator_loc.length == 0 ?
Qnil : pm_location_new(
cast->call_operator_loc.start,
cast->call_operator_loc.length, source, freeze);
1821#line 227 "prism/templates/ext/prism/api_node.c.erb"
1822 PRISM_ASSERT(
cast->name != 0);
1826#line 244 "prism/templates/ext/prism/api_node.c.erb"
1827 argv[7] =
cast->message_loc.length == 0 ?
Qnil : pm_location_new(
cast->message_loc.start,
cast->message_loc.length, source, freeze);
1830#line 244 "prism/templates/ext/prism/api_node.c.erb"
1831 argv[8] =
cast->opening_loc.length == 0 ?
Qnil : pm_location_new(
cast->opening_loc.start,
cast->opening_loc.length, source, freeze);
1834#line 214 "prism/templates/ext/prism/api_node.c.erb"
1838#line 244 "prism/templates/ext/prism/api_node.c.erb"
1839 argv[10] =
cast->closing_loc.length == 0 ?
Qnil : pm_location_new(
cast->closing_loc.start,
cast->closing_loc.length, source, freeze);
1842#line 244 "prism/templates/ext/prism/api_node.c.erb"
1843 argv[11] =
cast->equal_loc.length == 0 ?
Qnil : pm_location_new(
cast->equal_loc.start,
cast->equal_loc.length, source, freeze);
1846#line 214 "prism/templates/ext/prism/api_node.c.erb"
1855#line 191 "prism/templates/ext/prism/api_node.c.erb"
1856 case PM_CALL_OPERATOR_WRITE_NODE: {
1873#line 214 "prism/templates/ext/prism/api_node.c.erb"
1877#line 244 "prism/templates/ext/prism/api_node.c.erb"
1878 argv[5] =
cast->call_operator_loc.length == 0 ?
Qnil : pm_location_new(
cast->call_operator_loc.start,
cast->call_operator_loc.length, source, freeze);
1881#line 244 "prism/templates/ext/prism/api_node.c.erb"
1882 argv[6] =
cast->message_loc.length == 0 ?
Qnil : pm_location_new(
cast->message_loc.start,
cast->message_loc.length, source, freeze);
1885#line 227 "prism/templates/ext/prism/api_node.c.erb"
1886 PRISM_ASSERT(
cast->read_name != 0);
1890#line 227 "prism/templates/ext/prism/api_node.c.erb"
1891 PRISM_ASSERT(
cast->write_name != 0);
1895#line 227 "prism/templates/ext/prism/api_node.c.erb"
1896 PRISM_ASSERT(
cast->binary_operator != 0);
1900#line 241 "prism/templates/ext/prism/api_node.c.erb"
1901 argv[10] = pm_location_new(
cast->binary_operator_loc.start,
cast->binary_operator_loc.length, source, freeze);
1904#line 214 "prism/templates/ext/prism/api_node.c.erb"
1913#line 191 "prism/templates/ext/prism/api_node.c.erb"
1914 case PM_CALL_OR_WRITE_NODE: {
1931#line 214 "prism/templates/ext/prism/api_node.c.erb"
1935#line 244 "prism/templates/ext/prism/api_node.c.erb"
1936 argv[5] =
cast->call_operator_loc.length == 0 ?
Qnil : pm_location_new(
cast->call_operator_loc.start,
cast->call_operator_loc.length, source, freeze);
1939#line 244 "prism/templates/ext/prism/api_node.c.erb"
1940 argv[6] =
cast->message_loc.length == 0 ?
Qnil : pm_location_new(
cast->message_loc.start,
cast->message_loc.length, source, freeze);
1943#line 227 "prism/templates/ext/prism/api_node.c.erb"
1944 PRISM_ASSERT(
cast->read_name != 0);
1948#line 227 "prism/templates/ext/prism/api_node.c.erb"
1949 PRISM_ASSERT(
cast->write_name != 0);
1953#line 241 "prism/templates/ext/prism/api_node.c.erb"
1954 argv[9] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
1957#line 214 "prism/templates/ext/prism/api_node.c.erb"
1966#line 191 "prism/templates/ext/prism/api_node.c.erb"
1967 case PM_CALL_TARGET_NODE: {
1984#line 214 "prism/templates/ext/prism/api_node.c.erb"
1988#line 241 "prism/templates/ext/prism/api_node.c.erb"
1989 argv[5] = pm_location_new(
cast->call_operator_loc.start,
cast->call_operator_loc.length, source, freeze);
1992#line 227 "prism/templates/ext/prism/api_node.c.erb"
1993 PRISM_ASSERT(
cast->name != 0);
1997#line 241 "prism/templates/ext/prism/api_node.c.erb"
1998 argv[7] = pm_location_new(
cast->message_loc.start,
cast->message_loc.length, source, freeze);
2006#line 191 "prism/templates/ext/prism/api_node.c.erb"
2007 case PM_CAPTURE_PATTERN_NODE: {
2024#line 214 "prism/templates/ext/prism/api_node.c.erb"
2028#line 214 "prism/templates/ext/prism/api_node.c.erb"
2032#line 241 "prism/templates/ext/prism/api_node.c.erb"
2033 argv[6] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
2041#line 191 "prism/templates/ext/prism/api_node.c.erb"
2042 case PM_CASE_MATCH_NODE: {
2059#line 214 "prism/templates/ext/prism/api_node.c.erb"
2063#line 217 "prism/templates/ext/prism/api_node.c.erb"
2065 for (
size_t index = 0; index <
cast->conditions.size; index++) {
2071#line 214 "prism/templates/ext/prism/api_node.c.erb"
2075#line 241 "prism/templates/ext/prism/api_node.c.erb"
2076 argv[7] = pm_location_new(
cast->case_keyword_loc.start,
cast->case_keyword_loc.length, source, freeze);
2079#line 241 "prism/templates/ext/prism/api_node.c.erb"
2080 argv[8] = pm_location_new(
cast->end_keyword_loc.start,
cast->end_keyword_loc.length, source, freeze);
2088#line 191 "prism/templates/ext/prism/api_node.c.erb"
2089 case PM_CASE_NODE: {
2106#line 214 "prism/templates/ext/prism/api_node.c.erb"
2110#line 217 "prism/templates/ext/prism/api_node.c.erb"
2112 for (
size_t index = 0; index <
cast->conditions.size; index++) {
2118#line 214 "prism/templates/ext/prism/api_node.c.erb"
2122#line 241 "prism/templates/ext/prism/api_node.c.erb"
2123 argv[7] = pm_location_new(
cast->case_keyword_loc.start,
cast->case_keyword_loc.length, source, freeze);
2126#line 241 "prism/templates/ext/prism/api_node.c.erb"
2127 argv[8] = pm_location_new(
cast->end_keyword_loc.start,
cast->end_keyword_loc.length, source, freeze);
2135#line 191 "prism/templates/ext/prism/api_node.c.erb"
2136 case PM_CLASS_NODE: {
2153#line 233 "prism/templates/ext/prism/api_node.c.erb"
2155 for (
size_t index = 0; index <
cast->locals.size; index++) {
2156 PRISM_ASSERT(
cast->locals.ids[index] != 0);
2162#line 241 "prism/templates/ext/prism/api_node.c.erb"
2163 argv[5] = pm_location_new(
cast->class_keyword_loc.start,
cast->class_keyword_loc.length, source, freeze);
2166#line 214 "prism/templates/ext/prism/api_node.c.erb"
2170#line 244 "prism/templates/ext/prism/api_node.c.erb"
2171 argv[7] =
cast->inheritance_operator_loc.length == 0 ?
Qnil : pm_location_new(
cast->inheritance_operator_loc.start,
cast->inheritance_operator_loc.length, source, freeze);
2174#line 214 "prism/templates/ext/prism/api_node.c.erb"
2178#line 214 "prism/templates/ext/prism/api_node.c.erb"
2182#line 241 "prism/templates/ext/prism/api_node.c.erb"
2183 argv[10] = pm_location_new(
cast->end_keyword_loc.start,
cast->end_keyword_loc.length, source, freeze);
2186#line 227 "prism/templates/ext/prism/api_node.c.erb"
2187 PRISM_ASSERT(
cast->name != 0);
2196#line 191 "prism/templates/ext/prism/api_node.c.erb"
2197 case PM_CLASS_VARIABLE_AND_WRITE_NODE: {
2214#line 227 "prism/templates/ext/prism/api_node.c.erb"
2215 PRISM_ASSERT(
cast->name != 0);
2219#line 241 "prism/templates/ext/prism/api_node.c.erb"
2220 argv[5] = pm_location_new(
cast->name_loc.start,
cast->name_loc.length, source, freeze);
2223#line 241 "prism/templates/ext/prism/api_node.c.erb"
2224 argv[6] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
2227#line 214 "prism/templates/ext/prism/api_node.c.erb"
2236#line 191 "prism/templates/ext/prism/api_node.c.erb"
2237 case PM_CLASS_VARIABLE_OPERATOR_WRITE_NODE: {
2254#line 227 "prism/templates/ext/prism/api_node.c.erb"
2255 PRISM_ASSERT(
cast->name != 0);
2259#line 241 "prism/templates/ext/prism/api_node.c.erb"
2260 argv[5] = pm_location_new(
cast->name_loc.start,
cast->name_loc.length, source, freeze);
2263#line 241 "prism/templates/ext/prism/api_node.c.erb"
2264 argv[6] = pm_location_new(
cast->binary_operator_loc.start,
cast->binary_operator_loc.length, source, freeze);
2267#line 214 "prism/templates/ext/prism/api_node.c.erb"
2271#line 227 "prism/templates/ext/prism/api_node.c.erb"
2272 PRISM_ASSERT(
cast->binary_operator != 0);
2281#line 191 "prism/templates/ext/prism/api_node.c.erb"
2282 case PM_CLASS_VARIABLE_OR_WRITE_NODE: {
2299#line 227 "prism/templates/ext/prism/api_node.c.erb"
2300 PRISM_ASSERT(
cast->name != 0);
2304#line 241 "prism/templates/ext/prism/api_node.c.erb"
2305 argv[5] = pm_location_new(
cast->name_loc.start,
cast->name_loc.length, source, freeze);
2308#line 241 "prism/templates/ext/prism/api_node.c.erb"
2309 argv[6] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
2312#line 214 "prism/templates/ext/prism/api_node.c.erb"
2321#line 191 "prism/templates/ext/prism/api_node.c.erb"
2322 case PM_CLASS_VARIABLE_READ_NODE: {
2339#line 227 "prism/templates/ext/prism/api_node.c.erb"
2340 PRISM_ASSERT(
cast->name != 0);
2349#line 191 "prism/templates/ext/prism/api_node.c.erb"
2350 case PM_CLASS_VARIABLE_TARGET_NODE: {
2367#line 227 "prism/templates/ext/prism/api_node.c.erb"
2368 PRISM_ASSERT(
cast->name != 0);
2377#line 191 "prism/templates/ext/prism/api_node.c.erb"
2378 case PM_CLASS_VARIABLE_WRITE_NODE: {
2395#line 227 "prism/templates/ext/prism/api_node.c.erb"
2396 PRISM_ASSERT(
cast->name != 0);
2400#line 241 "prism/templates/ext/prism/api_node.c.erb"
2401 argv[5] = pm_location_new(
cast->name_loc.start,
cast->name_loc.length, source, freeze);
2404#line 214 "prism/templates/ext/prism/api_node.c.erb"
2408#line 241 "prism/templates/ext/prism/api_node.c.erb"
2409 argv[7] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
2417#line 191 "prism/templates/ext/prism/api_node.c.erb"
2418 case PM_CONSTANT_AND_WRITE_NODE: {
2435#line 227 "prism/templates/ext/prism/api_node.c.erb"
2436 PRISM_ASSERT(
cast->name != 0);
2440#line 241 "prism/templates/ext/prism/api_node.c.erb"
2441 argv[5] = pm_location_new(
cast->name_loc.start,
cast->name_loc.length, source, freeze);
2444#line 241 "prism/templates/ext/prism/api_node.c.erb"
2445 argv[6] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
2448#line 214 "prism/templates/ext/prism/api_node.c.erb"
2457#line 191 "prism/templates/ext/prism/api_node.c.erb"
2458 case PM_CONSTANT_OPERATOR_WRITE_NODE: {
2475#line 227 "prism/templates/ext/prism/api_node.c.erb"
2476 PRISM_ASSERT(
cast->name != 0);
2480#line 241 "prism/templates/ext/prism/api_node.c.erb"
2481 argv[5] = pm_location_new(
cast->name_loc.start,
cast->name_loc.length, source, freeze);
2484#line 241 "prism/templates/ext/prism/api_node.c.erb"
2485 argv[6] = pm_location_new(
cast->binary_operator_loc.start,
cast->binary_operator_loc.length, source, freeze);
2488#line 214 "prism/templates/ext/prism/api_node.c.erb"
2492#line 227 "prism/templates/ext/prism/api_node.c.erb"
2493 PRISM_ASSERT(
cast->binary_operator != 0);
2502#line 191 "prism/templates/ext/prism/api_node.c.erb"
2503 case PM_CONSTANT_OR_WRITE_NODE: {
2520#line 227 "prism/templates/ext/prism/api_node.c.erb"
2521 PRISM_ASSERT(
cast->name != 0);
2525#line 241 "prism/templates/ext/prism/api_node.c.erb"
2526 argv[5] = pm_location_new(
cast->name_loc.start,
cast->name_loc.length, source, freeze);
2529#line 241 "prism/templates/ext/prism/api_node.c.erb"
2530 argv[6] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
2533#line 214 "prism/templates/ext/prism/api_node.c.erb"
2542#line 191 "prism/templates/ext/prism/api_node.c.erb"
2543 case PM_CONSTANT_PATH_AND_WRITE_NODE: {
2560#line 214 "prism/templates/ext/prism/api_node.c.erb"
2564#line 241 "prism/templates/ext/prism/api_node.c.erb"
2565 argv[5] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
2568#line 214 "prism/templates/ext/prism/api_node.c.erb"
2577#line 191 "prism/templates/ext/prism/api_node.c.erb"
2578 case PM_CONSTANT_PATH_NODE: {
2595#line 214 "prism/templates/ext/prism/api_node.c.erb"
2602#line 241 "prism/templates/ext/prism/api_node.c.erb"
2603 argv[6] = pm_location_new(
cast->delimiter_loc.start,
cast->delimiter_loc.length, source, freeze);
2606#line 241 "prism/templates/ext/prism/api_node.c.erb"
2607 argv[7] = pm_location_new(
cast->name_loc.start,
cast->name_loc.length, source, freeze);
2615#line 191 "prism/templates/ext/prism/api_node.c.erb"
2616 case PM_CONSTANT_PATH_OPERATOR_WRITE_NODE: {
2633#line 214 "prism/templates/ext/prism/api_node.c.erb"
2637#line 241 "prism/templates/ext/prism/api_node.c.erb"
2638 argv[5] = pm_location_new(
cast->binary_operator_loc.start,
cast->binary_operator_loc.length, source, freeze);
2641#line 214 "prism/templates/ext/prism/api_node.c.erb"
2645#line 227 "prism/templates/ext/prism/api_node.c.erb"
2646 PRISM_ASSERT(
cast->binary_operator != 0);
2655#line 191 "prism/templates/ext/prism/api_node.c.erb"
2656 case PM_CONSTANT_PATH_OR_WRITE_NODE: {
2673#line 214 "prism/templates/ext/prism/api_node.c.erb"
2677#line 241 "prism/templates/ext/prism/api_node.c.erb"
2678 argv[5] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
2681#line 214 "prism/templates/ext/prism/api_node.c.erb"
2690#line 191 "prism/templates/ext/prism/api_node.c.erb"
2691 case PM_CONSTANT_PATH_TARGET_NODE: {
2708#line 214 "prism/templates/ext/prism/api_node.c.erb"
2715#line 241 "prism/templates/ext/prism/api_node.c.erb"
2716 argv[6] = pm_location_new(
cast->delimiter_loc.start,
cast->delimiter_loc.length, source, freeze);
2719#line 241 "prism/templates/ext/prism/api_node.c.erb"
2720 argv[7] = pm_location_new(
cast->name_loc.start,
cast->name_loc.length, source, freeze);
2728#line 191 "prism/templates/ext/prism/api_node.c.erb"
2729 case PM_CONSTANT_PATH_WRITE_NODE: {
2746#line 214 "prism/templates/ext/prism/api_node.c.erb"
2750#line 241 "prism/templates/ext/prism/api_node.c.erb"
2751 argv[5] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
2754#line 214 "prism/templates/ext/prism/api_node.c.erb"
2763#line 191 "prism/templates/ext/prism/api_node.c.erb"
2764 case PM_CONSTANT_READ_NODE: {
2781#line 227 "prism/templates/ext/prism/api_node.c.erb"
2782 PRISM_ASSERT(
cast->name != 0);
2791#line 191 "prism/templates/ext/prism/api_node.c.erb"
2792 case PM_CONSTANT_TARGET_NODE: {
2809#line 227 "prism/templates/ext/prism/api_node.c.erb"
2810 PRISM_ASSERT(
cast->name != 0);
2819#line 191 "prism/templates/ext/prism/api_node.c.erb"
2820 case PM_CONSTANT_WRITE_NODE: {
2837#line 227 "prism/templates/ext/prism/api_node.c.erb"
2838 PRISM_ASSERT(
cast->name != 0);
2842#line 241 "prism/templates/ext/prism/api_node.c.erb"
2843 argv[5] = pm_location_new(
cast->name_loc.start,
cast->name_loc.length, source, freeze);
2846#line 214 "prism/templates/ext/prism/api_node.c.erb"
2850#line 241 "prism/templates/ext/prism/api_node.c.erb"
2851 argv[7] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
2859#line 191 "prism/templates/ext/prism/api_node.c.erb"
2877#line 227 "prism/templates/ext/prism/api_node.c.erb"
2878 PRISM_ASSERT(
cast->name != 0);
2882#line 241 "prism/templates/ext/prism/api_node.c.erb"
2883 argv[5] = pm_location_new(
cast->name_loc.start,
cast->name_loc.length, source, freeze);
2886#line 214 "prism/templates/ext/prism/api_node.c.erb"
2890#line 214 "prism/templates/ext/prism/api_node.c.erb"
2894#line 214 "prism/templates/ext/prism/api_node.c.erb"
2898#line 233 "prism/templates/ext/prism/api_node.c.erb"
2900 for (
size_t index = 0; index <
cast->locals.size; index++) {
2901 PRISM_ASSERT(
cast->locals.ids[index] != 0);
2907#line 241 "prism/templates/ext/prism/api_node.c.erb"
2908 argv[10] = pm_location_new(
cast->def_keyword_loc.start,
cast->def_keyword_loc.length, source, freeze);
2911#line 244 "prism/templates/ext/prism/api_node.c.erb"
2912 argv[11] =
cast->operator_loc.length == 0 ?
Qnil : pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
2915#line 244 "prism/templates/ext/prism/api_node.c.erb"
2916 argv[12] =
cast->lparen_loc.length == 0 ?
Qnil : pm_location_new(
cast->lparen_loc.start,
cast->lparen_loc.length, source, freeze);
2919#line 244 "prism/templates/ext/prism/api_node.c.erb"
2920 argv[13] =
cast->rparen_loc.length == 0 ?
Qnil : pm_location_new(
cast->rparen_loc.start,
cast->rparen_loc.length, source, freeze);
2923#line 244 "prism/templates/ext/prism/api_node.c.erb"
2924 argv[14] =
cast->equal_loc.length == 0 ?
Qnil : pm_location_new(
cast->equal_loc.start,
cast->equal_loc.length, source, freeze);
2927#line 244 "prism/templates/ext/prism/api_node.c.erb"
2928 argv[15] =
cast->end_keyword_loc.length == 0 ?
Qnil : pm_location_new(
cast->end_keyword_loc.start,
cast->end_keyword_loc.length, source, freeze);
2936#line 191 "prism/templates/ext/prism/api_node.c.erb"
2937 case PM_DEFINED_NODE: {
2954#line 244 "prism/templates/ext/prism/api_node.c.erb"
2955 argv[4] =
cast->lparen_loc.length == 0 ?
Qnil : pm_location_new(
cast->lparen_loc.start,
cast->lparen_loc.length, source, freeze);
2958#line 214 "prism/templates/ext/prism/api_node.c.erb"
2962#line 244 "prism/templates/ext/prism/api_node.c.erb"
2963 argv[6] =
cast->rparen_loc.length == 0 ?
Qnil : pm_location_new(
cast->rparen_loc.start,
cast->rparen_loc.length, source, freeze);
2966#line 241 "prism/templates/ext/prism/api_node.c.erb"
2967 argv[7] = pm_location_new(
cast->keyword_loc.start,
cast->keyword_loc.length, source, freeze);
2975#line 191 "prism/templates/ext/prism/api_node.c.erb"
2976 case PM_ELSE_NODE: {
2993#line 241 "prism/templates/ext/prism/api_node.c.erb"
2994 argv[4] = pm_location_new(
cast->else_keyword_loc.start,
cast->else_keyword_loc.length, source, freeze);
2997#line 214 "prism/templates/ext/prism/api_node.c.erb"
3001#line 244 "prism/templates/ext/prism/api_node.c.erb"
3002 argv[6] =
cast->end_keyword_loc.length == 0 ?
Qnil : pm_location_new(
cast->end_keyword_loc.start,
cast->end_keyword_loc.length, source, freeze);
3010#line 191 "prism/templates/ext/prism/api_node.c.erb"
3011 case PM_EMBEDDED_STATEMENTS_NODE: {
3028#line 241 "prism/templates/ext/prism/api_node.c.erb"
3029 argv[4] = pm_location_new(
cast->opening_loc.start,
cast->opening_loc.length, source, freeze);
3032#line 214 "prism/templates/ext/prism/api_node.c.erb"
3036#line 241 "prism/templates/ext/prism/api_node.c.erb"
3037 argv[6] = pm_location_new(
cast->closing_loc.start,
cast->closing_loc.length, source, freeze);
3045#line 191 "prism/templates/ext/prism/api_node.c.erb"
3046 case PM_EMBEDDED_VARIABLE_NODE: {
3063#line 241 "prism/templates/ext/prism/api_node.c.erb"
3064 argv[4] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
3067#line 214 "prism/templates/ext/prism/api_node.c.erb"
3076#line 191 "prism/templates/ext/prism/api_node.c.erb"
3077 case PM_ENSURE_NODE: {
3094#line 241 "prism/templates/ext/prism/api_node.c.erb"
3095 argv[4] = pm_location_new(
cast->ensure_keyword_loc.start,
cast->ensure_keyword_loc.length, source, freeze);
3098#line 214 "prism/templates/ext/prism/api_node.c.erb"
3102#line 241 "prism/templates/ext/prism/api_node.c.erb"
3103 argv[6] = pm_location_new(
cast->end_keyword_loc.start,
cast->end_keyword_loc.length, source, freeze);
3111#line 191 "prism/templates/ext/prism/api_node.c.erb"
3112 case PM_ERROR_RECOVERY_NODE: {
3128#line 214 "prism/templates/ext/prism/api_node.c.erb"
3137#line 191 "prism/templates/ext/prism/api_node.c.erb"
3138 case PM_FALSE_NODE: {
3159#line 191 "prism/templates/ext/prism/api_node.c.erb"
3160 case PM_FIND_PATTERN_NODE: {
3177#line 214 "prism/templates/ext/prism/api_node.c.erb"
3181#line 214 "prism/templates/ext/prism/api_node.c.erb"
3185#line 217 "prism/templates/ext/prism/api_node.c.erb"
3187 for (
size_t index = 0; index <
cast->requireds.size; index++) {
3193#line 214 "prism/templates/ext/prism/api_node.c.erb"
3197#line 244 "prism/templates/ext/prism/api_node.c.erb"
3198 argv[8] =
cast->opening_loc.length == 0 ?
Qnil : pm_location_new(
cast->opening_loc.start,
cast->opening_loc.length, source, freeze);
3201#line 244 "prism/templates/ext/prism/api_node.c.erb"
3202 argv[9] =
cast->closing_loc.length == 0 ?
Qnil : pm_location_new(
cast->closing_loc.start,
cast->closing_loc.length, source, freeze);
3210#line 191 "prism/templates/ext/prism/api_node.c.erb"
3211 case PM_FLIP_FLOP_NODE: {
3228#line 214 "prism/templates/ext/prism/api_node.c.erb"
3232#line 214 "prism/templates/ext/prism/api_node.c.erb"
3236#line 241 "prism/templates/ext/prism/api_node.c.erb"
3237 argv[6] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
3245#line 191 "prism/templates/ext/prism/api_node.c.erb"
3246 case PM_FLOAT_NODE: {
3263#line 256 "prism/templates/ext/prism/api_node.c.erb"
3272#line 191 "prism/templates/ext/prism/api_node.c.erb"
3290#line 214 "prism/templates/ext/prism/api_node.c.erb"
3294#line 214 "prism/templates/ext/prism/api_node.c.erb"
3298#line 214 "prism/templates/ext/prism/api_node.c.erb"
3302#line 241 "prism/templates/ext/prism/api_node.c.erb"
3303 argv[7] = pm_location_new(
cast->for_keyword_loc.start,
cast->for_keyword_loc.length, source, freeze);
3306#line 241 "prism/templates/ext/prism/api_node.c.erb"
3307 argv[8] = pm_location_new(
cast->in_keyword_loc.start,
cast->in_keyword_loc.length, source, freeze);
3310#line 244 "prism/templates/ext/prism/api_node.c.erb"
3311 argv[9] =
cast->do_keyword_loc.length == 0 ?
Qnil : pm_location_new(
cast->do_keyword_loc.start,
cast->do_keyword_loc.length, source, freeze);
3314#line 241 "prism/templates/ext/prism/api_node.c.erb"
3315 argv[10] = pm_location_new(
cast->end_keyword_loc.start,
cast->end_keyword_loc.length, source, freeze);
3323#line 191 "prism/templates/ext/prism/api_node.c.erb"
3324 case PM_FORWARDING_ARGUMENTS_NODE: {
3345#line 191 "prism/templates/ext/prism/api_node.c.erb"
3346 case PM_FORWARDING_PARAMETER_NODE: {
3367#line 191 "prism/templates/ext/prism/api_node.c.erb"
3368 case PM_FORWARDING_SUPER_NODE: {
3385#line 241 "prism/templates/ext/prism/api_node.c.erb"
3386 argv[4] = pm_location_new(
cast->keyword_loc.start,
cast->keyword_loc.length, source, freeze);
3389#line 214 "prism/templates/ext/prism/api_node.c.erb"
3398#line 191 "prism/templates/ext/prism/api_node.c.erb"
3399 case PM_GLOBAL_VARIABLE_AND_WRITE_NODE: {
3416#line 227 "prism/templates/ext/prism/api_node.c.erb"
3417 PRISM_ASSERT(
cast->name != 0);
3421#line 241 "prism/templates/ext/prism/api_node.c.erb"
3422 argv[5] = pm_location_new(
cast->name_loc.start,
cast->name_loc.length, source, freeze);
3425#line 241 "prism/templates/ext/prism/api_node.c.erb"
3426 argv[6] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
3429#line 214 "prism/templates/ext/prism/api_node.c.erb"
3438#line 191 "prism/templates/ext/prism/api_node.c.erb"
3439 case PM_GLOBAL_VARIABLE_OPERATOR_WRITE_NODE: {
3456#line 227 "prism/templates/ext/prism/api_node.c.erb"
3457 PRISM_ASSERT(
cast->name != 0);
3461#line 241 "prism/templates/ext/prism/api_node.c.erb"
3462 argv[5] = pm_location_new(
cast->name_loc.start,
cast->name_loc.length, source, freeze);
3465#line 241 "prism/templates/ext/prism/api_node.c.erb"
3466 argv[6] = pm_location_new(
cast->binary_operator_loc.start,
cast->binary_operator_loc.length, source, freeze);
3469#line 214 "prism/templates/ext/prism/api_node.c.erb"
3473#line 227 "prism/templates/ext/prism/api_node.c.erb"
3474 PRISM_ASSERT(
cast->binary_operator != 0);
3483#line 191 "prism/templates/ext/prism/api_node.c.erb"
3484 case PM_GLOBAL_VARIABLE_OR_WRITE_NODE: {
3501#line 227 "prism/templates/ext/prism/api_node.c.erb"
3502 PRISM_ASSERT(
cast->name != 0);
3506#line 241 "prism/templates/ext/prism/api_node.c.erb"
3507 argv[5] = pm_location_new(
cast->name_loc.start,
cast->name_loc.length, source, freeze);
3510#line 241 "prism/templates/ext/prism/api_node.c.erb"
3511 argv[6] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
3514#line 214 "prism/templates/ext/prism/api_node.c.erb"
3523#line 191 "prism/templates/ext/prism/api_node.c.erb"
3524 case PM_GLOBAL_VARIABLE_READ_NODE: {
3541#line 227 "prism/templates/ext/prism/api_node.c.erb"
3542 PRISM_ASSERT(
cast->name != 0);
3551#line 191 "prism/templates/ext/prism/api_node.c.erb"
3552 case PM_GLOBAL_VARIABLE_TARGET_NODE: {
3569#line 227 "prism/templates/ext/prism/api_node.c.erb"
3570 PRISM_ASSERT(
cast->name != 0);
3579#line 191 "prism/templates/ext/prism/api_node.c.erb"
3580 case PM_GLOBAL_VARIABLE_WRITE_NODE: {
3597#line 227 "prism/templates/ext/prism/api_node.c.erb"
3598 PRISM_ASSERT(
cast->name != 0);
3602#line 241 "prism/templates/ext/prism/api_node.c.erb"
3603 argv[5] = pm_location_new(
cast->name_loc.start,
cast->name_loc.length, source, freeze);
3606#line 214 "prism/templates/ext/prism/api_node.c.erb"
3610#line 241 "prism/templates/ext/prism/api_node.c.erb"
3611 argv[7] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
3619#line 191 "prism/templates/ext/prism/api_node.c.erb"
3620 case PM_HASH_NODE: {
3637#line 241 "prism/templates/ext/prism/api_node.c.erb"
3638 argv[4] = pm_location_new(
cast->opening_loc.start,
cast->opening_loc.length, source, freeze);
3641#line 217 "prism/templates/ext/prism/api_node.c.erb"
3643 for (
size_t index = 0; index <
cast->elements.size; index++) {
3649#line 241 "prism/templates/ext/prism/api_node.c.erb"
3650 argv[6] = pm_location_new(
cast->closing_loc.start,
cast->closing_loc.length, source, freeze);
3658#line 191 "prism/templates/ext/prism/api_node.c.erb"
3659 case PM_HASH_PATTERN_NODE: {
3676#line 214 "prism/templates/ext/prism/api_node.c.erb"
3680#line 217 "prism/templates/ext/prism/api_node.c.erb"
3682 for (
size_t index = 0; index <
cast->elements.size; index++) {
3688#line 214 "prism/templates/ext/prism/api_node.c.erb"
3692#line 244 "prism/templates/ext/prism/api_node.c.erb"
3693 argv[7] =
cast->opening_loc.length == 0 ?
Qnil : pm_location_new(
cast->opening_loc.start,
cast->opening_loc.length, source, freeze);
3696#line 244 "prism/templates/ext/prism/api_node.c.erb"
3697 argv[8] =
cast->closing_loc.length == 0 ?
Qnil : pm_location_new(
cast->closing_loc.start,
cast->closing_loc.length, source, freeze);
3705#line 191 "prism/templates/ext/prism/api_node.c.erb"
3723#line 244 "prism/templates/ext/prism/api_node.c.erb"
3724 argv[4] =
cast->if_keyword_loc.length == 0 ?
Qnil : pm_location_new(
cast->if_keyword_loc.start,
cast->if_keyword_loc.length, source, freeze);
3727#line 214 "prism/templates/ext/prism/api_node.c.erb"
3731#line 244 "prism/templates/ext/prism/api_node.c.erb"
3732 argv[6] =
cast->then_keyword_loc.length == 0 ?
Qnil : pm_location_new(
cast->then_keyword_loc.start,
cast->then_keyword_loc.length, source, freeze);
3735#line 214 "prism/templates/ext/prism/api_node.c.erb"
3739#line 214 "prism/templates/ext/prism/api_node.c.erb"
3743#line 244 "prism/templates/ext/prism/api_node.c.erb"
3744 argv[9] =
cast->end_keyword_loc.length == 0 ?
Qnil : pm_location_new(
cast->end_keyword_loc.start,
cast->end_keyword_loc.length, source, freeze);
3752#line 191 "prism/templates/ext/prism/api_node.c.erb"
3753 case PM_IMAGINARY_NODE: {
3769#line 214 "prism/templates/ext/prism/api_node.c.erb"
3778#line 191 "prism/templates/ext/prism/api_node.c.erb"
3779 case PM_IMPLICIT_NODE: {
3795#line 214 "prism/templates/ext/prism/api_node.c.erb"
3804#line 191 "prism/templates/ext/prism/api_node.c.erb"
3805 case PM_IMPLICIT_REST_NODE: {
3826#line 191 "prism/templates/ext/prism/api_node.c.erb"
3844#line 214 "prism/templates/ext/prism/api_node.c.erb"
3848#line 214 "prism/templates/ext/prism/api_node.c.erb"
3852#line 241 "prism/templates/ext/prism/api_node.c.erb"
3853 argv[6] = pm_location_new(
cast->in_keyword_loc.start,
cast->in_keyword_loc.length, source, freeze);
3856#line 244 "prism/templates/ext/prism/api_node.c.erb"
3857 argv[7] =
cast->then_keyword_loc.length == 0 ?
Qnil : pm_location_new(
cast->then_keyword_loc.start,
cast->then_keyword_loc.length, source, freeze);
3865#line 191 "prism/templates/ext/prism/api_node.c.erb"
3866 case PM_INDEX_AND_WRITE_NODE: {
3883#line 214 "prism/templates/ext/prism/api_node.c.erb"
3887#line 244 "prism/templates/ext/prism/api_node.c.erb"
3888 argv[5] =
cast->call_operator_loc.length == 0 ?
Qnil : pm_location_new(
cast->call_operator_loc.start,
cast->call_operator_loc.length, source, freeze);
3891#line 241 "prism/templates/ext/prism/api_node.c.erb"
3892 argv[6] = pm_location_new(
cast->opening_loc.start,
cast->opening_loc.length, source, freeze);
3895#line 214 "prism/templates/ext/prism/api_node.c.erb"
3899#line 241 "prism/templates/ext/prism/api_node.c.erb"
3900 argv[8] = pm_location_new(
cast->closing_loc.start,
cast->closing_loc.length, source, freeze);
3903#line 214 "prism/templates/ext/prism/api_node.c.erb"
3907#line 241 "prism/templates/ext/prism/api_node.c.erb"
3908 argv[10] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
3911#line 214 "prism/templates/ext/prism/api_node.c.erb"
3920#line 191 "prism/templates/ext/prism/api_node.c.erb"
3921 case PM_INDEX_OPERATOR_WRITE_NODE: {
3938#line 214 "prism/templates/ext/prism/api_node.c.erb"
3942#line 244 "prism/templates/ext/prism/api_node.c.erb"
3943 argv[5] =
cast->call_operator_loc.length == 0 ?
Qnil : pm_location_new(
cast->call_operator_loc.start,
cast->call_operator_loc.length, source, freeze);
3946#line 241 "prism/templates/ext/prism/api_node.c.erb"
3947 argv[6] = pm_location_new(
cast->opening_loc.start,
cast->opening_loc.length, source, freeze);
3950#line 214 "prism/templates/ext/prism/api_node.c.erb"
3954#line 241 "prism/templates/ext/prism/api_node.c.erb"
3955 argv[8] = pm_location_new(
cast->closing_loc.start,
cast->closing_loc.length, source, freeze);
3958#line 214 "prism/templates/ext/prism/api_node.c.erb"
3962#line 227 "prism/templates/ext/prism/api_node.c.erb"
3963 PRISM_ASSERT(
cast->binary_operator != 0);
3967#line 241 "prism/templates/ext/prism/api_node.c.erb"
3968 argv[11] = pm_location_new(
cast->binary_operator_loc.start,
cast->binary_operator_loc.length, source, freeze);
3971#line 214 "prism/templates/ext/prism/api_node.c.erb"
3980#line 191 "prism/templates/ext/prism/api_node.c.erb"
3981 case PM_INDEX_OR_WRITE_NODE: {
3998#line 214 "prism/templates/ext/prism/api_node.c.erb"
4002#line 244 "prism/templates/ext/prism/api_node.c.erb"
4003 argv[5] =
cast->call_operator_loc.length == 0 ?
Qnil : pm_location_new(
cast->call_operator_loc.start,
cast->call_operator_loc.length, source, freeze);
4006#line 241 "prism/templates/ext/prism/api_node.c.erb"
4007 argv[6] = pm_location_new(
cast->opening_loc.start,
cast->opening_loc.length, source, freeze);
4010#line 214 "prism/templates/ext/prism/api_node.c.erb"
4014#line 241 "prism/templates/ext/prism/api_node.c.erb"
4015 argv[8] = pm_location_new(
cast->closing_loc.start,
cast->closing_loc.length, source, freeze);
4018#line 214 "prism/templates/ext/prism/api_node.c.erb"
4022#line 241 "prism/templates/ext/prism/api_node.c.erb"
4023 argv[10] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
4026#line 214 "prism/templates/ext/prism/api_node.c.erb"
4035#line 191 "prism/templates/ext/prism/api_node.c.erb"
4036 case PM_INDEX_TARGET_NODE: {
4053#line 214 "prism/templates/ext/prism/api_node.c.erb"
4057#line 241 "prism/templates/ext/prism/api_node.c.erb"
4058 argv[5] = pm_location_new(
cast->opening_loc.start,
cast->opening_loc.length, source, freeze);
4061#line 214 "prism/templates/ext/prism/api_node.c.erb"
4065#line 241 "prism/templates/ext/prism/api_node.c.erb"
4066 argv[7] = pm_location_new(
cast->closing_loc.start,
cast->closing_loc.length, source, freeze);
4069#line 214 "prism/templates/ext/prism/api_node.c.erb"
4078#line 191 "prism/templates/ext/prism/api_node.c.erb"
4079 case PM_INSTANCE_VARIABLE_AND_WRITE_NODE: {
4096#line 227 "prism/templates/ext/prism/api_node.c.erb"
4097 PRISM_ASSERT(
cast->name != 0);
4101#line 241 "prism/templates/ext/prism/api_node.c.erb"
4102 argv[5] = pm_location_new(
cast->name_loc.start,
cast->name_loc.length, source, freeze);
4105#line 241 "prism/templates/ext/prism/api_node.c.erb"
4106 argv[6] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
4109#line 214 "prism/templates/ext/prism/api_node.c.erb"
4118#line 191 "prism/templates/ext/prism/api_node.c.erb"
4119 case PM_INSTANCE_VARIABLE_OPERATOR_WRITE_NODE: {
4136#line 227 "prism/templates/ext/prism/api_node.c.erb"
4137 PRISM_ASSERT(
cast->name != 0);
4141#line 241 "prism/templates/ext/prism/api_node.c.erb"
4142 argv[5] = pm_location_new(
cast->name_loc.start,
cast->name_loc.length, source, freeze);
4145#line 241 "prism/templates/ext/prism/api_node.c.erb"
4146 argv[6] = pm_location_new(
cast->binary_operator_loc.start,
cast->binary_operator_loc.length, source, freeze);
4149#line 214 "prism/templates/ext/prism/api_node.c.erb"
4153#line 227 "prism/templates/ext/prism/api_node.c.erb"
4154 PRISM_ASSERT(
cast->binary_operator != 0);
4163#line 191 "prism/templates/ext/prism/api_node.c.erb"
4164 case PM_INSTANCE_VARIABLE_OR_WRITE_NODE: {
4181#line 227 "prism/templates/ext/prism/api_node.c.erb"
4182 PRISM_ASSERT(
cast->name != 0);
4186#line 241 "prism/templates/ext/prism/api_node.c.erb"
4187 argv[5] = pm_location_new(
cast->name_loc.start,
cast->name_loc.length, source, freeze);
4190#line 241 "prism/templates/ext/prism/api_node.c.erb"
4191 argv[6] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
4194#line 214 "prism/templates/ext/prism/api_node.c.erb"
4203#line 191 "prism/templates/ext/prism/api_node.c.erb"
4204 case PM_INSTANCE_VARIABLE_READ_NODE: {
4221#line 227 "prism/templates/ext/prism/api_node.c.erb"
4222 PRISM_ASSERT(
cast->name != 0);
4231#line 191 "prism/templates/ext/prism/api_node.c.erb"
4232 case PM_INSTANCE_VARIABLE_TARGET_NODE: {
4249#line 227 "prism/templates/ext/prism/api_node.c.erb"
4250 PRISM_ASSERT(
cast->name != 0);
4259#line 191 "prism/templates/ext/prism/api_node.c.erb"
4260 case PM_INSTANCE_VARIABLE_WRITE_NODE: {
4277#line 227 "prism/templates/ext/prism/api_node.c.erb"
4278 PRISM_ASSERT(
cast->name != 0);
4282#line 241 "prism/templates/ext/prism/api_node.c.erb"
4283 argv[5] = pm_location_new(
cast->name_loc.start,
cast->name_loc.length, source, freeze);
4286#line 214 "prism/templates/ext/prism/api_node.c.erb"
4290#line 241 "prism/templates/ext/prism/api_node.c.erb"
4291 argv[7] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
4299#line 191 "prism/templates/ext/prism/api_node.c.erb"
4300 case PM_INTEGER_NODE: {
4317#line 253 "prism/templates/ext/prism/api_node.c.erb"
4318 argv[4] = pm_integer_new(&
cast->value);
4326#line 191 "prism/templates/ext/prism/api_node.c.erb"
4327 case PM_INTERPOLATED_MATCH_LAST_LINE_NODE: {
4344#line 241 "prism/templates/ext/prism/api_node.c.erb"
4345 argv[4] = pm_location_new(
cast->opening_loc.start,
cast->opening_loc.length, source, freeze);
4348#line 217 "prism/templates/ext/prism/api_node.c.erb"
4350 for (
size_t index = 0; index <
cast->parts.size; index++) {
4356#line 241 "prism/templates/ext/prism/api_node.c.erb"
4357 argv[6] = pm_location_new(
cast->closing_loc.start,
cast->closing_loc.length, source, freeze);
4365#line 191 "prism/templates/ext/prism/api_node.c.erb"
4366 case PM_INTERPOLATED_REGULAR_EXPRESSION_NODE: {
4383#line 241 "prism/templates/ext/prism/api_node.c.erb"
4384 argv[4] = pm_location_new(
cast->opening_loc.start,
cast->opening_loc.length, source, freeze);
4387#line 217 "prism/templates/ext/prism/api_node.c.erb"
4389 for (
size_t index = 0; index <
cast->parts.size; index++) {
4395#line 241 "prism/templates/ext/prism/api_node.c.erb"
4396 argv[6] = pm_location_new(
cast->closing_loc.start,
cast->closing_loc.length, source, freeze);
4404#line 191 "prism/templates/ext/prism/api_node.c.erb"
4405 case PM_INTERPOLATED_STRING_NODE: {
4422#line 244 "prism/templates/ext/prism/api_node.c.erb"
4423 argv[4] =
cast->opening_loc.length == 0 ?
Qnil : pm_location_new(
cast->opening_loc.start,
cast->opening_loc.length, source, freeze);
4426#line 217 "prism/templates/ext/prism/api_node.c.erb"
4428 for (
size_t index = 0; index <
cast->parts.size; index++) {
4434#line 244 "prism/templates/ext/prism/api_node.c.erb"
4435 argv[6] =
cast->closing_loc.length == 0 ?
Qnil : pm_location_new(
cast->closing_loc.start,
cast->closing_loc.length, source, freeze);
4443#line 191 "prism/templates/ext/prism/api_node.c.erb"
4444 case PM_INTERPOLATED_SYMBOL_NODE: {
4461#line 244 "prism/templates/ext/prism/api_node.c.erb"
4462 argv[4] =
cast->opening_loc.length == 0 ?
Qnil : pm_location_new(
cast->opening_loc.start,
cast->opening_loc.length, source, freeze);
4465#line 217 "prism/templates/ext/prism/api_node.c.erb"
4467 for (
size_t index = 0; index <
cast->parts.size; index++) {
4473#line 244 "prism/templates/ext/prism/api_node.c.erb"
4474 argv[6] =
cast->closing_loc.length == 0 ?
Qnil : pm_location_new(
cast->closing_loc.start,
cast->closing_loc.length, source, freeze);
4482#line 191 "prism/templates/ext/prism/api_node.c.erb"
4483 case PM_INTERPOLATED_X_STRING_NODE: {
4500#line 241 "prism/templates/ext/prism/api_node.c.erb"
4501 argv[4] = pm_location_new(
cast->opening_loc.start,
cast->opening_loc.length, source, freeze);
4504#line 217 "prism/templates/ext/prism/api_node.c.erb"
4506 for (
size_t index = 0; index <
cast->parts.size; index++) {
4512#line 241 "prism/templates/ext/prism/api_node.c.erb"
4513 argv[6] = pm_location_new(
cast->closing_loc.start,
cast->closing_loc.length, source, freeze);
4521#line 191 "prism/templates/ext/prism/api_node.c.erb"
4522 case PM_IT_LOCAL_VARIABLE_READ_NODE: {
4543#line 191 "prism/templates/ext/prism/api_node.c.erb"
4544 case PM_IT_PARAMETERS_NODE: {
4565#line 191 "prism/templates/ext/prism/api_node.c.erb"
4566 case PM_KEYWORD_HASH_NODE: {
4583#line 217 "prism/templates/ext/prism/api_node.c.erb"
4585 for (
size_t index = 0; index <
cast->elements.size; index++) {
4596#line 191 "prism/templates/ext/prism/api_node.c.erb"
4597 case PM_KEYWORD_REST_PARAMETER_NODE: {
4617#line 244 "prism/templates/ext/prism/api_node.c.erb"
4618 argv[5] =
cast->name_loc.length == 0 ?
Qnil : pm_location_new(
cast->name_loc.start,
cast->name_loc.length, source, freeze);
4621#line 241 "prism/templates/ext/prism/api_node.c.erb"
4622 argv[6] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
4630#line 191 "prism/templates/ext/prism/api_node.c.erb"
4631 case PM_LAMBDA_NODE: {
4648#line 233 "prism/templates/ext/prism/api_node.c.erb"
4650 for (
size_t index = 0; index <
cast->locals.size; index++) {
4651 PRISM_ASSERT(
cast->locals.ids[index] != 0);
4657#line 241 "prism/templates/ext/prism/api_node.c.erb"
4658 argv[5] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
4661#line 241 "prism/templates/ext/prism/api_node.c.erb"
4662 argv[6] = pm_location_new(
cast->opening_loc.start,
cast->opening_loc.length, source, freeze);
4665#line 241 "prism/templates/ext/prism/api_node.c.erb"
4666 argv[7] = pm_location_new(
cast->closing_loc.start,
cast->closing_loc.length, source, freeze);
4669#line 214 "prism/templates/ext/prism/api_node.c.erb"
4673#line 214 "prism/templates/ext/prism/api_node.c.erb"
4682#line 191 "prism/templates/ext/prism/api_node.c.erb"
4683 case PM_LOCAL_VARIABLE_AND_WRITE_NODE: {
4700#line 241 "prism/templates/ext/prism/api_node.c.erb"
4701 argv[4] = pm_location_new(
cast->name_loc.start,
cast->name_loc.length, source, freeze);
4704#line 241 "prism/templates/ext/prism/api_node.c.erb"
4705 argv[5] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
4708#line 214 "prism/templates/ext/prism/api_node.c.erb"
4712#line 227 "prism/templates/ext/prism/api_node.c.erb"
4713 PRISM_ASSERT(
cast->name != 0);
4717#line 250 "prism/templates/ext/prism/api_node.c.erb"
4726#line 191 "prism/templates/ext/prism/api_node.c.erb"
4727 case PM_LOCAL_VARIABLE_OPERATOR_WRITE_NODE: {
4744#line 241 "prism/templates/ext/prism/api_node.c.erb"
4745 argv[4] = pm_location_new(
cast->name_loc.start,
cast->name_loc.length, source, freeze);
4748#line 241 "prism/templates/ext/prism/api_node.c.erb"
4749 argv[5] = pm_location_new(
cast->binary_operator_loc.start,
cast->binary_operator_loc.length, source, freeze);
4752#line 214 "prism/templates/ext/prism/api_node.c.erb"
4756#line 227 "prism/templates/ext/prism/api_node.c.erb"
4757 PRISM_ASSERT(
cast->name != 0);
4761#line 227 "prism/templates/ext/prism/api_node.c.erb"
4762 PRISM_ASSERT(
cast->binary_operator != 0);
4766#line 250 "prism/templates/ext/prism/api_node.c.erb"
4775#line 191 "prism/templates/ext/prism/api_node.c.erb"
4776 case PM_LOCAL_VARIABLE_OR_WRITE_NODE: {
4793#line 241 "prism/templates/ext/prism/api_node.c.erb"
4794 argv[4] = pm_location_new(
cast->name_loc.start,
cast->name_loc.length, source, freeze);
4797#line 241 "prism/templates/ext/prism/api_node.c.erb"
4798 argv[5] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
4801#line 214 "prism/templates/ext/prism/api_node.c.erb"
4805#line 227 "prism/templates/ext/prism/api_node.c.erb"
4806 PRISM_ASSERT(
cast->name != 0);
4810#line 250 "prism/templates/ext/prism/api_node.c.erb"
4819#line 191 "prism/templates/ext/prism/api_node.c.erb"
4820 case PM_LOCAL_VARIABLE_READ_NODE: {
4837#line 227 "prism/templates/ext/prism/api_node.c.erb"
4838 PRISM_ASSERT(
cast->name != 0);
4842#line 250 "prism/templates/ext/prism/api_node.c.erb"
4851#line 191 "prism/templates/ext/prism/api_node.c.erb"
4852 case PM_LOCAL_VARIABLE_TARGET_NODE: {
4869#line 227 "prism/templates/ext/prism/api_node.c.erb"
4870 PRISM_ASSERT(
cast->name != 0);
4874#line 250 "prism/templates/ext/prism/api_node.c.erb"
4883#line 191 "prism/templates/ext/prism/api_node.c.erb"
4884 case PM_LOCAL_VARIABLE_WRITE_NODE: {
4901#line 227 "prism/templates/ext/prism/api_node.c.erb"
4902 PRISM_ASSERT(
cast->name != 0);
4906#line 250 "prism/templates/ext/prism/api_node.c.erb"
4910#line 241 "prism/templates/ext/prism/api_node.c.erb"
4911 argv[6] = pm_location_new(
cast->name_loc.start,
cast->name_loc.length, source, freeze);
4914#line 214 "prism/templates/ext/prism/api_node.c.erb"
4918#line 241 "prism/templates/ext/prism/api_node.c.erb"
4919 argv[8] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
4927#line 191 "prism/templates/ext/prism/api_node.c.erb"
4928 case PM_MATCH_LAST_LINE_NODE: {
4945#line 241 "prism/templates/ext/prism/api_node.c.erb"
4946 argv[4] = pm_location_new(
cast->opening_loc.start,
cast->opening_loc.length, source, freeze);
4949#line 241 "prism/templates/ext/prism/api_node.c.erb"
4950 argv[5] = pm_location_new(
cast->content_loc.start,
cast->content_loc.length, source, freeze);
4953#line 241 "prism/templates/ext/prism/api_node.c.erb"
4954 argv[6] = pm_location_new(
cast->closing_loc.start,
cast->closing_loc.length, source, freeze);
4957#line 224 "prism/templates/ext/prism/api_node.c.erb"
4958 argv[7] = pm_string_new(&
cast->unescaped, encoding);
4966#line 191 "prism/templates/ext/prism/api_node.c.erb"
4967 case PM_MATCH_PREDICATE_NODE: {
4984#line 214 "prism/templates/ext/prism/api_node.c.erb"
4988#line 214 "prism/templates/ext/prism/api_node.c.erb"
4992#line 241 "prism/templates/ext/prism/api_node.c.erb"
4993 argv[6] = pm_location_new(
cast->keyword_loc.start,
cast->keyword_loc.length, source, freeze);
5001#line 191 "prism/templates/ext/prism/api_node.c.erb"
5002 case PM_MATCH_REQUIRED_NODE: {
5019#line 214 "prism/templates/ext/prism/api_node.c.erb"
5023#line 214 "prism/templates/ext/prism/api_node.c.erb"
5027#line 241 "prism/templates/ext/prism/api_node.c.erb"
5028 argv[6] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
5036#line 191 "prism/templates/ext/prism/api_node.c.erb"
5037 case PM_MATCH_WRITE_NODE: {
5054#line 214 "prism/templates/ext/prism/api_node.c.erb"
5058#line 217 "prism/templates/ext/prism/api_node.c.erb"
5060 for (
size_t index = 0; index <
cast->targets.size; index++) {
5071#line 191 "prism/templates/ext/prism/api_node.c.erb"
5072 case PM_MODULE_NODE: {
5089#line 233 "prism/templates/ext/prism/api_node.c.erb"
5091 for (
size_t index = 0; index <
cast->locals.size; index++) {
5092 PRISM_ASSERT(
cast->locals.ids[index] != 0);
5098#line 241 "prism/templates/ext/prism/api_node.c.erb"
5099 argv[5] = pm_location_new(
cast->module_keyword_loc.start,
cast->module_keyword_loc.length, source, freeze);
5102#line 214 "prism/templates/ext/prism/api_node.c.erb"
5106#line 214 "prism/templates/ext/prism/api_node.c.erb"
5110#line 241 "prism/templates/ext/prism/api_node.c.erb"
5111 argv[8] = pm_location_new(
cast->end_keyword_loc.start,
cast->end_keyword_loc.length, source, freeze);
5114#line 227 "prism/templates/ext/prism/api_node.c.erb"
5115 PRISM_ASSERT(
cast->name != 0);
5124#line 191 "prism/templates/ext/prism/api_node.c.erb"
5125 case PM_MULTI_TARGET_NODE: {
5142#line 217 "prism/templates/ext/prism/api_node.c.erb"
5144 for (
size_t index = 0; index <
cast->lefts.size; index++) {
5150#line 214 "prism/templates/ext/prism/api_node.c.erb"
5154#line 217 "prism/templates/ext/prism/api_node.c.erb"
5156 for (
size_t index = 0; index <
cast->rights.size; index++) {
5162#line 244 "prism/templates/ext/prism/api_node.c.erb"
5163 argv[7] =
cast->lparen_loc.length == 0 ?
Qnil : pm_location_new(
cast->lparen_loc.start,
cast->lparen_loc.length, source, freeze);
5166#line 244 "prism/templates/ext/prism/api_node.c.erb"
5167 argv[8] =
cast->rparen_loc.length == 0 ?
Qnil : pm_location_new(
cast->rparen_loc.start,
cast->rparen_loc.length, source, freeze);
5175#line 191 "prism/templates/ext/prism/api_node.c.erb"
5176 case PM_MULTI_WRITE_NODE: {
5193#line 217 "prism/templates/ext/prism/api_node.c.erb"
5195 for (
size_t index = 0; index <
cast->lefts.size; index++) {
5201#line 214 "prism/templates/ext/prism/api_node.c.erb"
5205#line 217 "prism/templates/ext/prism/api_node.c.erb"
5207 for (
size_t index = 0; index <
cast->rights.size; index++) {
5213#line 244 "prism/templates/ext/prism/api_node.c.erb"
5214 argv[7] =
cast->lparen_loc.length == 0 ?
Qnil : pm_location_new(
cast->lparen_loc.start,
cast->lparen_loc.length, source, freeze);
5217#line 244 "prism/templates/ext/prism/api_node.c.erb"
5218 argv[8] =
cast->rparen_loc.length == 0 ?
Qnil : pm_location_new(
cast->rparen_loc.start,
cast->rparen_loc.length, source, freeze);
5221#line 241 "prism/templates/ext/prism/api_node.c.erb"
5222 argv[9] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
5225#line 214 "prism/templates/ext/prism/api_node.c.erb"
5234#line 191 "prism/templates/ext/prism/api_node.c.erb"
5235 case PM_NEXT_NODE: {
5252#line 214 "prism/templates/ext/prism/api_node.c.erb"
5256#line 241 "prism/templates/ext/prism/api_node.c.erb"
5257 argv[5] = pm_location_new(
cast->keyword_loc.start,
cast->keyword_loc.length, source, freeze);
5265#line 191 "prism/templates/ext/prism/api_node.c.erb"
5287#line 191 "prism/templates/ext/prism/api_node.c.erb"
5288 case PM_NO_BLOCK_PARAMETER_NODE: {
5305#line 241 "prism/templates/ext/prism/api_node.c.erb"
5306 argv[4] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
5309#line 241 "prism/templates/ext/prism/api_node.c.erb"
5310 argv[5] = pm_location_new(
cast->keyword_loc.start,
cast->keyword_loc.length, source, freeze);
5318#line 191 "prism/templates/ext/prism/api_node.c.erb"
5319 case PM_NO_KEYWORDS_PARAMETER_NODE: {
5336#line 241 "prism/templates/ext/prism/api_node.c.erb"
5337 argv[4] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
5340#line 241 "prism/templates/ext/prism/api_node.c.erb"
5341 argv[5] = pm_location_new(
cast->keyword_loc.start,
cast->keyword_loc.length, source, freeze);
5349#line 191 "prism/templates/ext/prism/api_node.c.erb"
5350 case PM_NUMBERED_PARAMETERS_NODE: {
5367#line 247 "prism/templates/ext/prism/api_node.c.erb"
5376#line 191 "prism/templates/ext/prism/api_node.c.erb"
5377 case PM_NUMBERED_REFERENCE_READ_NODE: {
5394#line 250 "prism/templates/ext/prism/api_node.c.erb"
5403#line 191 "prism/templates/ext/prism/api_node.c.erb"
5404 case PM_OPTIONAL_KEYWORD_PARAMETER_NODE: {
5421#line 227 "prism/templates/ext/prism/api_node.c.erb"
5422 PRISM_ASSERT(
cast->name != 0);
5426#line 241 "prism/templates/ext/prism/api_node.c.erb"
5427 argv[5] = pm_location_new(
cast->name_loc.start,
cast->name_loc.length, source, freeze);
5430#line 214 "prism/templates/ext/prism/api_node.c.erb"
5439#line 191 "prism/templates/ext/prism/api_node.c.erb"
5440 case PM_OPTIONAL_PARAMETER_NODE: {
5457#line 227 "prism/templates/ext/prism/api_node.c.erb"
5458 PRISM_ASSERT(
cast->name != 0);
5462#line 241 "prism/templates/ext/prism/api_node.c.erb"
5463 argv[5] = pm_location_new(
cast->name_loc.start,
cast->name_loc.length, source, freeze);
5466#line 241 "prism/templates/ext/prism/api_node.c.erb"
5467 argv[6] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
5470#line 214 "prism/templates/ext/prism/api_node.c.erb"
5479#line 191 "prism/templates/ext/prism/api_node.c.erb"
5497#line 214 "prism/templates/ext/prism/api_node.c.erb"
5501#line 214 "prism/templates/ext/prism/api_node.c.erb"
5505#line 241 "prism/templates/ext/prism/api_node.c.erb"
5506 argv[6] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
5514#line 191 "prism/templates/ext/prism/api_node.c.erb"
5515 case PM_PARAMETERS_NODE: {
5532#line 217 "prism/templates/ext/prism/api_node.c.erb"
5534 for (
size_t index = 0; index <
cast->requireds.size; index++) {
5540#line 217 "prism/templates/ext/prism/api_node.c.erb"
5542 for (
size_t index = 0; index <
cast->optionals.size; index++) {
5548#line 214 "prism/templates/ext/prism/api_node.c.erb"
5552#line 217 "prism/templates/ext/prism/api_node.c.erb"
5554 for (
size_t index = 0; index <
cast->posts.size; index++) {
5560#line 217 "prism/templates/ext/prism/api_node.c.erb"
5562 for (
size_t index = 0; index <
cast->keywords.size; index++) {
5568#line 214 "prism/templates/ext/prism/api_node.c.erb"
5572#line 214 "prism/templates/ext/prism/api_node.c.erb"
5581#line 191 "prism/templates/ext/prism/api_node.c.erb"
5582 case PM_PARENTHESES_NODE: {
5599#line 214 "prism/templates/ext/prism/api_node.c.erb"
5603#line 241 "prism/templates/ext/prism/api_node.c.erb"
5604 argv[5] = pm_location_new(
cast->opening_loc.start,
cast->opening_loc.length, source, freeze);
5607#line 241 "prism/templates/ext/prism/api_node.c.erb"
5608 argv[6] = pm_location_new(
cast->closing_loc.start,
cast->closing_loc.length, source, freeze);
5616#line 191 "prism/templates/ext/prism/api_node.c.erb"
5617 case PM_PINNED_EXPRESSION_NODE: {
5634#line 214 "prism/templates/ext/prism/api_node.c.erb"
5638#line 241 "prism/templates/ext/prism/api_node.c.erb"
5639 argv[5] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
5642#line 241 "prism/templates/ext/prism/api_node.c.erb"
5643 argv[6] = pm_location_new(
cast->lparen_loc.start,
cast->lparen_loc.length, source, freeze);
5646#line 241 "prism/templates/ext/prism/api_node.c.erb"
5647 argv[7] = pm_location_new(
cast->rparen_loc.start,
cast->rparen_loc.length, source, freeze);
5655#line 191 "prism/templates/ext/prism/api_node.c.erb"
5656 case PM_PINNED_VARIABLE_NODE: {
5673#line 214 "prism/templates/ext/prism/api_node.c.erb"
5677#line 241 "prism/templates/ext/prism/api_node.c.erb"
5678 argv[5] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
5686#line 191 "prism/templates/ext/prism/api_node.c.erb"
5687 case PM_POST_EXECUTION_NODE: {
5704#line 214 "prism/templates/ext/prism/api_node.c.erb"
5708#line 241 "prism/templates/ext/prism/api_node.c.erb"
5709 argv[5] = pm_location_new(
cast->keyword_loc.start,
cast->keyword_loc.length, source, freeze);
5712#line 241 "prism/templates/ext/prism/api_node.c.erb"
5713 argv[6] = pm_location_new(
cast->opening_loc.start,
cast->opening_loc.length, source, freeze);
5716#line 241 "prism/templates/ext/prism/api_node.c.erb"
5717 argv[7] = pm_location_new(
cast->closing_loc.start,
cast->closing_loc.length, source, freeze);
5725#line 191 "prism/templates/ext/prism/api_node.c.erb"
5726 case PM_PRE_EXECUTION_NODE: {
5743#line 214 "prism/templates/ext/prism/api_node.c.erb"
5747#line 241 "prism/templates/ext/prism/api_node.c.erb"
5748 argv[5] = pm_location_new(
cast->keyword_loc.start,
cast->keyword_loc.length, source, freeze);
5751#line 241 "prism/templates/ext/prism/api_node.c.erb"
5752 argv[6] = pm_location_new(
cast->opening_loc.start,
cast->opening_loc.length, source, freeze);
5755#line 241 "prism/templates/ext/prism/api_node.c.erb"
5756 argv[7] = pm_location_new(
cast->closing_loc.start,
cast->closing_loc.length, source, freeze);
5764#line 191 "prism/templates/ext/prism/api_node.c.erb"
5765 case PM_PROGRAM_NODE: {
5782#line 233 "prism/templates/ext/prism/api_node.c.erb"
5784 for (
size_t index = 0; index <
cast->locals.size; index++) {
5785 PRISM_ASSERT(
cast->locals.ids[index] != 0);
5791#line 214 "prism/templates/ext/prism/api_node.c.erb"
5800#line 191 "prism/templates/ext/prism/api_node.c.erb"
5801 case PM_RANGE_NODE: {
5818#line 214 "prism/templates/ext/prism/api_node.c.erb"
5822#line 214 "prism/templates/ext/prism/api_node.c.erb"
5826#line 241 "prism/templates/ext/prism/api_node.c.erb"
5827 argv[6] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
5835#line 191 "prism/templates/ext/prism/api_node.c.erb"
5836 case PM_RATIONAL_NODE: {
5853#line 253 "prism/templates/ext/prism/api_node.c.erb"
5854 argv[4] = pm_integer_new(&
cast->numerator);
5857#line 253 "prism/templates/ext/prism/api_node.c.erb"
5858 argv[5] = pm_integer_new(&
cast->denominator);
5866#line 191 "prism/templates/ext/prism/api_node.c.erb"
5867 case PM_REDO_NODE: {
5888#line 191 "prism/templates/ext/prism/api_node.c.erb"
5889 case PM_REGULAR_EXPRESSION_NODE: {
5906#line 241 "prism/templates/ext/prism/api_node.c.erb"
5907 argv[4] = pm_location_new(
cast->opening_loc.start,
cast->opening_loc.length, source, freeze);
5910#line 241 "prism/templates/ext/prism/api_node.c.erb"
5911 argv[5] = pm_location_new(
cast->content_loc.start,
cast->content_loc.length, source, freeze);
5914#line 241 "prism/templates/ext/prism/api_node.c.erb"
5915 argv[6] = pm_location_new(
cast->closing_loc.start,
cast->closing_loc.length, source, freeze);
5918#line 224 "prism/templates/ext/prism/api_node.c.erb"
5919 argv[7] = pm_string_new(&
cast->unescaped, encoding);
5927#line 191 "prism/templates/ext/prism/api_node.c.erb"
5928 case PM_REQUIRED_KEYWORD_PARAMETER_NODE: {
5945#line 227 "prism/templates/ext/prism/api_node.c.erb"
5946 PRISM_ASSERT(
cast->name != 0);
5950#line 241 "prism/templates/ext/prism/api_node.c.erb"
5951 argv[5] = pm_location_new(
cast->name_loc.start,
cast->name_loc.length, source, freeze);
5959#line 191 "prism/templates/ext/prism/api_node.c.erb"
5960 case PM_REQUIRED_PARAMETER_NODE: {
5977#line 227 "prism/templates/ext/prism/api_node.c.erb"
5978 PRISM_ASSERT(
cast->name != 0);
5987#line 191 "prism/templates/ext/prism/api_node.c.erb"
5988 case PM_RESCUE_MODIFIER_NODE: {
6005#line 214 "prism/templates/ext/prism/api_node.c.erb"
6009#line 241 "prism/templates/ext/prism/api_node.c.erb"
6010 argv[5] = pm_location_new(
cast->keyword_loc.start,
cast->keyword_loc.length, source, freeze);
6013#line 214 "prism/templates/ext/prism/api_node.c.erb"
6022#line 191 "prism/templates/ext/prism/api_node.c.erb"
6023 case PM_RESCUE_NODE: {
6040#line 241 "prism/templates/ext/prism/api_node.c.erb"
6041 argv[4] = pm_location_new(
cast->keyword_loc.start,
cast->keyword_loc.length, source, freeze);
6044#line 217 "prism/templates/ext/prism/api_node.c.erb"
6046 for (
size_t index = 0; index <
cast->exceptions.size; index++) {
6052#line 244 "prism/templates/ext/prism/api_node.c.erb"
6053 argv[6] =
cast->operator_loc.length == 0 ?
Qnil : pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
6056#line 214 "prism/templates/ext/prism/api_node.c.erb"
6060#line 244 "prism/templates/ext/prism/api_node.c.erb"
6061 argv[8] =
cast->then_keyword_loc.length == 0 ?
Qnil : pm_location_new(
cast->then_keyword_loc.start,
cast->then_keyword_loc.length, source, freeze);
6064#line 214 "prism/templates/ext/prism/api_node.c.erb"
6068#line 214 "prism/templates/ext/prism/api_node.c.erb"
6077#line 191 "prism/templates/ext/prism/api_node.c.erb"
6078 case PM_REST_PARAMETER_NODE: {
6098#line 244 "prism/templates/ext/prism/api_node.c.erb"
6099 argv[5] =
cast->name_loc.length == 0 ?
Qnil : pm_location_new(
cast->name_loc.start,
cast->name_loc.length, source, freeze);
6102#line 241 "prism/templates/ext/prism/api_node.c.erb"
6103 argv[6] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
6111#line 191 "prism/templates/ext/prism/api_node.c.erb"
6112 case PM_RETRY_NODE: {
6133#line 191 "prism/templates/ext/prism/api_node.c.erb"
6134 case PM_RETURN_NODE: {
6151#line 241 "prism/templates/ext/prism/api_node.c.erb"
6152 argv[4] = pm_location_new(
cast->keyword_loc.start,
cast->keyword_loc.length, source, freeze);
6155#line 214 "prism/templates/ext/prism/api_node.c.erb"
6164#line 191 "prism/templates/ext/prism/api_node.c.erb"
6165 case PM_SELF_NODE: {
6186#line 191 "prism/templates/ext/prism/api_node.c.erb"
6187 case PM_SHAREABLE_CONSTANT_NODE: {
6203#line 214 "prism/templates/ext/prism/api_node.c.erb"
6212#line 191 "prism/templates/ext/prism/api_node.c.erb"
6213 case PM_SINGLETON_CLASS_NODE: {
6230#line 233 "prism/templates/ext/prism/api_node.c.erb"
6232 for (
size_t index = 0; index <
cast->locals.size; index++) {
6233 PRISM_ASSERT(
cast->locals.ids[index] != 0);
6239#line 241 "prism/templates/ext/prism/api_node.c.erb"
6240 argv[5] = pm_location_new(
cast->class_keyword_loc.start,
cast->class_keyword_loc.length, source, freeze);
6243#line 241 "prism/templates/ext/prism/api_node.c.erb"
6244 argv[6] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
6247#line 214 "prism/templates/ext/prism/api_node.c.erb"
6251#line 214 "prism/templates/ext/prism/api_node.c.erb"
6255#line 241 "prism/templates/ext/prism/api_node.c.erb"
6256 argv[9] = pm_location_new(
cast->end_keyword_loc.start,
cast->end_keyword_loc.length, source, freeze);
6264#line 191 "prism/templates/ext/prism/api_node.c.erb"
6265 case PM_SOURCE_ENCODING_NODE: {
6286#line 191 "prism/templates/ext/prism/api_node.c.erb"
6287 case PM_SOURCE_FILE_NODE: {
6304#line 224 "prism/templates/ext/prism/api_node.c.erb"
6305 argv[4] = pm_string_new(&
cast->filepath, encoding);
6313#line 191 "prism/templates/ext/prism/api_node.c.erb"
6314 case PM_SOURCE_LINE_NODE: {
6335#line 191 "prism/templates/ext/prism/api_node.c.erb"
6336 case PM_SPLAT_NODE: {
6353#line 241 "prism/templates/ext/prism/api_node.c.erb"
6354 argv[4] = pm_location_new(
cast->operator_loc.start,
cast->operator_loc.length, source, freeze);
6357#line 214 "prism/templates/ext/prism/api_node.c.erb"
6366#line 191 "prism/templates/ext/prism/api_node.c.erb"
6367 case PM_STATEMENTS_NODE: {
6384#line 217 "prism/templates/ext/prism/api_node.c.erb"
6386 for (
size_t index = 0; index <
cast->body.size; index++) {
6397#line 191 "prism/templates/ext/prism/api_node.c.erb"
6398 case PM_STRING_NODE: {
6415#line 244 "prism/templates/ext/prism/api_node.c.erb"
6416 argv[4] =
cast->opening_loc.length == 0 ?
Qnil : pm_location_new(
cast->opening_loc.start,
cast->opening_loc.length, source, freeze);
6419#line 241 "prism/templates/ext/prism/api_node.c.erb"
6420 argv[5] = pm_location_new(
cast->content_loc.start,
cast->content_loc.length, source, freeze);
6423#line 244 "prism/templates/ext/prism/api_node.c.erb"
6424 argv[6] =
cast->closing_loc.length == 0 ?
Qnil : pm_location_new(
cast->closing_loc.start,
cast->closing_loc.length, source, freeze);
6427#line 224 "prism/templates/ext/prism/api_node.c.erb"
6428 argv[7] = pm_string_new(&
cast->unescaped, encoding);
6436#line 191 "prism/templates/ext/prism/api_node.c.erb"
6437 case PM_SUPER_NODE: {
6454#line 241 "prism/templates/ext/prism/api_node.c.erb"
6455 argv[4] = pm_location_new(
cast->keyword_loc.start,
cast->keyword_loc.length, source, freeze);
6458#line 244 "prism/templates/ext/prism/api_node.c.erb"
6459 argv[5] =
cast->lparen_loc.length == 0 ?
Qnil : pm_location_new(
cast->lparen_loc.start,
cast->lparen_loc.length, source, freeze);
6462#line 214 "prism/templates/ext/prism/api_node.c.erb"
6466#line 244 "prism/templates/ext/prism/api_node.c.erb"
6467 argv[7] =
cast->rparen_loc.length == 0 ?
Qnil : pm_location_new(
cast->rparen_loc.start,
cast->rparen_loc.length, source, freeze);
6470#line 214 "prism/templates/ext/prism/api_node.c.erb"
6479#line 191 "prism/templates/ext/prism/api_node.c.erb"
6480 case PM_SYMBOL_NODE: {
6497#line 244 "prism/templates/ext/prism/api_node.c.erb"
6498 argv[4] =
cast->opening_loc.length == 0 ?
Qnil : pm_location_new(
cast->opening_loc.start,
cast->opening_loc.length, source, freeze);
6501#line 241 "prism/templates/ext/prism/api_node.c.erb"
6502 argv[5] = pm_location_new(
cast->content_loc.start,
cast->content_loc.length, source, freeze);
6505#line 244 "prism/templates/ext/prism/api_node.c.erb"
6506 argv[6] =
cast->closing_loc.length == 0 ?
Qnil : pm_location_new(
cast->closing_loc.start,
cast->closing_loc.length, source, freeze);
6509#line 224 "prism/templates/ext/prism/api_node.c.erb"
6510 argv[7] = pm_string_new(&
cast->unescaped, encoding);
6518#line 191 "prism/templates/ext/prism/api_node.c.erb"
6519 case PM_TRUE_NODE: {
6540#line 191 "prism/templates/ext/prism/api_node.c.erb"
6541 case PM_UNDEF_NODE: {
6558#line 217 "prism/templates/ext/prism/api_node.c.erb"
6560 for (
size_t index = 0; index <
cast->names.size; index++) {
6566#line 241 "prism/templates/ext/prism/api_node.c.erb"
6567 argv[5] = pm_location_new(
cast->keyword_loc.start,
cast->keyword_loc.length, source, freeze);
6575#line 191 "prism/templates/ext/prism/api_node.c.erb"
6576 case PM_UNLESS_NODE: {
6593#line 241 "prism/templates/ext/prism/api_node.c.erb"
6594 argv[4] = pm_location_new(
cast->unless_keyword_loc.start,
cast->unless_keyword_loc.length, source, freeze);
6597#line 214 "prism/templates/ext/prism/api_node.c.erb"
6601#line 244 "prism/templates/ext/prism/api_node.c.erb"
6602 argv[6] =
cast->then_keyword_loc.length == 0 ?
Qnil : pm_location_new(
cast->then_keyword_loc.start,
cast->then_keyword_loc.length, source, freeze);
6605#line 214 "prism/templates/ext/prism/api_node.c.erb"
6609#line 214 "prism/templates/ext/prism/api_node.c.erb"
6613#line 244 "prism/templates/ext/prism/api_node.c.erb"
6614 argv[9] =
cast->end_keyword_loc.length == 0 ?
Qnil : pm_location_new(
cast->end_keyword_loc.start,
cast->end_keyword_loc.length, source, freeze);
6622#line 191 "prism/templates/ext/prism/api_node.c.erb"
6623 case PM_UNTIL_NODE: {
6640#line 241 "prism/templates/ext/prism/api_node.c.erb"
6641 argv[4] = pm_location_new(
cast->until_keyword_loc.start,
cast->until_keyword_loc.length, source, freeze);
6644#line 244 "prism/templates/ext/prism/api_node.c.erb"
6645 argv[5] =
cast->do_keyword_loc.length == 0 ?
Qnil : pm_location_new(
cast->do_keyword_loc.start,
cast->do_keyword_loc.length, source, freeze);
6648#line 244 "prism/templates/ext/prism/api_node.c.erb"
6649 argv[6] =
cast->end_keyword_loc.length == 0 ?
Qnil : pm_location_new(
cast->end_keyword_loc.start,
cast->end_keyword_loc.length, source, freeze);
6652#line 214 "prism/templates/ext/prism/api_node.c.erb"
6656#line 214 "prism/templates/ext/prism/api_node.c.erb"
6665#line 191 "prism/templates/ext/prism/api_node.c.erb"
6666 case PM_WHEN_NODE: {
6683#line 241 "prism/templates/ext/prism/api_node.c.erb"
6684 argv[4] = pm_location_new(
cast->when_keyword_loc.start,
cast->when_keyword_loc.length, source, freeze);
6687#line 217 "prism/templates/ext/prism/api_node.c.erb"
6689 for (
size_t index = 0; index <
cast->conditions.size; index++) {
6695#line 244 "prism/templates/ext/prism/api_node.c.erb"
6696 argv[6] =
cast->then_keyword_loc.length == 0 ?
Qnil : pm_location_new(
cast->then_keyword_loc.start,
cast->then_keyword_loc.length, source, freeze);
6699#line 214 "prism/templates/ext/prism/api_node.c.erb"
6708#line 191 "prism/templates/ext/prism/api_node.c.erb"
6709 case PM_WHILE_NODE: {
6726#line 241 "prism/templates/ext/prism/api_node.c.erb"
6727 argv[4] = pm_location_new(
cast->while_keyword_loc.start,
cast->while_keyword_loc.length, source, freeze);
6730#line 244 "prism/templates/ext/prism/api_node.c.erb"
6731 argv[5] =
cast->do_keyword_loc.length == 0 ?
Qnil : pm_location_new(
cast->do_keyword_loc.start,
cast->do_keyword_loc.length, source, freeze);
6734#line 244 "prism/templates/ext/prism/api_node.c.erb"
6735 argv[6] =
cast->end_keyword_loc.length == 0 ?
Qnil : pm_location_new(
cast->end_keyword_loc.start,
cast->end_keyword_loc.length, source, freeze);
6738#line 214 "prism/templates/ext/prism/api_node.c.erb"
6742#line 214 "prism/templates/ext/prism/api_node.c.erb"
6751#line 191 "prism/templates/ext/prism/api_node.c.erb"
6752 case PM_X_STRING_NODE: {
6769#line 241 "prism/templates/ext/prism/api_node.c.erb"
6770 argv[4] = pm_location_new(
cast->opening_loc.start,
cast->opening_loc.length, source, freeze);
6773#line 241 "prism/templates/ext/prism/api_node.c.erb"
6774 argv[5] = pm_location_new(
cast->content_loc.start,
cast->content_loc.length, source, freeze);
6777#line 241 "prism/templates/ext/prism/api_node.c.erb"
6778 argv[6] = pm_location_new(
cast->closing_loc.start,
cast->closing_loc.length, source, freeze);
6781#line 224 "prism/templates/ext/prism/api_node.c.erb"
6782 argv[7] = pm_string_new(&
cast->unescaped, encoding);
6790#line 191 "prism/templates/ext/prism/api_node.c.erb"
6791 case PM_YIELD_NODE: {
6808#line 241 "prism/templates/ext/prism/api_node.c.erb"
6809 argv[4] = pm_location_new(
cast->keyword_loc.start,
cast->keyword_loc.length, source, freeze);
6812#line 244 "prism/templates/ext/prism/api_node.c.erb"
6813 argv[5] =
cast->lparen_loc.length == 0 ?
Qnil : pm_location_new(
cast->lparen_loc.start,
cast->lparen_loc.length, source, freeze);
6816#line 214 "prism/templates/ext/prism/api_node.c.erb"
6820#line 244 "prism/templates/ext/prism/api_node.c.erb"
6821 argv[7] =
cast->rparen_loc.length == 0 ?
Qnil : pm_location_new(
cast->rparen_loc.start,
cast->rparen_loc.length, source, freeze);
6835 pm_arena_free(node_arena);
6840Init_prism_api_node(
void) {
6841 rb_cPrismAliasGlobalVariableNode = rb_define_class_under(rb_cPrism,
"AliasGlobalVariableNode", rb_cPrismNode);
6842 rb_cPrismAliasMethodNode = rb_define_class_under(rb_cPrism,
"AliasMethodNode", rb_cPrismNode);
6843 rb_cPrismAlternationPatternNode = rb_define_class_under(rb_cPrism,
"AlternationPatternNode", rb_cPrismNode);
6844 rb_cPrismAndNode = rb_define_class_under(rb_cPrism,
"AndNode", rb_cPrismNode);
6845 rb_cPrismArgumentsNode = rb_define_class_under(rb_cPrism,
"ArgumentsNode", rb_cPrismNode);
6846 rb_cPrismArrayNode = rb_define_class_under(rb_cPrism,
"ArrayNode", rb_cPrismNode);
6847 rb_cPrismArrayPatternNode = rb_define_class_under(rb_cPrism,
"ArrayPatternNode", rb_cPrismNode);
6848 rb_cPrismAssocNode = rb_define_class_under(rb_cPrism,
"AssocNode", rb_cPrismNode);
6849 rb_cPrismAssocSplatNode = rb_define_class_under(rb_cPrism,
"AssocSplatNode", rb_cPrismNode);
6850 rb_cPrismBackReferenceReadNode = rb_define_class_under(rb_cPrism,
"BackReferenceReadNode", rb_cPrismNode);
6851 rb_cPrismBeginNode = rb_define_class_under(rb_cPrism,
"BeginNode", rb_cPrismNode);
6852 rb_cPrismBlockArgumentNode = rb_define_class_under(rb_cPrism,
"BlockArgumentNode", rb_cPrismNode);
6853 rb_cPrismBlockLocalVariableNode = rb_define_class_under(rb_cPrism,
"BlockLocalVariableNode", rb_cPrismNode);
6854 rb_cPrismBlockNode = rb_define_class_under(rb_cPrism,
"BlockNode", rb_cPrismNode);
6855 rb_cPrismBlockParameterNode = rb_define_class_under(rb_cPrism,
"BlockParameterNode", rb_cPrismNode);
6856 rb_cPrismBlockParametersNode = rb_define_class_under(rb_cPrism,
"BlockParametersNode", rb_cPrismNode);
6857 rb_cPrismBreakNode = rb_define_class_under(rb_cPrism,
"BreakNode", rb_cPrismNode);
6858 rb_cPrismCallAndWriteNode = rb_define_class_under(rb_cPrism,
"CallAndWriteNode", rb_cPrismNode);
6859 rb_cPrismCallNode = rb_define_class_under(rb_cPrism,
"CallNode", rb_cPrismNode);
6860 rb_cPrismCallOperatorWriteNode = rb_define_class_under(rb_cPrism,
"CallOperatorWriteNode", rb_cPrismNode);
6861 rb_cPrismCallOrWriteNode = rb_define_class_under(rb_cPrism,
"CallOrWriteNode", rb_cPrismNode);
6862 rb_cPrismCallTargetNode = rb_define_class_under(rb_cPrism,
"CallTargetNode", rb_cPrismNode);
6863 rb_cPrismCapturePatternNode = rb_define_class_under(rb_cPrism,
"CapturePatternNode", rb_cPrismNode);
6864 rb_cPrismCaseMatchNode = rb_define_class_under(rb_cPrism,
"CaseMatchNode", rb_cPrismNode);
6865 rb_cPrismCaseNode = rb_define_class_under(rb_cPrism,
"CaseNode", rb_cPrismNode);
6866 rb_cPrismClassNode = rb_define_class_under(rb_cPrism,
"ClassNode", rb_cPrismNode);
6867 rb_cPrismClassVariableAndWriteNode = rb_define_class_under(rb_cPrism,
"ClassVariableAndWriteNode", rb_cPrismNode);
6868 rb_cPrismClassVariableOperatorWriteNode = rb_define_class_under(rb_cPrism,
"ClassVariableOperatorWriteNode", rb_cPrismNode);
6869 rb_cPrismClassVariableOrWriteNode = rb_define_class_under(rb_cPrism,
"ClassVariableOrWriteNode", rb_cPrismNode);
6870 rb_cPrismClassVariableReadNode = rb_define_class_under(rb_cPrism,
"ClassVariableReadNode", rb_cPrismNode);
6871 rb_cPrismClassVariableTargetNode = rb_define_class_under(rb_cPrism,
"ClassVariableTargetNode", rb_cPrismNode);
6872 rb_cPrismClassVariableWriteNode = rb_define_class_under(rb_cPrism,
"ClassVariableWriteNode", rb_cPrismNode);
6873 rb_cPrismConstantAndWriteNode = rb_define_class_under(rb_cPrism,
"ConstantAndWriteNode", rb_cPrismNode);
6874 rb_cPrismConstantOperatorWriteNode = rb_define_class_under(rb_cPrism,
"ConstantOperatorWriteNode", rb_cPrismNode);
6875 rb_cPrismConstantOrWriteNode = rb_define_class_under(rb_cPrism,
"ConstantOrWriteNode", rb_cPrismNode);
6876 rb_cPrismConstantPathAndWriteNode = rb_define_class_under(rb_cPrism,
"ConstantPathAndWriteNode", rb_cPrismNode);
6877 rb_cPrismConstantPathNode = rb_define_class_under(rb_cPrism,
"ConstantPathNode", rb_cPrismNode);
6878 rb_cPrismConstantPathOperatorWriteNode = rb_define_class_under(rb_cPrism,
"ConstantPathOperatorWriteNode", rb_cPrismNode);
6879 rb_cPrismConstantPathOrWriteNode = rb_define_class_under(rb_cPrism,
"ConstantPathOrWriteNode", rb_cPrismNode);
6880 rb_cPrismConstantPathTargetNode = rb_define_class_under(rb_cPrism,
"ConstantPathTargetNode", rb_cPrismNode);
6881 rb_cPrismConstantPathWriteNode = rb_define_class_under(rb_cPrism,
"ConstantPathWriteNode", rb_cPrismNode);
6882 rb_cPrismConstantReadNode = rb_define_class_under(rb_cPrism,
"ConstantReadNode", rb_cPrismNode);
6883 rb_cPrismConstantTargetNode = rb_define_class_under(rb_cPrism,
"ConstantTargetNode", rb_cPrismNode);
6884 rb_cPrismConstantWriteNode = rb_define_class_under(rb_cPrism,
"ConstantWriteNode", rb_cPrismNode);
6885 rb_cPrismDefNode = rb_define_class_under(rb_cPrism,
"DefNode", rb_cPrismNode);
6886 rb_cPrismDefinedNode = rb_define_class_under(rb_cPrism,
"DefinedNode", rb_cPrismNode);
6887 rb_cPrismElseNode = rb_define_class_under(rb_cPrism,
"ElseNode", rb_cPrismNode);
6888 rb_cPrismEmbeddedStatementsNode = rb_define_class_under(rb_cPrism,
"EmbeddedStatementsNode", rb_cPrismNode);
6889 rb_cPrismEmbeddedVariableNode = rb_define_class_under(rb_cPrism,
"EmbeddedVariableNode", rb_cPrismNode);
6890 rb_cPrismEnsureNode = rb_define_class_under(rb_cPrism,
"EnsureNode", rb_cPrismNode);
6891 rb_cPrismErrorRecoveryNode = rb_define_class_under(rb_cPrism,
"ErrorRecoveryNode", rb_cPrismNode);
6892 rb_cPrismFalseNode = rb_define_class_under(rb_cPrism,
"FalseNode", rb_cPrismNode);
6893 rb_cPrismFindPatternNode = rb_define_class_under(rb_cPrism,
"FindPatternNode", rb_cPrismNode);
6894 rb_cPrismFlipFlopNode = rb_define_class_under(rb_cPrism,
"FlipFlopNode", rb_cPrismNode);
6895 rb_cPrismFloatNode = rb_define_class_under(rb_cPrism,
"FloatNode", rb_cPrismNode);
6896 rb_cPrismForNode = rb_define_class_under(rb_cPrism,
"ForNode", rb_cPrismNode);
6897 rb_cPrismForwardingArgumentsNode = rb_define_class_under(rb_cPrism,
"ForwardingArgumentsNode", rb_cPrismNode);
6898 rb_cPrismForwardingParameterNode = rb_define_class_under(rb_cPrism,
"ForwardingParameterNode", rb_cPrismNode);
6899 rb_cPrismForwardingSuperNode = rb_define_class_under(rb_cPrism,
"ForwardingSuperNode", rb_cPrismNode);
6900 rb_cPrismGlobalVariableAndWriteNode = rb_define_class_under(rb_cPrism,
"GlobalVariableAndWriteNode", rb_cPrismNode);
6901 rb_cPrismGlobalVariableOperatorWriteNode = rb_define_class_under(rb_cPrism,
"GlobalVariableOperatorWriteNode", rb_cPrismNode);
6902 rb_cPrismGlobalVariableOrWriteNode = rb_define_class_under(rb_cPrism,
"GlobalVariableOrWriteNode", rb_cPrismNode);
6903 rb_cPrismGlobalVariableReadNode = rb_define_class_under(rb_cPrism,
"GlobalVariableReadNode", rb_cPrismNode);
6904 rb_cPrismGlobalVariableTargetNode = rb_define_class_under(rb_cPrism,
"GlobalVariableTargetNode", rb_cPrismNode);
6905 rb_cPrismGlobalVariableWriteNode = rb_define_class_under(rb_cPrism,
"GlobalVariableWriteNode", rb_cPrismNode);
6906 rb_cPrismHashNode = rb_define_class_under(rb_cPrism,
"HashNode", rb_cPrismNode);
6907 rb_cPrismHashPatternNode = rb_define_class_under(rb_cPrism,
"HashPatternNode", rb_cPrismNode);
6908 rb_cPrismIfNode = rb_define_class_under(rb_cPrism,
"IfNode", rb_cPrismNode);
6909 rb_cPrismImaginaryNode = rb_define_class_under(rb_cPrism,
"ImaginaryNode", rb_cPrismNode);
6910 rb_cPrismImplicitNode = rb_define_class_under(rb_cPrism,
"ImplicitNode", rb_cPrismNode);
6911 rb_cPrismImplicitRestNode = rb_define_class_under(rb_cPrism,
"ImplicitRestNode", rb_cPrismNode);
6912 rb_cPrismInNode = rb_define_class_under(rb_cPrism,
"InNode", rb_cPrismNode);
6913 rb_cPrismIndexAndWriteNode = rb_define_class_under(rb_cPrism,
"IndexAndWriteNode", rb_cPrismNode);
6914 rb_cPrismIndexOperatorWriteNode = rb_define_class_under(rb_cPrism,
"IndexOperatorWriteNode", rb_cPrismNode);
6915 rb_cPrismIndexOrWriteNode = rb_define_class_under(rb_cPrism,
"IndexOrWriteNode", rb_cPrismNode);
6916 rb_cPrismIndexTargetNode = rb_define_class_under(rb_cPrism,
"IndexTargetNode", rb_cPrismNode);
6917 rb_cPrismInstanceVariableAndWriteNode = rb_define_class_under(rb_cPrism,
"InstanceVariableAndWriteNode", rb_cPrismNode);
6918 rb_cPrismInstanceVariableOperatorWriteNode = rb_define_class_under(rb_cPrism,
"InstanceVariableOperatorWriteNode", rb_cPrismNode);
6919 rb_cPrismInstanceVariableOrWriteNode = rb_define_class_under(rb_cPrism,
"InstanceVariableOrWriteNode", rb_cPrismNode);
6920 rb_cPrismInstanceVariableReadNode = rb_define_class_under(rb_cPrism,
"InstanceVariableReadNode", rb_cPrismNode);
6921 rb_cPrismInstanceVariableTargetNode = rb_define_class_under(rb_cPrism,
"InstanceVariableTargetNode", rb_cPrismNode);
6922 rb_cPrismInstanceVariableWriteNode = rb_define_class_under(rb_cPrism,
"InstanceVariableWriteNode", rb_cPrismNode);
6923 rb_cPrismIntegerNode = rb_define_class_under(rb_cPrism,
"IntegerNode", rb_cPrismNode);
6924 rb_cPrismInterpolatedMatchLastLineNode = rb_define_class_under(rb_cPrism,
"InterpolatedMatchLastLineNode", rb_cPrismNode);
6925 rb_cPrismInterpolatedRegularExpressionNode = rb_define_class_under(rb_cPrism,
"InterpolatedRegularExpressionNode", rb_cPrismNode);
6926 rb_cPrismInterpolatedStringNode = rb_define_class_under(rb_cPrism,
"InterpolatedStringNode", rb_cPrismNode);
6927 rb_cPrismInterpolatedSymbolNode = rb_define_class_under(rb_cPrism,
"InterpolatedSymbolNode", rb_cPrismNode);
6928 rb_cPrismInterpolatedXStringNode = rb_define_class_under(rb_cPrism,
"InterpolatedXStringNode", rb_cPrismNode);
6929 rb_cPrismItLocalVariableReadNode = rb_define_class_under(rb_cPrism,
"ItLocalVariableReadNode", rb_cPrismNode);
6930 rb_cPrismItParametersNode = rb_define_class_under(rb_cPrism,
"ItParametersNode", rb_cPrismNode);
6931 rb_cPrismKeywordHashNode = rb_define_class_under(rb_cPrism,
"KeywordHashNode", rb_cPrismNode);
6932 rb_cPrismKeywordRestParameterNode = rb_define_class_under(rb_cPrism,
"KeywordRestParameterNode", rb_cPrismNode);
6933 rb_cPrismLambdaNode = rb_define_class_under(rb_cPrism,
"LambdaNode", rb_cPrismNode);
6934 rb_cPrismLocalVariableAndWriteNode = rb_define_class_under(rb_cPrism,
"LocalVariableAndWriteNode", rb_cPrismNode);
6935 rb_cPrismLocalVariableOperatorWriteNode = rb_define_class_under(rb_cPrism,
"LocalVariableOperatorWriteNode", rb_cPrismNode);
6936 rb_cPrismLocalVariableOrWriteNode = rb_define_class_under(rb_cPrism,
"LocalVariableOrWriteNode", rb_cPrismNode);
6937 rb_cPrismLocalVariableReadNode = rb_define_class_under(rb_cPrism,
"LocalVariableReadNode", rb_cPrismNode);
6938 rb_cPrismLocalVariableTargetNode = rb_define_class_under(rb_cPrism,
"LocalVariableTargetNode", rb_cPrismNode);
6939 rb_cPrismLocalVariableWriteNode = rb_define_class_under(rb_cPrism,
"LocalVariableWriteNode", rb_cPrismNode);
6940 rb_cPrismMatchLastLineNode = rb_define_class_under(rb_cPrism,
"MatchLastLineNode", rb_cPrismNode);
6941 rb_cPrismMatchPredicateNode = rb_define_class_under(rb_cPrism,
"MatchPredicateNode", rb_cPrismNode);
6942 rb_cPrismMatchRequiredNode = rb_define_class_under(rb_cPrism,
"MatchRequiredNode", rb_cPrismNode);
6943 rb_cPrismMatchWriteNode = rb_define_class_under(rb_cPrism,
"MatchWriteNode", rb_cPrismNode);
6944 rb_cPrismModuleNode = rb_define_class_under(rb_cPrism,
"ModuleNode", rb_cPrismNode);
6945 rb_cPrismMultiTargetNode = rb_define_class_under(rb_cPrism,
"MultiTargetNode", rb_cPrismNode);
6946 rb_cPrismMultiWriteNode = rb_define_class_under(rb_cPrism,
"MultiWriteNode", rb_cPrismNode);
6947 rb_cPrismNextNode = rb_define_class_under(rb_cPrism,
"NextNode", rb_cPrismNode);
6948 rb_cPrismNilNode = rb_define_class_under(rb_cPrism,
"NilNode", rb_cPrismNode);
6949 rb_cPrismNoBlockParameterNode = rb_define_class_under(rb_cPrism,
"NoBlockParameterNode", rb_cPrismNode);
6950 rb_cPrismNoKeywordsParameterNode = rb_define_class_under(rb_cPrism,
"NoKeywordsParameterNode", rb_cPrismNode);
6951 rb_cPrismNumberedParametersNode = rb_define_class_under(rb_cPrism,
"NumberedParametersNode", rb_cPrismNode);
6952 rb_cPrismNumberedReferenceReadNode = rb_define_class_under(rb_cPrism,
"NumberedReferenceReadNode", rb_cPrismNode);
6953 rb_cPrismOptionalKeywordParameterNode = rb_define_class_under(rb_cPrism,
"OptionalKeywordParameterNode", rb_cPrismNode);
6954 rb_cPrismOptionalParameterNode = rb_define_class_under(rb_cPrism,
"OptionalParameterNode", rb_cPrismNode);
6955 rb_cPrismOrNode = rb_define_class_under(rb_cPrism,
"OrNode", rb_cPrismNode);
6956 rb_cPrismParametersNode = rb_define_class_under(rb_cPrism,
"ParametersNode", rb_cPrismNode);
6957 rb_cPrismParenthesesNode = rb_define_class_under(rb_cPrism,
"ParenthesesNode", rb_cPrismNode);
6958 rb_cPrismPinnedExpressionNode = rb_define_class_under(rb_cPrism,
"PinnedExpressionNode", rb_cPrismNode);
6959 rb_cPrismPinnedVariableNode = rb_define_class_under(rb_cPrism,
"PinnedVariableNode", rb_cPrismNode);
6960 rb_cPrismPostExecutionNode = rb_define_class_under(rb_cPrism,
"PostExecutionNode", rb_cPrismNode);
6961 rb_cPrismPreExecutionNode = rb_define_class_under(rb_cPrism,
"PreExecutionNode", rb_cPrismNode);
6962 rb_cPrismProgramNode = rb_define_class_under(rb_cPrism,
"ProgramNode", rb_cPrismNode);
6963 rb_cPrismRangeNode = rb_define_class_under(rb_cPrism,
"RangeNode", rb_cPrismNode);
6964 rb_cPrismRationalNode = rb_define_class_under(rb_cPrism,
"RationalNode", rb_cPrismNode);
6965 rb_cPrismRedoNode = rb_define_class_under(rb_cPrism,
"RedoNode", rb_cPrismNode);
6966 rb_cPrismRegularExpressionNode = rb_define_class_under(rb_cPrism,
"RegularExpressionNode", rb_cPrismNode);
6967 rb_cPrismRequiredKeywordParameterNode = rb_define_class_under(rb_cPrism,
"RequiredKeywordParameterNode", rb_cPrismNode);
6968 rb_cPrismRequiredParameterNode = rb_define_class_under(rb_cPrism,
"RequiredParameterNode", rb_cPrismNode);
6969 rb_cPrismRescueModifierNode = rb_define_class_under(rb_cPrism,
"RescueModifierNode", rb_cPrismNode);
6970 rb_cPrismRescueNode = rb_define_class_under(rb_cPrism,
"RescueNode", rb_cPrismNode);
6971 rb_cPrismRestParameterNode = rb_define_class_under(rb_cPrism,
"RestParameterNode", rb_cPrismNode);
6972 rb_cPrismRetryNode = rb_define_class_under(rb_cPrism,
"RetryNode", rb_cPrismNode);
6973 rb_cPrismReturnNode = rb_define_class_under(rb_cPrism,
"ReturnNode", rb_cPrismNode);
6974 rb_cPrismSelfNode = rb_define_class_under(rb_cPrism,
"SelfNode", rb_cPrismNode);
6975 rb_cPrismShareableConstantNode = rb_define_class_under(rb_cPrism,
"ShareableConstantNode", rb_cPrismNode);
6976 rb_cPrismSingletonClassNode = rb_define_class_under(rb_cPrism,
"SingletonClassNode", rb_cPrismNode);
6977 rb_cPrismSourceEncodingNode = rb_define_class_under(rb_cPrism,
"SourceEncodingNode", rb_cPrismNode);
6978 rb_cPrismSourceFileNode = rb_define_class_under(rb_cPrism,
"SourceFileNode", rb_cPrismNode);
6979 rb_cPrismSourceLineNode = rb_define_class_under(rb_cPrism,
"SourceLineNode", rb_cPrismNode);
6980 rb_cPrismSplatNode = rb_define_class_under(rb_cPrism,
"SplatNode", rb_cPrismNode);
6981 rb_cPrismStatementsNode = rb_define_class_under(rb_cPrism,
"StatementsNode", rb_cPrismNode);
6982 rb_cPrismStringNode = rb_define_class_under(rb_cPrism,
"StringNode", rb_cPrismNode);
6983 rb_cPrismSuperNode = rb_define_class_under(rb_cPrism,
"SuperNode", rb_cPrismNode);
6984 rb_cPrismSymbolNode = rb_define_class_under(rb_cPrism,
"SymbolNode", rb_cPrismNode);
6985 rb_cPrismTrueNode = rb_define_class_under(rb_cPrism,
"TrueNode", rb_cPrismNode);
6986 rb_cPrismUndefNode = rb_define_class_under(rb_cPrism,
"UndefNode", rb_cPrismNode);
6987 rb_cPrismUnlessNode = rb_define_class_under(rb_cPrism,
"UnlessNode", rb_cPrismNode);
6988 rb_cPrismUntilNode = rb_define_class_under(rb_cPrism,
"UntilNode", rb_cPrismNode);
6989 rb_cPrismWhenNode = rb_define_class_under(rb_cPrism,
"WhenNode", rb_cPrismNode);
6990 rb_cPrismWhileNode = rb_define_class_under(rb_cPrism,
"WhileNode", rb_cPrismNode);
6991 rb_cPrismXStringNode = rb_define_class_under(rb_cPrism,
"XStringNode", rb_cPrismNode);
6992 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 LL2NUM
Old name of RB_LL2NUM.
#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 INTEGER_PACK_NATIVE_BYTE_ORDER
Means either INTEGER_PACK_MSBYTE_FIRST or INTEGER_PACK_LSBYTE_FIRST, depending on the host processor'...
#define INTEGER_PACK_NEGATIVE
Interprets the input as a signed negative number (unpack only).
#define INTEGER_PACK_LSWORD_FIRST
Stores/interprets the least significant word as the first word.
#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().
static PRISM_INLINE uint64_t pm_integer_uint64_value(const pm_integer_t *integer)
Return the magnitude of an integer whose length is at most 2, which always fits in a uint64_t.
static PRISM_INLINE const uint32_t * pm_integer_words(const pm_integer_t *integer, uint32_t *length)
Return the words of an integer, least significant first.
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.
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.