ed-precompiled_prism 1.5.2

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