refract 0.0.2 → 1.0.0.beta1

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 (164) hide show
  1. checksums.yaml +5 -5
  2. data/LICENSE.txt +21 -0
  3. data/README.md +7 -0
  4. data/lib/refract/basic_visitor.rb +40 -0
  5. data/lib/refract/converter.rb +1032 -0
  6. data/lib/refract/formatter.rb +1271 -0
  7. data/lib/refract/mutation_visitor.rb +899 -0
  8. data/lib/refract/nodes/alias_global_variable_node.rb +12 -0
  9. data/lib/refract/nodes/alias_method_node.rb +12 -0
  10. data/lib/refract/nodes/alternation_pattern_node.rb +12 -0
  11. data/lib/refract/nodes/and_node.rb +13 -0
  12. data/lib/refract/nodes/arguments_node.rb +11 -0
  13. data/lib/refract/nodes/array_node.rb +11 -0
  14. data/lib/refract/nodes/array_pattern_node.rb +14 -0
  15. data/lib/refract/nodes/assoc_node.rb +12 -0
  16. data/lib/refract/nodes/assoc_splat_node.rb +11 -0
  17. data/lib/refract/nodes/back_reference_read_node.rb +11 -0
  18. data/lib/refract/nodes/begin_node.rb +14 -0
  19. data/lib/refract/nodes/block_argument_node.rb +11 -0
  20. data/lib/refract/nodes/block_local_variable_node.rb +11 -0
  21. data/lib/refract/nodes/block_node.rb +12 -0
  22. data/lib/refract/nodes/block_parameter_node.rb +11 -0
  23. data/lib/refract/nodes/block_parameters_node.rb +12 -0
  24. data/lib/refract/nodes/break_node.rb +11 -0
  25. data/lib/refract/nodes/call_and_write_node.rb +13 -0
  26. data/lib/refract/nodes/call_node.rb +14 -0
  27. data/lib/refract/nodes/call_operator_write_node.rb +14 -0
  28. data/lib/refract/nodes/call_or_write_node.rb +13 -0
  29. data/lib/refract/nodes/call_target_node.rb +12 -0
  30. data/lib/refract/nodes/capture_pattern_node.rb +12 -0
  31. data/lib/refract/nodes/case_match_node.rb +13 -0
  32. data/lib/refract/nodes/case_node.rb +13 -0
  33. data/lib/refract/nodes/class_node.rb +13 -0
  34. data/lib/refract/nodes/class_variable_and_write_node.rb +12 -0
  35. data/lib/refract/nodes/class_variable_operator_write_node.rb +13 -0
  36. data/lib/refract/nodes/class_variable_or_write_node.rb +12 -0
  37. data/lib/refract/nodes/class_variable_read_node.rb +11 -0
  38. data/lib/refract/nodes/class_variable_target_node.rb +11 -0
  39. data/lib/refract/nodes/class_variable_write_node.rb +12 -0
  40. data/lib/refract/nodes/constant_and_write_node.rb +12 -0
  41. data/lib/refract/nodes/constant_operator_write_node.rb +13 -0
  42. data/lib/refract/nodes/constant_or_write_node.rb +12 -0
  43. data/lib/refract/nodes/constant_path.rb +12 -0
  44. data/lib/refract/nodes/constant_path_and_write_node.rb +12 -0
  45. data/lib/refract/nodes/constant_path_operator_write_node.rb +13 -0
  46. data/lib/refract/nodes/constant_path_or_write_node.rb +12 -0
  47. data/lib/refract/nodes/constant_path_target_node.rb +12 -0
  48. data/lib/refract/nodes/constant_path_write_node.rb +12 -0
  49. data/lib/refract/nodes/constant_read_node.rb +11 -0
  50. data/lib/refract/nodes/constant_target_node.rb +11 -0
  51. data/lib/refract/nodes/constant_write_node.rb +12 -0
  52. data/lib/refract/nodes/def_node.rb +14 -0
  53. data/lib/refract/nodes/defined_node.rb +11 -0
  54. data/lib/refract/nodes/else_node.rb +11 -0
  55. data/lib/refract/nodes/embedded_statements_node.rb +11 -0
  56. data/lib/refract/nodes/embedded_variable_node.rb +11 -0
  57. data/lib/refract/nodes/ensure_node.rb +11 -0
  58. data/lib/refract/nodes/false_node.rb +6 -0
  59. data/lib/refract/nodes/find_pattern_node.rb +14 -0
  60. data/lib/refract/nodes/flip_flop_node.rb +13 -0
  61. data/lib/refract/nodes/float_node.rb +11 -0
  62. data/lib/refract/nodes/for_node.rb +13 -0
  63. data/lib/refract/nodes/forwarding_arguments_node.rb +6 -0
  64. data/lib/refract/nodes/forwarding_parameter_node.rb +6 -0
  65. data/lib/refract/nodes/forwarding_super_node.rb +11 -0
  66. data/lib/refract/nodes/global_variable_and_write_node.rb +12 -0
  67. data/lib/refract/nodes/global_variable_operator_write_node.rb +13 -0
  68. data/lib/refract/nodes/global_variable_or_write_node.rb +12 -0
  69. data/lib/refract/nodes/global_variable_read_node.rb +11 -0
  70. data/lib/refract/nodes/global_variable_target_node.rb +11 -0
  71. data/lib/refract/nodes/global_variable_write_node.rb +12 -0
  72. data/lib/refract/nodes/hash_node.rb +11 -0
  73. data/lib/refract/nodes/hash_pattern_node.rb +12 -0
  74. data/lib/refract/nodes/if_node.rb +13 -0
  75. data/lib/refract/nodes/imaginary_node.rb +11 -0
  76. data/lib/refract/nodes/implicit_node.rb +11 -0
  77. data/lib/refract/nodes/implicit_rest_node.rb +6 -0
  78. data/lib/refract/nodes/in_node.rb +12 -0
  79. data/lib/refract/nodes/index_and_write_node.rb +14 -0
  80. data/lib/refract/nodes/index_operator_write_node.rb +15 -0
  81. data/lib/refract/nodes/index_or_write_node.rb +14 -0
  82. data/lib/refract/nodes/index_target_node.rb +13 -0
  83. data/lib/refract/nodes/instance_variable_and_write_node.rb +12 -0
  84. data/lib/refract/nodes/instance_variable_operator_write_node.rb +13 -0
  85. data/lib/refract/nodes/instance_variable_or_write_node.rb +12 -0
  86. data/lib/refract/nodes/instance_variable_read_node.rb +11 -0
  87. data/lib/refract/nodes/instance_variable_target_node.rb +11 -0
  88. data/lib/refract/nodes/instance_variable_write_node.rb +12 -0
  89. data/lib/refract/nodes/integer_node.rb +11 -0
  90. data/lib/refract/nodes/interpolated_match_last_line_node.rb +15 -0
  91. data/lib/refract/nodes/interpolated_regular_expression_node.rb +15 -0
  92. data/lib/refract/nodes/interpolated_string_node.rb +11 -0
  93. data/lib/refract/nodes/interpolated_symbol_node.rb +11 -0
  94. data/lib/refract/nodes/interpolated_x_string_node.rb +11 -0
  95. data/lib/refract/nodes/it_local_variable_read_node.rb +6 -0
  96. data/lib/refract/nodes/it_parameters_node.rb +6 -0
  97. data/lib/refract/nodes/keyword_hash_node.rb +11 -0
  98. data/lib/refract/nodes/keyword_rest_parameter_node.rb +11 -0
  99. data/lib/refract/nodes/lambda_node.rb +12 -0
  100. data/lib/refract/nodes/local_variable_and_write_node.rb +13 -0
  101. data/lib/refract/nodes/local_variable_operator_write_node.rb +14 -0
  102. data/lib/refract/nodes/local_variable_or_write_node.rb +13 -0
  103. data/lib/refract/nodes/local_variable_read_node.rb +11 -0
  104. data/lib/refract/nodes/local_variable_target_node.rb +11 -0
  105. data/lib/refract/nodes/local_variable_write_node.rb +12 -0
  106. data/lib/refract/nodes/match_last_line_node.rb +15 -0
  107. data/lib/refract/nodes/match_predicate_node.rb +12 -0
  108. data/lib/refract/nodes/match_required_node.rb +12 -0
  109. data/lib/refract/nodes/match_write_node.rb +12 -0
  110. data/lib/refract/nodes/missing_node.rb +6 -0
  111. data/lib/refract/nodes/module_node.rb +12 -0
  112. data/lib/refract/nodes/multi_target_node.rb +13 -0
  113. data/lib/refract/nodes/multi_write_node.rb +14 -0
  114. data/lib/refract/nodes/next_node.rb +11 -0
  115. data/lib/refract/nodes/nil_node.rb +6 -0
  116. data/lib/refract/nodes/no_keywords_parameter_node.rb +6 -0
  117. data/lib/refract/nodes/numbered_parameters_node.rb +6 -0
  118. data/lib/refract/nodes/numbered_reference_read_node.rb +11 -0
  119. data/lib/refract/nodes/optional_keyword_parameter_node.rb +12 -0
  120. data/lib/refract/nodes/optional_parameter_node.rb +12 -0
  121. data/lib/refract/nodes/or_node.rb +13 -0
  122. data/lib/refract/nodes/parameters_node.rb +17 -0
  123. data/lib/refract/nodes/parentheses_node.rb +11 -0
  124. data/lib/refract/nodes/pinned_expression_node.rb +11 -0
  125. data/lib/refract/nodes/pinned_variable_node.rb +11 -0
  126. data/lib/refract/nodes/post_execution_node.rb +11 -0
  127. data/lib/refract/nodes/pre_execution_node.rb +11 -0
  128. data/lib/refract/nodes/program_node.rb +11 -0
  129. data/lib/refract/nodes/range_node.rb +13 -0
  130. data/lib/refract/nodes/rational_node.rb +12 -0
  131. data/lib/refract/nodes/redo_node.rb +6 -0
  132. data/lib/refract/nodes/regular_expression_node.rb +15 -0
  133. data/lib/refract/nodes/required_keyword_parameter_node.rb +11 -0
  134. data/lib/refract/nodes/required_parameter_node.rb +11 -0
  135. data/lib/refract/nodes/rescue_modifier_node.rb +12 -0
  136. data/lib/refract/nodes/rescue_node.rb +14 -0
  137. data/lib/refract/nodes/rest_parameter_node.rb +11 -0
  138. data/lib/refract/nodes/retry_node.rb +6 -0
  139. data/lib/refract/nodes/return_node.rb +11 -0
  140. data/lib/refract/nodes/self_node.rb +6 -0
  141. data/lib/refract/nodes/shareable_constant_node.rb +11 -0
  142. data/lib/refract/nodes/singleton_class_node.rb +12 -0
  143. data/lib/refract/nodes/source_encoding_node.rb +6 -0
  144. data/lib/refract/nodes/source_file_node.rb +6 -0
  145. data/lib/refract/nodes/source_line_node.rb +6 -0
  146. data/lib/refract/nodes/splat_node.rb +11 -0
  147. data/lib/refract/nodes/statements_node.rb +11 -0
  148. data/lib/refract/nodes/string_node.rb +11 -0
  149. data/lib/refract/nodes/super_node.rb +12 -0
  150. data/lib/refract/nodes/symbol_node.rb +11 -0
  151. data/lib/refract/nodes/true_node.rb +6 -0
  152. data/lib/refract/nodes/undef_node.rb +11 -0
  153. data/lib/refract/nodes/unless_node.rb +13 -0
  154. data/lib/refract/nodes/until_node.rb +12 -0
  155. data/lib/refract/nodes/when_node.rb +12 -0
  156. data/lib/refract/nodes/while_node.rb +12 -0
  157. data/lib/refract/nodes/x_string_node.rb +11 -0
  158. data/lib/refract/nodes/yield_node.rb +11 -0
  159. data/lib/refract/version.rb +5 -0
  160. data/lib/refract/visitor.rb +689 -0
  161. data/lib/refract.rb +36 -50
  162. data/lib/rubocop/cop/refract/ordered_visit_methods.rb +107 -0
  163. data/lib/rubocop/cop/refract_cops.rb +3 -0
  164. metadata +189 -26
