jruby-prism-parser 0.23.0.pre.SNAPSHOT-java

Sign up to get free protection for your applications and to get access to all the features.
Files changed (110) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +401 -0
  3. data/CODE_OF_CONDUCT.md +76 -0
  4. data/CONTRIBUTING.md +62 -0
  5. data/LICENSE.md +7 -0
  6. data/Makefile +101 -0
  7. data/README.md +98 -0
  8. data/config.yml +2902 -0
  9. data/docs/build_system.md +91 -0
  10. data/docs/configuration.md +64 -0
  11. data/docs/cruby_compilation.md +27 -0
  12. data/docs/design.md +53 -0
  13. data/docs/encoding.md +121 -0
  14. data/docs/fuzzing.md +88 -0
  15. data/docs/heredocs.md +36 -0
  16. data/docs/javascript.md +118 -0
  17. data/docs/local_variable_depth.md +229 -0
  18. data/docs/mapping.md +117 -0
  19. data/docs/parser_translation.md +34 -0
  20. data/docs/parsing_rules.md +19 -0
  21. data/docs/releasing.md +98 -0
  22. data/docs/ripper.md +36 -0
  23. data/docs/ruby_api.md +43 -0
  24. data/docs/ruby_parser_translation.md +19 -0
  25. data/docs/serialization.md +209 -0
  26. data/docs/testing.md +55 -0
  27. data/ext/prism/api_node.c +5098 -0
  28. data/ext/prism/api_pack.c +267 -0
  29. data/ext/prism/extconf.rb +110 -0
  30. data/ext/prism/extension.c +1155 -0
  31. data/ext/prism/extension.h +18 -0
  32. data/include/prism/ast.h +5807 -0
  33. data/include/prism/defines.h +102 -0
  34. data/include/prism/diagnostic.h +339 -0
  35. data/include/prism/encoding.h +265 -0
  36. data/include/prism/node.h +57 -0
  37. data/include/prism/options.h +230 -0
  38. data/include/prism/pack.h +152 -0
  39. data/include/prism/parser.h +732 -0
  40. data/include/prism/prettyprint.h +26 -0
  41. data/include/prism/regexp.h +33 -0
  42. data/include/prism/util/pm_buffer.h +155 -0
  43. data/include/prism/util/pm_char.h +205 -0
  44. data/include/prism/util/pm_constant_pool.h +209 -0
  45. data/include/prism/util/pm_list.h +97 -0
  46. data/include/prism/util/pm_memchr.h +29 -0
  47. data/include/prism/util/pm_newline_list.h +93 -0
  48. data/include/prism/util/pm_state_stack.h +42 -0
  49. data/include/prism/util/pm_string.h +150 -0
  50. data/include/prism/util/pm_string_list.h +44 -0
  51. data/include/prism/util/pm_strncasecmp.h +32 -0
  52. data/include/prism/util/pm_strpbrk.h +46 -0
  53. data/include/prism/version.h +29 -0
  54. data/include/prism.h +289 -0
  55. data/jruby-prism.jar +0 -0
  56. data/lib/prism/compiler.rb +486 -0
  57. data/lib/prism/debug.rb +206 -0
  58. data/lib/prism/desugar_compiler.rb +207 -0
  59. data/lib/prism/dispatcher.rb +2150 -0
  60. data/lib/prism/dot_visitor.rb +4634 -0
  61. data/lib/prism/dsl.rb +785 -0
  62. data/lib/prism/ffi.rb +346 -0
  63. data/lib/prism/lex_compat.rb +908 -0
  64. data/lib/prism/mutation_compiler.rb +753 -0
  65. data/lib/prism/node.rb +17864 -0
  66. data/lib/prism/node_ext.rb +212 -0
  67. data/lib/prism/node_inspector.rb +68 -0
  68. data/lib/prism/pack.rb +224 -0
  69. data/lib/prism/parse_result/comments.rb +177 -0
  70. data/lib/prism/parse_result/newlines.rb +64 -0
  71. data/lib/prism/parse_result.rb +498 -0
  72. data/lib/prism/pattern.rb +250 -0
  73. data/lib/prism/serialize.rb +1354 -0
  74. data/lib/prism/translation/parser/compiler.rb +1838 -0
  75. data/lib/prism/translation/parser/lexer.rb +335 -0
  76. data/lib/prism/translation/parser/rubocop.rb +37 -0
  77. data/lib/prism/translation/parser.rb +178 -0
  78. data/lib/prism/translation/ripper.rb +577 -0
  79. data/lib/prism/translation/ruby_parser.rb +1521 -0
  80. data/lib/prism/translation.rb +11 -0
  81. data/lib/prism/version.rb +3 -0
  82. data/lib/prism/visitor.rb +495 -0
  83. data/lib/prism.rb +99 -0
  84. data/prism.gemspec +135 -0
  85. data/rbi/prism.rbi +7767 -0
  86. data/rbi/prism_static.rbi +207 -0
  87. data/sig/prism.rbs +4773 -0
  88. data/sig/prism_static.rbs +201 -0
  89. data/src/diagnostic.c +400 -0
  90. data/src/encoding.c +5132 -0
  91. data/src/node.c +2786 -0
  92. data/src/options.c +213 -0
  93. data/src/pack.c +493 -0
  94. data/src/prettyprint.c +8881 -0
  95. data/src/prism.c +18406 -0
  96. data/src/regexp.c +638 -0
  97. data/src/serialize.c +1554 -0
  98. data/src/token_type.c +700 -0
  99. data/src/util/pm_buffer.c +190 -0
  100. data/src/util/pm_char.c +318 -0
  101. data/src/util/pm_constant_pool.c +322 -0
  102. data/src/util/pm_list.c +49 -0
  103. data/src/util/pm_memchr.c +35 -0
  104. data/src/util/pm_newline_list.c +84 -0
  105. data/src/util/pm_state_stack.c +25 -0
  106. data/src/util/pm_string.c +203 -0
  107. data/src/util/pm_string_list.c +28 -0
  108. data/src/util/pm_strncasecmp.c +24 -0
  109. data/src/util/pm_strpbrk.c +180 -0
  110. metadata +156 -0
