refract 1.0.0.beta1 → 1.0.0

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