@@ -0,0 +1,899 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Refract
4
+ class MutationVisitor < BasicVisitor
5
+ def self.visit(node_class, &)
6
+ define_method("visit_#{node_class.type}") do |node|
7
+ return_value = instance_exec(node, &)
8
+ raise unless node_class === return_value
9
+ return_value
10
+ end
11
+ end
12
+
13
+ visit AliasGlobalVariableNode do |node|
14
+ node.update(
15
+ new_name: visit(node.new_name),
16
+ old_name: visit(node.old_name),
17
+ )
18
+ end
19
+
20
+ visit AliasMethodNode do |node|
21
+ node.update(
22
+ new_name: visit(node.new_name),
23
+ old_name: visit(node.old_name),
24
+ )
25
+ end
26
+
27
+ visit AlternationPatternNode do |node|
28
+ node.update(
29
+ left: visit(node.left),
30
+ right: visit(node.right),
31
+ )
32
+ end
33
+
34
+ visit AndNode do |node|
35
+ node.update(
36
+ left: visit(node.left),
37
+ right: visit(node.right),
38
+ )
39
+ end
40
+
41
+ visit ArgumentsNode do |node|
42
+ node.update(
43
+ arguments: node.arguments&.map { |n| visit(n) },
44
+ )
45
+ end
46
+
47
+ visit ArrayNode do |node|
48
+ node.update(
49
+ elements: node.elements&.map { |n| visit(n) },
50
+ )
51
+ end
52
+
53
+ visit ArrayPatternNode do |node|
54
+ node.update(
55
+ constant: visit(node.constant),
56
+ requireds: node.requireds&.map { |n| visit(n) },
57
+ rest: visit(node.rest),
58
+ )
59
+ end
60
+
61
+ visit AssocNode do |node|
62
+ node.update(
63
+ key: visit(node.key),
64
+ value: visit(node.value),
65
+ )
66
+ end
67
+
68
+ visit AssocSplatNode do |node|
69
+ node.update(
70
+ value: visit(node.value),
71
+ )
72
+ end
73
+
74
+ visit BackReferenceReadNode do |node|
75
+ node
76
+ end
77
+
78
+ visit BeginNode do |node|
79
+ node.update(
80
+ statements: visit(node.statements),
81
+ rescue_clause: visit(node.rescue_clause),
82
+ else_clause: visit(node.else_clause),
83
+ ensure_clause: visit(node.ensure_clause),
84
+ )
85
+ end
86
+
87
+ visit BlockArgumentNode do |node|
88
+ node.update(
89
+ expression: visit(node.expression),
90
+ )
91
+ end
92
+
93
+ visit BlockLocalVariableNode do |node|
94
+ node
95
+ end
96
+
97
+ visit BlockNode do |node|
98
+ node.update(
99
+ parameters: visit(node.parameters),
100
+ body: visit(node.body),
101
+ )
102
+ end
103
+
104
+ visit BlockParameterNode do |node|
105
+ node
106
+ end
107
+
108
+ visit BlockParametersNode do |node|
109
+ node.update(
110
+ parameters: visit(node.parameters),
111
+ locals: node.locals&.map { |n| visit(n) },
112
+ )
113
+ end
114
+
115
+ visit BreakNode do |node|
116
+ node.update(
117
+ arguments: visit(node.arguments),
118
+ )
119
+ end
120
+
121
+ visit CallAndWriteNode do |node|
122
+ node.update(
123
+ receiver: visit(node.receiver),
124
+ value: visit(node.value),
125
+ )
126
+ end
127
+
128
+ visit CallNode do |node|
129
+ node.update(
130
+ receiver: visit(node.receiver),
131
+ arguments: visit(node.arguments),
132
+ block: visit(node.block),
133
+ )
134
+ end
135
+
136
+ visit CallOperatorWriteNode do |node|
137
+ node.update(
138
+ receiver: visit(node.receiver),
139
+ value: visit(node.value),
140
+ )
141
+ end
142
+
143
+ visit CallOrWriteNode do |node|
144
+ node.update(
145
+ receiver: visit(node.receiver),
146
+ value: visit(node.value),
147
+ )
148
+ end
149
+
150
+ visit CallTargetNode do |node|
151
+ node.update(
152
+ receiver: visit(node.receiver),
153
+ )
154
+ end
155
+
156
+ visit CapturePatternNode do |node|
157
+ node.update(
158
+ value: visit(node.value),
159
+ target: visit(node.target),
160
+ )
161
+ end
162
+
163
+ visit CaseMatchNode do |node|
164
+ node.update(
165
+ predicate: visit(node.predicate),
166
+ conditions: node.conditions&.map { |n| visit(n) },
167
+ else_clause: visit(node.else_clause),
168
+ )
169
+ end
170
+
171
+ visit CaseNode do |node|
172
+ node.update(
173
+ predicate: visit(node.predicate),
174
+ conditions: node.conditions&.map { |n| visit(n) },
175
+ else_clause: visit(node.else_clause),
176
+ )
177
+ end
178
+
179
+ visit ClassNode do |node|
180
+ node.update(
181
+ constant_path: visit(node.constant_path),
182
+ superclass: visit(node.superclass),
183
+ body: visit(node.body),
184
+ )
185
+ end
186
+
187
+ visit ClassVariableAndWriteNode do |node|
188
+ node.update(
189
+ value: visit(node.value),
190
+ )
191
+ end
192
+
193
+ visit ClassVariableOperatorWriteNode do |node|
194
+ node.update(
195
+ value: visit(node.value),
196
+ )
197
+ end
198
+
199
+ visit ClassVariableOrWriteNode do |node|
200
+ node.update(
201
+ value: visit(node.value),
202
+ )
203
+ end
204
+
205
+ visit ClassVariableReadNode do |node|
206
+ node
207
+ end
208
+
209
+ visit ClassVariableTargetNode do |node|
210
+ node
211
+ end
212
+
213
+ visit ClassVariableWriteNode do |node|
214
+ node.update(
215
+ value: visit(node.value),
216
+ )
217
+ end
218
+
219
+ visit ConstantOrWriteNode do |node|
220
+ node.update(
221
+ value: visit(node.value),
222
+ )
223
+ end
224
+
225
+ visit ConstantPath do |node|
226
+ node.update(
227
+ parent: visit(node.parent),
228
+ )
229
+ end
230
+
231
+ visit ConstantPathAndWriteNode do |node|
232
+ node.update(
233
+ target: visit(node.target),
234
+ value: visit(node.value),
235
+ )
236
+ end
237
+
238
+ visit ConstantPathOperatorWriteNode do |node|
239
+ node.update(
240
+ target: visit(node.target),
241
+ value: visit(node.value),
242
+ )
243
+ end
244
+
245
+ visit ConstantPathOrWriteNode do |node|
246
+ node.update(
247
+ target: visit(node.target),
248
+ value: visit(node.value),
249
+ )
250
+ end
251
+
252
+ visit ConstantPathTargetNode do |node|
253
+ node.update(
254
+ parent: visit(node.parent),
255
+ )
256
+ end
257
+
258
+ visit ConstantPathWriteNode do |node|
259
+ node.update(
260
+ target: visit(node.target),
261
+ value: visit(node.value),
262
+ )
263
+ end
264
+
265
+ visit ConstantReadNode do |node|
266
+ node
267
+ end
268
+
269
+ visit ConstantTargetNode do |node|
270
+ node
271
+ end
272
+
273
+ visit ConstantWriteNode do |node|
274
+ node.update(
275
+ value: visit(node.value),
276
+ )
277
+ end
278
+
279
+ visit DefNode do |node|
280
+ node.update(
281
+ receiver: visit(node.receiver),
282
+ parameters: visit(node.parameters),
283
+ body: visit(node.body),
284
+ )
285
+ end
286
+
287
+ visit DefinedNode do |node|
288
+ node.update(
289
+ value: visit(node.value),
290
+ )
291
+ end
292
+
293
+ visit ElseNode do |node|
294
+ node.update(
295
+ statements: visit(node.statements),
296
+ )
297
+ end
298
+
299
+ visit EmbeddedStatementsNode do |node|
300
+ node.update(
301
+ statements: visit(node.statements),
302
+ )
303
+ end
304
+
305
+ visit EmbeddedVariableNode do |node|
306
+ node.update(
307
+ variable: visit(node.variable),
308
+ )
309
+ end
310
+
311
+ visit EnsureNode do |node|
312
+ node.update(
313
+ statements: visit(node.statements),
314
+ )
315
+ end
316
+
317
+ visit FalseNode do |node|
318
+ node
319
+ end
320
+
321
+ visit FindPatternNode do |node|
322
+ node.update(
323
+ constant: visit(node.constant),
324
+ left: visit(node.left),
325
+ requireds: node.requireds&.map { |n| visit(n) },
326
+ right: visit(node.right),
327
+ )
328
+ end
329
+
330
+ visit FlipFlopNode do |node|
331
+ node.update(
332
+ left: visit(node.left),
333
+ right: visit(node.right),
334
+ )
335
+ end
336
+
337
+ visit FloatNode do |node|
338
+ node
339
+ end
340
+
341
+ visit ForNode do |node|
342
+ node.update(
343
+ index: visit(node.index),
344
+ collection: visit(node.collection),
345
+ statements: visit(node.statements),
346
+ )
347
+ end
348
+
349
+ visit ForwardingArgumentsNode do |node|
350
+ node
351
+ end
352
+
353
+ visit ForwardingParameterNode do |node|
354
+ node
355
+ end
356
+
357
+ visit ForwardingSuperNode do |node|
358
+ node.update(
359
+ block: visit(node.block),
360
+ )
361
+ end
362
+
363
+ visit GlobalVariableAndWriteNode do |node|
364
+ node.update(
365
+ value: visit(node.value),
366
+ )
367
+ end
368
+
369
+ visit GlobalVariableOperatorWriteNode do |node|
370
+ node.update(
371
+ value: visit(node.value),
372
+ )
373
+ end
374
+
375
+ visit GlobalVariableOrWriteNode do |node|
376
+ node.update(
377
+ value: visit(node.value),
378
+ )
379
+ end
380
+
381
+ visit GlobalVariableReadNode do |node|
382
+ node
383
+ end
384
+
385
+ visit GlobalVariableTargetNode do |node|
386
+ node
387
+ end
388
+
389
+ visit GlobalVariableWriteNode do |node|
390
+ node.update(
391
+ value: visit(node.value),
392
+ )
393
+ end
394
+
395
+ visit HashNode do |node|
396
+ node.update(
397
+ elements: node.elements&.map { |n| visit(n) },
398
+ )
399
+ end
400
+
401
+ visit HashPatternNode do |node|
402
+ node.update(
403
+ elements: node.elements&.map { |n| visit(n) },
404
+ rest: visit(node.rest),
405
+ )
406
+ end
407
+
408
+ visit IfNode do |node|
409
+ node.update(
410
+ predicate: visit(node.predicate),
411
+ statements: visit(node.statements),
412
+ subsequent: visit(node.subsequent),
413
+ )
414
+ end
415
+
416
+ visit ImaginaryNode do |node|
417
+ node.update(
418
+ numeric: visit(node.numeric),
419
+ )
420
+ end
421
+
422
+ visit ImplicitNode do |node|
423
+ node
424
+ end
425
+
426
+ visit ImplicitRestNode do |node|
427
+ node
428
+ end
429
+
430
+ visit InNode do |node|
431
+ node.update(
432
+ pattern: visit(node.pattern),
433
+ statements: visit(node.statements),
434
+ )
435
+ end
436
+
437
+ visit IndexAndWriteNode do |node|
438
+ node.update(
439
+ receiver: visit(node.receiver),
440
+ arguments: visit(node.arguments),
441
+ block: visit(node.block),
442
+ value: visit(node.value),
443
+ )
444
+ end
445
+
446
+ visit IndexOperatorWriteNode do |node|
447
+ node.update(
448
+ receiver: visit(node.receiver),
449
+ arguments: visit(node.arguments),
450
+ block: visit(node.block),
451
+ value: visit(node.value),
452
+ )
453
+ end
454
+
455
+ visit IndexOrWriteNode do |node|
456
+ node.update(
457
+ receiver: visit(node.receiver),
458
+ arguments: visit(node.arguments),
459
+ block: visit(node.block),
460
+ value: visit(node.value),
461
+ )
462
+ end
463
+
464
+ visit IndexTargetNode do |node|
465
+ node.update(
466
+ receiver: visit(node.receiver),
467
+ arguments: visit(node.arguments),
468
+ block: visit(node.block),
469
+ )
470
+ end
471
+
472
+ visit InstanceVariableAndWriteNode do |node|
473
+ node.update(
474
+ value: visit(node.value),
475
+ )
476
+ end
477
+
478
+ visit InstanceVariableOperatorWriteNode do |node|
479
+ node.update(
480
+ value: visit(node.value),
481
+ )
482
+ end
483
+
484
+ visit InstanceVariableOrWriteNode do |node|
485
+ node.update(
486
+ value: visit(node.value),
487
+ )
488
+ end
489
+
490
+ visit InstanceVariableReadNode do |node|
491
+ node
492
+ end
493
+
494
+ visit InstanceVariableTargetNode do |node|
495
+ node
496
+ end
497
+
498
+ visit InstanceVariableWriteNode do |node|
499
+ node.update(
500
+ value: visit(node.value),
501
+ )
502
+ end
503
+
504
+ visit IntegerNode do |node|
505
+ node
506
+ end
507
+
508
+ visit InterpolatedMatchLastLineNode do |node|
509
+ node.update(
510
+ parts: node.parts.map { |n| visit(n) },
511
+ )
512
+ end
513
+
514
+ visit InterpolatedRegularExpressionNode do |node|
515
+ node.update(
516
+ parts: node.parts&.map { |n| visit(n) },
517
+ )
518
+ end
519
+
520
+ visit InterpolatedStringNode do |node|
521
+ node.update(
522
+ parts: node.parts&.map { |n| visit(n) },
523
+ )
524
+ end
525
+
526
+ visit InterpolatedSymbolNode do |node|
527
+ node.update(
528
+ parts: node.parts&.map { |n| visit(n) },
529
+ )
530
+ end
531
+
532
+ visit InterpolatedXStringNode do |node|
533
+ node.update(
534
+ parts: node.parts&.map { |n| visit(n) },
535
+ )
536
+ end
537
+
538
+ visit ItLocalVariableReadNode do |node|
539
+ node
540
+ end
541
+
542
+ visit ItParametersNode do |node|
543
+ node
544
+ end
545
+
546
+ visit KeywordHashNode do |node|
547
+ node.update(
548
+ elements: node.elements&.map { |n| visit(n) },
549
+ )
550
+ end
551
+
552
+ visit KeywordRestParameterNode do |node|
553
+ node
554
+ end
555
+
556
+ visit LambdaNode do |node|
557
+ node.update(
558
+ parameters: visit(node.parameters),
559
+ body: visit(node.body),
560
+ )
561
+ end
562
+
563
+ visit LocalVariableAndWriteNode do |node|
564
+ node.update(
565
+ value: visit(node.value),
566
+ )
567
+ end
568
+
569
+ visit LocalVariableOperatorWriteNode do |node|
570
+ node.update(
571
+ value: visit(node.value),
572
+ )
573
+ end
574
+
575
+ visit LocalVariableOrWriteNode do |node|
576
+ node.update(
577
+ value: visit(node.value),
578
+ )
579
+ end
580
+
581
+ visit LocalVariableReadNode do |node|
582
+ node
583
+ end
584
+
585
+ visit LocalVariableTargetNode do |node|
586
+ node
587
+ end
588
+
589
+ visit LocalVariableWriteNode do |node|
590
+ node.update(
591
+ value: visit(node.value),
592
+ )
593
+ end
594
+
595
+ visit MatchLastLineNode do |node|
596
+ node
597
+ end
598
+
599
+ visit MatchPredicateNode do |node|
600
+ node.update(
601
+ value: visit(node.value),
602
+ pattern: visit(node.pattern),
603
+ )
604
+ end
605
+
606
+ visit MatchRequiredNode do |node|
607
+ node.update(
608
+ value: visit(node.value),
609
+ pattern: visit(node.pattern),
610
+ )
611
+ end
612
+
613
+ visit MatchWriteNode do |node|
614
+ node.update(
615
+ call: visit(node.call),
616
+ targets: node.targets&.map { |n| visit(n) },
617
+ )
618
+ end
619
+
620
+ visit MissingNode do |node|
621
+ node
622
+ end
623
+
624
+ visit ModuleNode do |node|
625
+ node.update(
626
+ constant_path: visit(node.constant_path),
627
+ body: visit(node.body),
628
+ )
629
+ end
630
+
631
+ visit MultiTargetNode do |node|
632
+ node.update(
633
+ lefts: node.lefts&.map { |n| visit(n) },
634
+ rest: visit(node.rest),
635
+ rights: node.rights&.map { |n| visit(n) },
636
+ )
637
+ end
638
+
639
+ visit MultiWriteNode do |node|
640
+ node.update(
641
+ lefts: node.lefts&.map { |n| visit(n) },
642
+ rest: visit(node.rest),
643
+ rights: node.rights&.map { |n| visit(n) },
644
+ value: visit(node.value),
645
+ )
646
+ end
647
+
648
+ visit NextNode do |node|
649
+ node.update(
650
+ arguments: visit(node.arguments),
651
+ )
652
+ end
653
+
654
+ visit NilNode do |node|
655
+ node
656
+ end
657
+
658
+ visit NoKeywordsParameterNode do |node|
659
+ node
660
+ end
661
+
662
+ visit NumberedParametersNode do |node|
663
+ node
664
+ end
665
+
666
+ visit NumberedReferenceReadNode do |node|
667
+ node
668
+ end
669
+
670
+ visit OptionalKeywordParameterNode do |node|
671
+ node.update(
672
+ value: visit(node.value),
673
+ )
674
+ end
675
+
676
+ visit OptionalParameterNode do |node|
677
+ node.update(
678
+ value: visit(node.value),
679
+ )
680
+ end
681
+
682
+ visit OrNode do |node|
683
+ node.update(
684
+ left: visit(node.left),
685
+ right: visit(node.right),
686
+ )
687
+ end
688
+
689
+ visit ParametersNode do |node|
690
+ node.update(
691
+ requireds: node.requireds&.map { |n| visit(n) },
692
+ optionals: node.optionals&.map { |n| visit(n) },
693
+ rest: visit(node.rest),
694
+ posts: node.posts&.map { |n| visit(n) },
695
+ keywords: node.keywords&.map { |n| visit(n) },
696
+ keyword_rest: visit(node.keyword_rest),
697
+ block: visit(node.block),
698
+ )
699
+ end
700
+
701
+ visit ParenthesesNode do |node|
702
+ node.update(
703
+ body: visit(node.body),
704
+ )
705
+ end
706
+
707
+ visit PinnedExpressionNode do |node|
708
+ node.update(
709
+ expression: visit(node.expression),
710
+ )
711
+ end
712
+
713
+ visit PinnedVariableNode do |node|
714
+ node.update(
715
+ variable: visit(node.variable),
716
+ )
717
+ end
718
+
719
+ visit PostExecutionNode do |node|
720
+ node.update(
721
+ statements: visit(node.statements),
722
+ )
723
+ end
724
+
725
+ visit PreExecutionNode do |node|
726
+ node.update(
727
+ statements: visit(node.statements),
728
+ )
729
+ end
730
+
731
+ visit ProgramNode do |node|
732
+ node.update(
733
+ statements: visit(node.statements),
734
+ )
735
+ end
736
+
737
+ visit RangeNode do |node|
738
+ node.update(
739
+ left: visit(node.left),
740
+ right: visit(node.right),
741
+ )
742
+ end
743
+
744
+ visit RationalNode do |node|
745
+ node
746
+ end
747
+
748
+ visit RedoNode do |node|
749
+ node
750
+ end
751
+
752
+ visit RegularExpressionNode do |node|
753
+ node
754
+ end
755
+
756
+ visit RequiredKeywordParameterNode do |node|
757
+ node
758
+ end
759
+
760
+ visit RequiredParameterNode do |node|
761
+ node
762
+ end
763
+
764
+ visit RescueModifierNode do |node|
765
+ node.update(
766
+ expression: visit(node.expression),
767
+ rescue_expression: visit(node.rescue_expression),
768
+ )
769
+ end
770
+
771
+ visit RescueNode do |node|
772
+ node.update(
773
+ exceptions: node.exceptions&.map { |n| visit(n) },
774
+ reference: visit(node.reference),
775
+ statements: visit(node.statements),
776
+ subsequent: visit(node.subsequent),
777
+ )
778
+ end
779
+
780
+ visit RestParameterNode do |node|
781
+ node
782
+ end
783
+
784
+ visit RetryNode do |node|
785
+ node
786
+ end
787
+
788
+ visit ReturnNode do |node|
789
+ node.update(
790
+ arguments: visit(node.arguments),
791
+ )
792
+ end
793
+
794
+ visit SelfNode do |node|
795
+ node
796
+ end
797
+
798
+ visit ShareableConstantNode do |node|
799
+ node.update(
800
+ write: visit(node.write),
801
+ )
802
+ end
803
+
804
+ visit SingletonClassNode do |node|
805
+ node.update(
806
+ expression: visit(node.expression),
807
+ body: visit(node.body),
808
+ )
809
+ end
810
+
811
+ visit SourceEncodingNode do |node|
812
+ node
813
+ end
814
+
815
+ visit SourceFileNode do |node|
816
+ node
817
+ end
818
+
819
+ visit SourceLineNode do |node|
820
+ node
821
+ end
822
+
823
+ visit SplatNode do |node|
824
+ node.update(
825
+ expression: visit(node.expression),
826
+ )
827
+ end
828
+
829
+ visit StatementsNode do |node|
830
+ node.update(
831
+ body: node.body&.map { |n| visit(n) },
832
+ )
833
+ end
834
+
835
+ visit StringNode do |node|
836
+ node
837
+ end
838
+
839
+ visit SuperNode do |node|
840
+ node.update(
841
+ arguments: visit(node.arguments),
842
+ block: visit(node.block),
843
+ )
844
+ end
845
+
846
+ visit SymbolNode do |node|
847
+ node
848
+ end
849
+
850
+ visit TrueNode do |node|
851
+ node
852
+ end
853
+
854
+ visit UndefNode do |node|
855
+ node.update(
856
+ names: node.names&.map { |n| visit(n) },
857
+ )
858
+ end
859
+
860
+ visit UnlessNode do |node|
861
+ node.update(
862
+ predicate: visit(node.predicate),
863
+ statements: visit(node.statements),
864
+ else_clause: visit(node.else_clause),
865
+ )
866
+ end
867
+
868
+ visit UntilNode do |node|
869
+ node.update(
870
+ predicate: visit(node.predicate),
871
+ statements: visit(node.statements),
872
+ )
873
+ end
874
+
875
+ visit WhenNode do |node|
876
+ node.update(
877
+ conditions: node.conditions&.map { |n| visit(n) },
878
+ statements: visit(node.statements),
879
+ )
880
+ end
881
+
882
+ visit WhileNode do |node|
883
+ node.update(
884
+ predicate: visit(node.predicate),
885
+ statements: visit(node.statements),
886
+ )
887
+ end
888
+
889
+ visit XStringNode do |node|
890
+ node
891
+ end
892
+
893
+ visit YieldNode do |node|
894
+ node.update(
895
+ arguments: visit(node.arguments),
896
+ )
897
+ end
898
+ end
899
+ end