@@ -0,0 +1,753 @@
1
+ # frozen_string_literal: true
2
+ =begin
3
+ This file is generated by the templates/template.rb script and should not be
4
+ modified manually. See templates/lib/prism/mutation_compiler.rb.erb
5
+ if you are looking to modify the template
6
+ =end
7
+
8
+ module Prism
9
+ # This visitor walks through the tree and copies each node as it is being
10
+ # visited. This is useful for consumers that want to mutate the tree, as you
11
+ # can change subtrees in place without effecting the rest of the tree.
12
+ class MutationCompiler < Compiler
13
+ # Copy a AliasGlobalVariableNode node
14
+ def visit_alias_global_variable_node(node)
15
+ node.copy(new_name: visit(node.new_name), old_name: visit(node.old_name))
16
+ end
17
+
18
+ # Copy a AliasMethodNode node
19
+ def visit_alias_method_node(node)
20
+ node.copy(new_name: visit(node.new_name), old_name: visit(node.old_name))
21
+ end
22
+
23
+ # Copy a AlternationPatternNode node
24
+ def visit_alternation_pattern_node(node)
25
+ node.copy(left: visit(node.left), right: visit(node.right))
26
+ end
27
+
28
+ # Copy a AndNode node
29
+ def visit_and_node(node)
30
+ node.copy(left: visit(node.left), right: visit(node.right))
31
+ end
32
+
33
+ # Copy a ArgumentsNode node
34
+ def visit_arguments_node(node)
35
+ node.copy(arguments: visit_all(node.arguments))
36
+ end
37
+
38
+ # Copy a ArrayNode node
39
+ def visit_array_node(node)
40
+ node.copy(elements: visit_all(node.elements))
41
+ end
42
+
43
+ # Copy a ArrayPatternNode node
44
+ def visit_array_pattern_node(node)
45
+ node.copy(constant: visit(node.constant), requireds: visit_all(node.requireds), rest: visit(node.rest), posts: visit_all(node.posts))
46
+ end
47
+
48
+ # Copy a AssocNode node
49
+ def visit_assoc_node(node)
50
+ node.copy(key: visit(node.key), value: visit(node.value))
51
+ end
52
+
53
+ # Copy a AssocSplatNode node
54
+ def visit_assoc_splat_node(node)
55
+ node.copy(value: visit(node.value))
56
+ end
57
+
58
+ # Copy a BackReferenceReadNode node
59
+ def visit_back_reference_read_node(node)
60
+ node.copy
61
+ end
62
+
63
+ # Copy a BeginNode node
64
+ def visit_begin_node(node)
65
+ node.copy(statements: visit(node.statements), rescue_clause: visit(node.rescue_clause), else_clause: visit(node.else_clause), ensure_clause: visit(node.ensure_clause))
66
+ end
67
+
68
+ # Copy a BlockArgumentNode node
69
+ def visit_block_argument_node(node)
70
+ node.copy(expression: visit(node.expression))
71
+ end
72
+
73
+ # Copy a BlockLocalVariableNode node
74
+ def visit_block_local_variable_node(node)
75
+ node.copy
76
+ end
77
+
78
+ # Copy a BlockNode node
79
+ def visit_block_node(node)
80
+ node.copy(parameters: visit(node.parameters), body: visit(node.body))
81
+ end
82
+
83
+ # Copy a BlockParameterNode node
84
+ def visit_block_parameter_node(node)
85
+ node.copy
86
+ end
87
+
88
+ # Copy a BlockParametersNode node
89
+ def visit_block_parameters_node(node)
90
+ node.copy(parameters: visit(node.parameters), locals: visit_all(node.locals))
91
+ end
92
+
93
+ # Copy a BreakNode node
94
+ def visit_break_node(node)
95
+ node.copy(arguments: visit(node.arguments))
96
+ end
97
+
98
+ # Copy a CallAndWriteNode node
99
+ def visit_call_and_write_node(node)
100
+ node.copy(receiver: visit(node.receiver), value: visit(node.value))
101
+ end
102
+
103
+ # Copy a CallNode node
104
+ def visit_call_node(node)
105
+ node.copy(receiver: visit(node.receiver), arguments: visit(node.arguments), block: visit(node.block))
106
+ end
107
+
108
+ # Copy a CallOperatorWriteNode node
109
+ def visit_call_operator_write_node(node)
110
+ node.copy(receiver: visit(node.receiver), value: visit(node.value))
111
+ end
112
+
113
+ # Copy a CallOrWriteNode node
114
+ def visit_call_or_write_node(node)
115
+ node.copy(receiver: visit(node.receiver), value: visit(node.value))
116
+ end
117
+
118
+ # Copy a CallTargetNode node
119
+ def visit_call_target_node(node)
120
+ node.copy(receiver: visit(node.receiver))
121
+ end
122
+
123
+ # Copy a CapturePatternNode node
124
+ def visit_capture_pattern_node(node)
125
+ node.copy(value: visit(node.value), target: visit(node.target))
126
+ end
127
+
128
+ # Copy a CaseMatchNode node
129
+ def visit_case_match_node(node)
130
+ node.copy(predicate: visit(node.predicate), conditions: visit_all(node.conditions), consequent: visit(node.consequent))
131
+ end
132
+
133
+ # Copy a CaseNode node
134
+ def visit_case_node(node)
135
+ node.copy(predicate: visit(node.predicate), conditions: visit_all(node.conditions), consequent: visit(node.consequent))
136
+ end
137
+
138
+ # Copy a ClassNode node
139
+ def visit_class_node(node)
140
+ node.copy(constant_path: visit(node.constant_path), superclass: visit(node.superclass), body: visit(node.body))
141
+ end
142
+
143
+ # Copy a ClassVariableAndWriteNode node
144
+ def visit_class_variable_and_write_node(node)
145
+ node.copy(value: visit(node.value))
146
+ end
147
+
148
+ # Copy a ClassVariableOperatorWriteNode node
149
+ def visit_class_variable_operator_write_node(node)
150
+ node.copy(value: visit(node.value))
151
+ end
152
+
153
+ # Copy a ClassVariableOrWriteNode node
154
+ def visit_class_variable_or_write_node(node)
155
+ node.copy(value: visit(node.value))
156
+ end
157
+
158
+ # Copy a ClassVariableReadNode node
159
+ def visit_class_variable_read_node(node)
160
+ node.copy
161
+ end
162
+
163
+ # Copy a ClassVariableTargetNode node
164
+ def visit_class_variable_target_node(node)
165
+ node.copy
166
+ end
167
+
168
+ # Copy a ClassVariableWriteNode node
169
+ def visit_class_variable_write_node(node)
170
+ node.copy(value: visit(node.value))
171
+ end
172
+
173
+ # Copy a ConstantAndWriteNode node
174
+ def visit_constant_and_write_node(node)
175
+ node.copy(value: visit(node.value))
176
+ end
177
+
178
+ # Copy a ConstantOperatorWriteNode node
179
+ def visit_constant_operator_write_node(node)
180
+ node.copy(value: visit(node.value))
181
+ end
182
+
183
+ # Copy a ConstantOrWriteNode node
184
+ def visit_constant_or_write_node(node)
185
+ node.copy(value: visit(node.value))
186
+ end
187
+
188
+ # Copy a ConstantPathAndWriteNode node
189
+ def visit_constant_path_and_write_node(node)
190
+ node.copy(target: visit(node.target), value: visit(node.value))
191
+ end
192
+
193
+ # Copy a ConstantPathNode node
194
+ def visit_constant_path_node(node)
195
+ node.copy(parent: visit(node.parent), child: visit(node.child))
196
+ end
197
+
198
+ # Copy a ConstantPathOperatorWriteNode node
199
+ def visit_constant_path_operator_write_node(node)
200
+ node.copy(target: visit(node.target), value: visit(node.value))
201
+ end
202
+
203
+ # Copy a ConstantPathOrWriteNode node
204
+ def visit_constant_path_or_write_node(node)
205
+ node.copy(target: visit(node.target), value: visit(node.value))
206
+ end
207
+
208
+ # Copy a ConstantPathTargetNode node
209
+ def visit_constant_path_target_node(node)
210
+ node.copy(parent: visit(node.parent), child: visit(node.child))
211
+ end
212
+
213
+ # Copy a ConstantPathWriteNode node
214
+ def visit_constant_path_write_node(node)
215
+ node.copy(target: visit(node.target), value: visit(node.value))
216
+ end
217
+
218
+ # Copy a ConstantReadNode node
219
+ def visit_constant_read_node(node)
220
+ node.copy
221
+ end
222
+
223
+ # Copy a ConstantTargetNode node
224
+ def visit_constant_target_node(node)
225
+ node.copy
226
+ end
227
+
228
+ # Copy a ConstantWriteNode node
229
+ def visit_constant_write_node(node)
230
+ node.copy(value: visit(node.value))
231
+ end
232
+
233
+ # Copy a DefNode node
234
+ def visit_def_node(node)
235
+ node.copy(receiver: visit(node.receiver), parameters: visit(node.parameters), body: visit(node.body))
236
+ end
237
+
238
+ # Copy a DefinedNode node
239
+ def visit_defined_node(node)
240
+ node.copy(value: visit(node.value))
241
+ end
242
+
243
+ # Copy a ElseNode node
244
+ def visit_else_node(node)
245
+ node.copy(statements: visit(node.statements))
246
+ end
247
+
248
+ # Copy a EmbeddedStatementsNode node
249
+ def visit_embedded_statements_node(node)
250
+ node.copy(statements: visit(node.statements))
251
+ end
252
+
253
+ # Copy a EmbeddedVariableNode node
254
+ def visit_embedded_variable_node(node)
255
+ node.copy(variable: visit(node.variable))
256
+ end
257
+
258
+ # Copy a EnsureNode node
259
+ def visit_ensure_node(node)
260
+ node.copy(statements: visit(node.statements))
261
+ end
262
+
263
+ # Copy a FalseNode node
264
+ def visit_false_node(node)
265
+ node.copy
266
+ end
267
+
268
+ # Copy a FindPatternNode node
269
+ def visit_find_pattern_node(node)
270
+ node.copy(constant: visit(node.constant), left: visit(node.left), requireds: visit_all(node.requireds), right: visit(node.right))
271
+ end
272
+
273
+ # Copy a FlipFlopNode node
274
+ def visit_flip_flop_node(node)
275
+ node.copy(left: visit(node.left), right: visit(node.right))
276
+ end
277
+
278
+ # Copy a FloatNode node
279
+ def visit_float_node(node)
280
+ node.copy
281
+ end
282
+
283
+ # Copy a ForNode node
284
+ def visit_for_node(node)
285
+ node.copy(index: visit(node.index), collection: visit(node.collection), statements: visit(node.statements))
286
+ end
287
+
288
+ # Copy a ForwardingArgumentsNode node
289
+ def visit_forwarding_arguments_node(node)
290
+ node.copy
291
+ end
292
+
293
+ # Copy a ForwardingParameterNode node
294
+ def visit_forwarding_parameter_node(node)
295
+ node.copy
296
+ end
297
+
298
+ # Copy a ForwardingSuperNode node
299
+ def visit_forwarding_super_node(node)
300
+ node.copy(block: visit(node.block))
301
+ end
302
+
303
+ # Copy a GlobalVariableAndWriteNode node
304
+ def visit_global_variable_and_write_node(node)
305
+ node.copy(value: visit(node.value))
306
+ end
307
+
308
+ # Copy a GlobalVariableOperatorWriteNode node
309
+ def visit_global_variable_operator_write_node(node)
310
+ node.copy(value: visit(node.value))
311
+ end
312
+
313
+ # Copy a GlobalVariableOrWriteNode node
314
+ def visit_global_variable_or_write_node(node)
315
+ node.copy(value: visit(node.value))
316
+ end
317
+
318
+ # Copy a GlobalVariableReadNode node
319
+ def visit_global_variable_read_node(node)
320
+ node.copy
321
+ end
322
+
323
+ # Copy a GlobalVariableTargetNode node
324
+ def visit_global_variable_target_node(node)
325
+ node.copy
326
+ end
327
+
328
+ # Copy a GlobalVariableWriteNode node
329
+ def visit_global_variable_write_node(node)
330
+ node.copy(value: visit(node.value))
331
+ end
332
+
333
+ # Copy a HashNode node
334
+ def visit_hash_node(node)
335
+ node.copy(elements: visit_all(node.elements))
336
+ end
337
+
338
+ # Copy a HashPatternNode node
339
+ def visit_hash_pattern_node(node)
340
+ node.copy(constant: visit(node.constant), elements: visit_all(node.elements), rest: visit(node.rest))
341
+ end
342
+
343
+ # Copy a IfNode node
344
+ def visit_if_node(node)
345
+ node.copy(predicate: visit(node.predicate), statements: visit(node.statements), consequent: visit(node.consequent))
346
+ end
347
+
348
+ # Copy a ImaginaryNode node
349
+ def visit_imaginary_node(node)
350
+ node.copy(numeric: visit(node.numeric))
351
+ end
352
+
353
+ # Copy a ImplicitNode node
354
+ def visit_implicit_node(node)
355
+ node.copy(value: visit(node.value))
356
+ end
357
+
358
+ # Copy a ImplicitRestNode node
359
+ def visit_implicit_rest_node(node)
360
+ node.copy
361
+ end
362
+
363
+ # Copy a InNode node
364
+ def visit_in_node(node)
365
+ node.copy(pattern: visit(node.pattern), statements: visit(node.statements))
366
+ end
367
+
368
+ # Copy a IndexAndWriteNode node
369
+ def visit_index_and_write_node(node)
370
+ node.copy(receiver: visit(node.receiver), arguments: visit(node.arguments), block: visit(node.block), value: visit(node.value))
371
+ end
372
+
373
+ # Copy a IndexOperatorWriteNode node
374
+ def visit_index_operator_write_node(node)
375
+ node.copy(receiver: visit(node.receiver), arguments: visit(node.arguments), block: visit(node.block), value: visit(node.value))
376
+ end
377
+
378
+ # Copy a IndexOrWriteNode node
379
+ def visit_index_or_write_node(node)
380
+ node.copy(receiver: visit(node.receiver), arguments: visit(node.arguments), block: visit(node.block), value: visit(node.value))
381
+ end
382
+
383
+ # Copy a IndexTargetNode node
384
+ def visit_index_target_node(node)
385
+ node.copy(receiver: visit(node.receiver), arguments: visit(node.arguments), block: visit(node.block))
386
+ end
387
+
388
+ # Copy a InstanceVariableAndWriteNode node
389
+ def visit_instance_variable_and_write_node(node)
390
+ node.copy(value: visit(node.value))
391
+ end
392
+
393
+ # Copy a InstanceVariableOperatorWriteNode node
394
+ def visit_instance_variable_operator_write_node(node)
395
+ node.copy(value: visit(node.value))
396
+ end
397
+
398
+ # Copy a InstanceVariableOrWriteNode node
399
+ def visit_instance_variable_or_write_node(node)
400
+ node.copy(value: visit(node.value))
401
+ end
402
+
403
+ # Copy a InstanceVariableReadNode node
404
+ def visit_instance_variable_read_node(node)
405
+ node.copy
406
+ end
407
+
408
+ # Copy a InstanceVariableTargetNode node
409
+ def visit_instance_variable_target_node(node)
410
+ node.copy
411
+ end
412
+
413
+ # Copy a InstanceVariableWriteNode node
414
+ def visit_instance_variable_write_node(node)
415
+ node.copy(value: visit(node.value))
416
+ end
417
+
418
+ # Copy a IntegerNode node
419
+ def visit_integer_node(node)
420
+ node.copy
421
+ end
422
+
423
+ # Copy a InterpolatedMatchLastLineNode node
424
+ def visit_interpolated_match_last_line_node(node)
425
+ node.copy(parts: visit_all(node.parts))
426
+ end
427
+
428
+ # Copy a InterpolatedRegularExpressionNode node
429
+ def visit_interpolated_regular_expression_node(node)
430
+ node.copy(parts: visit_all(node.parts))
431
+ end
432
+
433
+ # Copy a InterpolatedStringNode node
434
+ def visit_interpolated_string_node(node)
435
+ node.copy(parts: visit_all(node.parts))
436
+ end
437
+
438
+ # Copy a InterpolatedSymbolNode node
439
+ def visit_interpolated_symbol_node(node)
440
+ node.copy(parts: visit_all(node.parts))
441
+ end
442
+
443
+ # Copy a InterpolatedXStringNode node
444
+ def visit_interpolated_x_string_node(node)
445
+ node.copy(parts: visit_all(node.parts))
446
+ end
447
+
448
+ # Copy a KeywordHashNode node
449
+ def visit_keyword_hash_node(node)
450
+ node.copy(elements: visit_all(node.elements))
451
+ end
452
+
453
+ # Copy a KeywordRestParameterNode node
454
+ def visit_keyword_rest_parameter_node(node)
455
+ node.copy
456
+ end
457
+
458
+ # Copy a LambdaNode node
459
+ def visit_lambda_node(node)
460
+ node.copy(parameters: visit(node.parameters), body: visit(node.body))
461
+ end
462
+
463
+ # Copy a LocalVariableAndWriteNode node
464
+ def visit_local_variable_and_write_node(node)
465
+ node.copy(value: visit(node.value))
466
+ end
467
+
468
+ # Copy a LocalVariableOperatorWriteNode node
469
+ def visit_local_variable_operator_write_node(node)
470
+ node.copy(value: visit(node.value))
471
+ end
472
+
473
+ # Copy a LocalVariableOrWriteNode node
474
+ def visit_local_variable_or_write_node(node)
475
+ node.copy(value: visit(node.value))
476
+ end
477
+
478
+ # Copy a LocalVariableReadNode node
479
+ def visit_local_variable_read_node(node)
480
+ node.copy
481
+ end
482
+
483
+ # Copy a LocalVariableTargetNode node
484
+ def visit_local_variable_target_node(node)
485
+ node.copy
486
+ end
487
+
488
+ # Copy a LocalVariableWriteNode node
489
+ def visit_local_variable_write_node(node)
490
+ node.copy(value: visit(node.value))
491
+ end
492
+
493
+ # Copy a MatchLastLineNode node
494
+ def visit_match_last_line_node(node)
495
+ node.copy
496
+ end
497
+
498
+ # Copy a MatchPredicateNode node
499
+ def visit_match_predicate_node(node)
500
+ node.copy(value: visit(node.value), pattern: visit(node.pattern))
501
+ end
502
+
503
+ # Copy a MatchRequiredNode node
504
+ def visit_match_required_node(node)
505
+ node.copy(value: visit(node.value), pattern: visit(node.pattern))
506
+ end
507
+
508
+ # Copy a MatchWriteNode node
509
+ def visit_match_write_node(node)
510
+ node.copy(call: visit(node.call), targets: visit_all(node.targets))
511
+ end
512
+
513
+ # Copy a MissingNode node
514
+ def visit_missing_node(node)
515
+ node.copy
516
+ end
517
+
518
+ # Copy a ModuleNode node
519
+ def visit_module_node(node)
520
+ node.copy(constant_path: visit(node.constant_path), body: visit(node.body))
521
+ end
522
+
523
+ # Copy a MultiTargetNode node
524
+ def visit_multi_target_node(node)
525
+ node.copy(lefts: visit_all(node.lefts), rest: visit(node.rest), rights: visit_all(node.rights))
526
+ end
527
+
528
+ # Copy a MultiWriteNode node
529
+ def visit_multi_write_node(node)
530
+ node.copy(lefts: visit_all(node.lefts), rest: visit(node.rest), rights: visit_all(node.rights), value: visit(node.value))
531
+ end
532
+
533
+ # Copy a NextNode node
534
+ def visit_next_node(node)
535
+ node.copy(arguments: visit(node.arguments))
536
+ end
537
+
538
+ # Copy a NilNode node
539
+ def visit_nil_node(node)
540
+ node.copy
541
+ end
542
+
543
+ # Copy a NoKeywordsParameterNode node
544
+ def visit_no_keywords_parameter_node(node)
545
+ node.copy
546
+ end
547
+
548
+ # Copy a NumberedParametersNode node
549
+ def visit_numbered_parameters_node(node)
550
+ node.copy
551
+ end
552
+
553
+ # Copy a NumberedReferenceReadNode node
554
+ def visit_numbered_reference_read_node(node)
555
+ node.copy
556
+ end
557
+
558
+ # Copy a OptionalKeywordParameterNode node
559
+ def visit_optional_keyword_parameter_node(node)
560
+ node.copy(value: visit(node.value))
561
+ end
562
+
563
+ # Copy a OptionalParameterNode node
564
+ def visit_optional_parameter_node(node)
565
+ node.copy(value: visit(node.value))
566
+ end
567
+
568
+ # Copy a OrNode node
569
+ def visit_or_node(node)
570
+ node.copy(left: visit(node.left), right: visit(node.right))
571
+ end
572
+
573
+ # Copy a ParametersNode node
574
+ def visit_parameters_node(node)
575
+ node.copy(requireds: visit_all(node.requireds), optionals: visit_all(node.optionals), rest: visit(node.rest), posts: visit_all(node.posts), keywords: visit_all(node.keywords), keyword_rest: visit(node.keyword_rest), block: visit(node.block))
576
+ end
577
+
578
+ # Copy a ParenthesesNode node
579
+ def visit_parentheses_node(node)
580
+ node.copy(body: visit(node.body))
581
+ end
582
+
583
+ # Copy a PinnedExpressionNode node
584
+ def visit_pinned_expression_node(node)
585
+ node.copy(expression: visit(node.expression))
586
+ end
587
+
588
+ # Copy a PinnedVariableNode node
589
+ def visit_pinned_variable_node(node)
590
+ node.copy(variable: visit(node.variable))
591
+ end
592
+
593
+ # Copy a PostExecutionNode node
594
+ def visit_post_execution_node(node)
595
+ node.copy(statements: visit(node.statements))
596
+ end
597
+
598
+ # Copy a PreExecutionNode node
599
+ def visit_pre_execution_node(node)
600
+ node.copy(statements: visit(node.statements))
601
+ end
602
+
603
+ # Copy a ProgramNode node
604
+ def visit_program_node(node)
605
+ node.copy(statements: visit(node.statements))
606
+ end
607
+
608
+ # Copy a RangeNode node
609
+ def visit_range_node(node)
610
+ node.copy(left: visit(node.left), right: visit(node.right))
611
+ end
612
+
613
+ # Copy a RationalNode node
614
+ def visit_rational_node(node)
615
+ node.copy(numeric: visit(node.numeric))
616
+ end
617
+
618
+ # Copy a RedoNode node
619
+ def visit_redo_node(node)
620
+ node.copy
621
+ end
622
+
623
+ # Copy a RegularExpressionNode node
624
+ def visit_regular_expression_node(node)
625
+ node.copy
626
+ end
627
+
628
+ # Copy a RequiredKeywordParameterNode node
629
+ def visit_required_keyword_parameter_node(node)
630
+ node.copy
631
+ end
632
+
633
+ # Copy a RequiredParameterNode node
634
+ def visit_required_parameter_node(node)
635
+ node.copy
636
+ end
637
+
638
+ # Copy a RescueModifierNode node
639
+ def visit_rescue_modifier_node(node)
640
+ node.copy(expression: visit(node.expression), rescue_expression: visit(node.rescue_expression))
641
+ end
642
+
643
+ # Copy a RescueNode node
644
+ def visit_rescue_node(node)
645
+ node.copy(exceptions: visit_all(node.exceptions), reference: visit(node.reference), statements: visit(node.statements), consequent: visit(node.consequent))
646
+ end
647
+
648
+ # Copy a RestParameterNode node
649
+ def visit_rest_parameter_node(node)
650
+ node.copy
651
+ end
652
+
653
+ # Copy a RetryNode node
654
+ def visit_retry_node(node)
655
+ node.copy
656
+ end
657
+
658
+ # Copy a ReturnNode node
659
+ def visit_return_node(node)
660
+ node.copy(arguments: visit(node.arguments))
661
+ end
662
+
663
+ # Copy a SelfNode node
664
+ def visit_self_node(node)
665
+ node.copy
666
+ end
667
+
668
+ # Copy a SingletonClassNode node
669
+ def visit_singleton_class_node(node)
670
+ node.copy(expression: visit(node.expression), body: visit(node.body))
671
+ end
672
+
673
+ # Copy a SourceEncodingNode node
674
+ def visit_source_encoding_node(node)
675
+ node.copy
676
+ end
677
+
678
+ # Copy a SourceFileNode node
679
+ def visit_source_file_node(node)
680
+ node.copy
681
+ end
682
+
683
+ # Copy a SourceLineNode node
684
+ def visit_source_line_node(node)
685
+ node.copy
686
+ end
687
+
688
+ # Copy a SplatNode node
689
+ def visit_splat_node(node)
690
+ node.copy(expression: visit(node.expression))
691
+ end
692
+
693
+ # Copy a StatementsNode node
694
+ def visit_statements_node(node)
695
+ node.copy(body: visit_all(node.body))
696
+ end
697
+
698
+ # Copy a StringNode node
699
+ def visit_string_node(node)
700
+ node.copy
701
+ end
702
+
703
+ # Copy a SuperNode node
704
+ def visit_super_node(node)
705
+ node.copy(arguments: visit(node.arguments), block: visit(node.block))
706
+ end
707
+
708
+ # Copy a SymbolNode node
709
+ def visit_symbol_node(node)
710
+ node.copy
711
+ end
712
+
713
+ # Copy a TrueNode node
714
+ def visit_true_node(node)
715
+ node.copy
716
+ end
717
+
718
+ # Copy a UndefNode node
719
+ def visit_undef_node(node)
720
+ node.copy(names: visit_all(node.names))
721
+ end
722
+
723
+ # Copy a UnlessNode node
724
+ def visit_unless_node(node)
725
+ node.copy(predicate: visit(node.predicate), statements: visit(node.statements), consequent: visit(node.consequent))
726
+ end
727
+
728
+ # Copy a UntilNode node
729
+ def visit_until_node(node)
730
+ node.copy(predicate: visit(node.predicate), statements: visit(node.statements))
731
+ end
732
+
733
+ # Copy a WhenNode node
734
+ def visit_when_node(node)
735
+ node.copy(conditions: visit_all(node.conditions), statements: visit(node.statements))
736
+ end
737
+
738
+ # Copy a WhileNode node
739
+ def visit_while_node(node)
740
+ node.copy(predicate: visit(node.predicate), statements: visit(node.statements))
741
+ end
742
+
743
+ # Copy a XStringNode node
744
+ def visit_x_string_node(node)
745
+ node.copy
746
+ end
747
+
748
+ # Copy a YieldNode node
749
+ def visit_yield_node(node)
750
+ node.copy(arguments: visit(node.arguments))
751
+ end
752
+ end
753
+ end