refract 0.0.2 → 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.
- checksums.yaml +5 -5
- data/LICENSE.txt +21 -0
- data/README.md +7 -0
- data/lib/refract/basic_visitor.rb +45 -0
- data/lib/refract/converter.rb +1204 -0
- data/lib/refract/formatter.rb +1304 -0
- data/lib/refract/mutation_visitor.rb +895 -0
- data/lib/refract/nodes/alias_global_variable_node.rb +14 -0
- data/lib/refract/nodes/alias_method_node.rb +14 -0
- data/lib/refract/nodes/alternation_pattern_node.rb +14 -0
- data/lib/refract/nodes/and_node.rb +15 -0
- data/lib/refract/nodes/arguments_node.rb +13 -0
- data/lib/refract/nodes/array_node.rb +13 -0
- data/lib/refract/nodes/array_pattern_node.rb +16 -0
- data/lib/refract/nodes/assoc_node.rb +14 -0
- data/lib/refract/nodes/assoc_splat_node.rb +13 -0
- data/lib/refract/nodes/back_reference_read_node.rb +13 -0
- data/lib/refract/nodes/begin_node.rb +16 -0
- data/lib/refract/nodes/block_argument_node.rb +13 -0
- data/lib/refract/nodes/block_local_variable_node.rb +13 -0
- data/lib/refract/nodes/block_node.rb +14 -0
- data/lib/refract/nodes/block_parameter_node.rb +13 -0
- data/lib/refract/nodes/block_parameters_node.rb +14 -0
- data/lib/refract/nodes/break_node.rb +13 -0
- data/lib/refract/nodes/call_and_write_node.rb +15 -0
- data/lib/refract/nodes/call_node.rb +16 -0
- data/lib/refract/nodes/call_operator_write_node.rb +16 -0
- data/lib/refract/nodes/call_or_write_node.rb +15 -0
- data/lib/refract/nodes/call_target_node.rb +14 -0
- data/lib/refract/nodes/capture_pattern_node.rb +14 -0
- data/lib/refract/nodes/case_match_node.rb +15 -0
- data/lib/refract/nodes/case_node.rb +15 -0
- data/lib/refract/nodes/class_node.rb +15 -0
- data/lib/refract/nodes/class_variable_and_write_node.rb +14 -0
- data/lib/refract/nodes/class_variable_operator_write_node.rb +15 -0
- data/lib/refract/nodes/class_variable_or_write_node.rb +14 -0
- data/lib/refract/nodes/class_variable_read_node.rb +13 -0
- data/lib/refract/nodes/class_variable_target_node.rb +13 -0
- data/lib/refract/nodes/class_variable_write_node.rb +14 -0
- data/lib/refract/nodes/constant_and_write_node.rb +14 -0
- data/lib/refract/nodes/constant_operator_write_node.rb +15 -0
- data/lib/refract/nodes/constant_or_write_node.rb +14 -0
- data/lib/refract/nodes/constant_path_and_write_node.rb +14 -0
- data/lib/refract/nodes/constant_path_node.rb +14 -0
- data/lib/refract/nodes/constant_path_operator_write_node.rb +15 -0
- data/lib/refract/nodes/constant_path_or_write_node.rb +14 -0
- data/lib/refract/nodes/constant_path_target_node.rb +14 -0
- data/lib/refract/nodes/constant_path_write_node.rb +14 -0
- data/lib/refract/nodes/constant_read_node.rb +13 -0
- data/lib/refract/nodes/constant_target_node.rb +13 -0
- data/lib/refract/nodes/constant_write_node.rb +14 -0
- data/lib/refract/nodes/def_node.rb +16 -0
- data/lib/refract/nodes/defined_node.rb +13 -0
- data/lib/refract/nodes/else_node.rb +13 -0
- data/lib/refract/nodes/embedded_statements_node.rb +13 -0
- data/lib/refract/nodes/embedded_variable_node.rb +13 -0
- data/lib/refract/nodes/ensure_node.rb +13 -0
- data/lib/refract/nodes/false_node.rb +9 -0
- data/lib/refract/nodes/find_pattern_node.rb +16 -0
- data/lib/refract/nodes/flip_flop_node.rb +15 -0
- data/lib/refract/nodes/float_node.rb +13 -0
- data/lib/refract/nodes/for_node.rb +15 -0
- data/lib/refract/nodes/forwarding_arguments_node.rb +9 -0
- data/lib/refract/nodes/forwarding_parameter_node.rb +9 -0
- data/lib/refract/nodes/forwarding_super_node.rb +13 -0
- data/lib/refract/nodes/global_variable_and_write_node.rb +14 -0
- data/lib/refract/nodes/global_variable_operator_write_node.rb +15 -0
- data/lib/refract/nodes/global_variable_or_write_node.rb +14 -0
- data/lib/refract/nodes/global_variable_read_node.rb +13 -0
- data/lib/refract/nodes/global_variable_target_node.rb +13 -0
- data/lib/refract/nodes/global_variable_write_node.rb +14 -0
- data/lib/refract/nodes/hash_node.rb +13 -0
- data/lib/refract/nodes/hash_pattern_node.rb +14 -0
- data/lib/refract/nodes/if_node.rb +16 -0
- data/lib/refract/nodes/imaginary_node.rb +13 -0
- data/lib/refract/nodes/implicit_node.rb +13 -0
- data/lib/refract/nodes/implicit_rest_node.rb +9 -0
- data/lib/refract/nodes/in_node.rb +14 -0
- data/lib/refract/nodes/index_and_write_node.rb +16 -0
- data/lib/refract/nodes/index_operator_write_node.rb +17 -0
- data/lib/refract/nodes/index_or_write_node.rb +16 -0
- data/lib/refract/nodes/index_target_node.rb +15 -0
- data/lib/refract/nodes/instance_variable_and_write_node.rb +14 -0
- data/lib/refract/nodes/instance_variable_operator_write_node.rb +15 -0
- data/lib/refract/nodes/instance_variable_or_write_node.rb +14 -0
- data/lib/refract/nodes/instance_variable_read_node.rb +13 -0
- data/lib/refract/nodes/instance_variable_target_node.rb +13 -0
- data/lib/refract/nodes/instance_variable_write_node.rb +14 -0
- data/lib/refract/nodes/integer_node.rb +13 -0
- data/lib/refract/nodes/interpolated_match_last_line_node.rb +17 -0
- data/lib/refract/nodes/interpolated_regular_expression_node.rb +17 -0
- data/lib/refract/nodes/interpolated_string_node.rb +13 -0
- data/lib/refract/nodes/interpolated_symbol_node.rb +13 -0
- data/lib/refract/nodes/interpolated_x_string_node.rb +13 -0
- data/lib/refract/nodes/it_local_variable_read_node.rb +9 -0
- data/lib/refract/nodes/it_parameters_node.rb +9 -0
- data/lib/refract/nodes/keyword_hash_node.rb +13 -0
- data/lib/refract/nodes/keyword_rest_parameter_node.rb +13 -0
- data/lib/refract/nodes/lambda_node.rb +14 -0
- data/lib/refract/nodes/local_variable_and_write_node.rb +15 -0
- data/lib/refract/nodes/local_variable_operator_write_node.rb +16 -0
- data/lib/refract/nodes/local_variable_or_write_node.rb +15 -0
- data/lib/refract/nodes/local_variable_read_node.rb +13 -0
- data/lib/refract/nodes/local_variable_target_node.rb +13 -0
- data/lib/refract/nodes/local_variable_write_node.rb +14 -0
- data/lib/refract/nodes/match_last_line_node.rb +17 -0
- data/lib/refract/nodes/match_predicate_node.rb +14 -0
- data/lib/refract/nodes/match_required_node.rb +14 -0
- data/lib/refract/nodes/match_write_node.rb +14 -0
- data/lib/refract/nodes/missing_node.rb +9 -0
- data/lib/refract/nodes/module_node.rb +14 -0
- data/lib/refract/nodes/multi_target_node.rb +15 -0
- data/lib/refract/nodes/multi_write_node.rb +16 -0
- data/lib/refract/nodes/next_node.rb +13 -0
- data/lib/refract/nodes/nil_node.rb +9 -0
- data/lib/refract/nodes/no_keywords_parameter_node.rb +9 -0
- data/lib/refract/nodes/numbered_parameters_node.rb +9 -0
- data/lib/refract/nodes/numbered_reference_read_node.rb +13 -0
- data/lib/refract/nodes/optional_keyword_parameter_node.rb +14 -0
- data/lib/refract/nodes/optional_parameter_node.rb +14 -0
- data/lib/refract/nodes/or_node.rb +15 -0
- data/lib/refract/nodes/parameters_node.rb +19 -0
- data/lib/refract/nodes/parentheses_node.rb +13 -0
- data/lib/refract/nodes/pinned_expression_node.rb +13 -0
- data/lib/refract/nodes/pinned_variable_node.rb +13 -0
- data/lib/refract/nodes/post_execution_node.rb +13 -0
- data/lib/refract/nodes/pre_execution_node.rb +13 -0
- data/lib/refract/nodes/program_node.rb +13 -0
- data/lib/refract/nodes/range_node.rb +15 -0
- data/lib/refract/nodes/rational_node.rb +14 -0
- data/lib/refract/nodes/redo_node.rb +9 -0
- data/lib/refract/nodes/regular_expression_node.rb +17 -0
- data/lib/refract/nodes/required_keyword_parameter_node.rb +13 -0
- data/lib/refract/nodes/required_parameter_node.rb +13 -0
- data/lib/refract/nodes/rescue_modifier_node.rb +14 -0
- data/lib/refract/nodes/rescue_node.rb +16 -0
- data/lib/refract/nodes/rest_parameter_node.rb +13 -0
- data/lib/refract/nodes/retry_node.rb +9 -0
- data/lib/refract/nodes/return_node.rb +13 -0
- data/lib/refract/nodes/self_node.rb +9 -0
- data/lib/refract/nodes/shareable_constant_node.rb +13 -0
- data/lib/refract/nodes/singleton_class_node.rb +14 -0
- data/lib/refract/nodes/source_encoding_node.rb +9 -0
- data/lib/refract/nodes/source_file_node.rb +9 -0
- data/lib/refract/nodes/source_line_node.rb +9 -0
- data/lib/refract/nodes/splat_node.rb +13 -0
- data/lib/refract/nodes/statements_node.rb +13 -0
- data/lib/refract/nodes/string_node.rb +13 -0
- data/lib/refract/nodes/super_node.rb +14 -0
- data/lib/refract/nodes/symbol_node.rb +13 -0
- data/lib/refract/nodes/true_node.rb +9 -0
- data/lib/refract/nodes/undef_node.rb +13 -0
- data/lib/refract/nodes/unless_node.rb +16 -0
- data/lib/refract/nodes/until_node.rb +15 -0
- data/lib/refract/nodes/when_node.rb +14 -0
- data/lib/refract/nodes/while_node.rb +15 -0
- data/lib/refract/nodes/x_string_node.rb +13 -0
- data/lib/refract/nodes/yield_node.rb +13 -0
- data/lib/refract/version.rb +5 -0
- data/lib/refract/visitor.rb +689 -0
- data/lib/refract.rb +50 -55
- data/lib/rubocop/cop/refract/ordered_visit_methods.rb +107 -0
- data/lib/rubocop/cop/refract_cops.rb +3 -0
- metadata +189 -26
@@ -0,0 +1,1204 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Refract
|
4
|
+
class Converter < Prism::BasicVisitor
|
5
|
+
def self.visit(node_class, &)
|
6
|
+
raise ArgumentError unless Class === node_class && Prism::Node > node_class
|
7
|
+
type = node_class.type.name
|
8
|
+
|
9
|
+
define_method("visit_#{type}") do |node|
|
10
|
+
raise ArgumentError unless node_class === node
|
11
|
+
return_value = instance_exec(node, &)
|
12
|
+
raise ArgumentError unless Node === return_value
|
13
|
+
return_value
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
visit Prism::AliasGlobalVariableNode do |node|
|
18
|
+
AliasGlobalVariableNode.new(
|
19
|
+
prism_node: node,
|
20
|
+
new_name: visit(node.new_name),
|
21
|
+
old_name: visit(node.old_name),
|
22
|
+
)
|
23
|
+
end
|
24
|
+
|
25
|
+
visit Prism::AliasMethodNode do |node|
|
26
|
+
AliasMethodNode.new(
|
27
|
+
prism_node: node,
|
28
|
+
new_name: visit(node.new_name),
|
29
|
+
old_name: visit(node.old_name),
|
30
|
+
)
|
31
|
+
end
|
32
|
+
|
33
|
+
visit Prism::AlternationPatternNode do |node|
|
34
|
+
AlternationPatternNode.new(
|
35
|
+
prism_node: node,
|
36
|
+
left: visit(node.left),
|
37
|
+
right: visit(node.right),
|
38
|
+
)
|
39
|
+
end
|
40
|
+
|
41
|
+
visit Prism::AndNode do |node|
|
42
|
+
AndNode.new(
|
43
|
+
prism_node: node,
|
44
|
+
left: visit(node.left),
|
45
|
+
operator: node.operator,
|
46
|
+
right: visit(node.right),
|
47
|
+
)
|
48
|
+
end
|
49
|
+
|
50
|
+
visit Prism::ArgumentsNode do |node|
|
51
|
+
ArgumentsNode.new(
|
52
|
+
prism_node: node,
|
53
|
+
arguments: node.arguments&.map { |n| visit(n) },
|
54
|
+
)
|
55
|
+
end
|
56
|
+
|
57
|
+
visit Prism::ArrayNode do |node|
|
58
|
+
ArrayNode.new(
|
59
|
+
prism_node: node,
|
60
|
+
elements: node.elements&.map { |n| visit(n) },
|
61
|
+
)
|
62
|
+
end
|
63
|
+
|
64
|
+
visit Prism::ArrayPatternNode do |node|
|
65
|
+
ArrayPatternNode.new(
|
66
|
+
prism_node: node,
|
67
|
+
constant: visit(node.constant),
|
68
|
+
requireds: node.requireds&.map { |n| visit(n) },
|
69
|
+
rest: visit(node.rest),
|
70
|
+
posts: node.posts&.map { |n| visit(n) },
|
71
|
+
)
|
72
|
+
end
|
73
|
+
|
74
|
+
visit Prism::AssocNode do |node|
|
75
|
+
AssocNode.new(
|
76
|
+
prism_node: node,
|
77
|
+
key: visit(node.key),
|
78
|
+
value: visit(node.value),
|
79
|
+
)
|
80
|
+
end
|
81
|
+
|
82
|
+
visit Prism::AssocSplatNode do |node|
|
83
|
+
AssocSplatNode.new(
|
84
|
+
prism_node: node,
|
85
|
+
value: visit(node.value),
|
86
|
+
)
|
87
|
+
end
|
88
|
+
|
89
|
+
visit Prism::BackReferenceReadNode do |node|
|
90
|
+
BackReferenceReadNode.new(
|
91
|
+
prism_node: node,
|
92
|
+
name: node.name,
|
93
|
+
)
|
94
|
+
end
|
95
|
+
|
96
|
+
visit Prism::BeginNode do |node|
|
97
|
+
BeginNode.new(
|
98
|
+
prism_node: node,
|
99
|
+
statements: visit(node.statements),
|
100
|
+
rescue_clause: visit(node.rescue_clause),
|
101
|
+
else_clause: visit(node.else_clause),
|
102
|
+
ensure_clause: visit(node.ensure_clause),
|
103
|
+
)
|
104
|
+
end
|
105
|
+
|
106
|
+
visit Prism::BlockArgumentNode do |node|
|
107
|
+
BlockArgumentNode.new(
|
108
|
+
prism_node: node,
|
109
|
+
expression: visit(node.expression),
|
110
|
+
)
|
111
|
+
end
|
112
|
+
|
113
|
+
visit Prism::BlockLocalVariableNode do |node|
|
114
|
+
BlockLocalVariableNode.new(
|
115
|
+
prism_node: node,
|
116
|
+
name: node.name,
|
117
|
+
)
|
118
|
+
end
|
119
|
+
|
120
|
+
visit Prism::BlockNode do |node|
|
121
|
+
BlockNode.new(
|
122
|
+
prism_node: node,
|
123
|
+
parameters: visit(node.parameters),
|
124
|
+
body: visit(node.body),
|
125
|
+
)
|
126
|
+
end
|
127
|
+
|
128
|
+
visit Prism::BlockParameterNode do |node|
|
129
|
+
BlockParameterNode.new(
|
130
|
+
prism_node: node,
|
131
|
+
name: node.name,
|
132
|
+
)
|
133
|
+
end
|
134
|
+
|
135
|
+
visit Prism::BlockParametersNode do |node|
|
136
|
+
BlockParametersNode.new(
|
137
|
+
prism_node: node,
|
138
|
+
parameters: visit(node.parameters),
|
139
|
+
locals: node.locals&.map { |n| visit(n) },
|
140
|
+
)
|
141
|
+
end
|
142
|
+
|
143
|
+
visit Prism::BreakNode do |node|
|
144
|
+
BreakNode.new(
|
145
|
+
prism_node: node,
|
146
|
+
arguments: visit(node.arguments),
|
147
|
+
)
|
148
|
+
end
|
149
|
+
|
150
|
+
visit Prism::CallAndWriteNode do |node|
|
151
|
+
CallAndWriteNode.new(
|
152
|
+
prism_node: node,
|
153
|
+
receiver: visit(node.receiver),
|
154
|
+
read_name: node.read_name,
|
155
|
+
value: visit(node.value),
|
156
|
+
)
|
157
|
+
end
|
158
|
+
|
159
|
+
visit Prism::CallNode do |node|
|
160
|
+
CallNode.new(
|
161
|
+
prism_node: node,
|
162
|
+
receiver: visit(node.receiver),
|
163
|
+
name: node.name,
|
164
|
+
arguments: visit(node.arguments),
|
165
|
+
block: visit(node.block),
|
166
|
+
)
|
167
|
+
end
|
168
|
+
|
169
|
+
visit Prism::CallOperatorWriteNode do |node|
|
170
|
+
CallOperatorWriteNode.new(
|
171
|
+
prism_node: node,
|
172
|
+
receiver: visit(node.receiver),
|
173
|
+
read_name: node.read_name,
|
174
|
+
binary_operator: node.binary_operator,
|
175
|
+
value: visit(node.value),
|
176
|
+
)
|
177
|
+
end
|
178
|
+
|
179
|
+
visit Prism::CallOrWriteNode do |node|
|
180
|
+
CallOrWriteNode.new(
|
181
|
+
prism_node: node,
|
182
|
+
receiver: visit(node.receiver),
|
183
|
+
read_name: node.read_name,
|
184
|
+
value: visit(node.value),
|
185
|
+
)
|
186
|
+
end
|
187
|
+
|
188
|
+
visit Prism::CallTargetNode do |node|
|
189
|
+
CallTargetNode.new(
|
190
|
+
prism_node: node,
|
191
|
+
receiver: visit(node.receiver),
|
192
|
+
name: node.name,
|
193
|
+
)
|
194
|
+
end
|
195
|
+
|
196
|
+
visit Prism::CapturePatternNode do |node|
|
197
|
+
CapturePatternNode.new(
|
198
|
+
prism_node: node,
|
199
|
+
value: visit(node.value),
|
200
|
+
target: visit(node.target),
|
201
|
+
)
|
202
|
+
end
|
203
|
+
|
204
|
+
visit Prism::CaseMatchNode do |node|
|
205
|
+
CaseMatchNode.new(
|
206
|
+
prism_node: node,
|
207
|
+
predicate: visit(node.predicate),
|
208
|
+
conditions: node.conditions&.map { |n| visit(n) },
|
209
|
+
else_clause: visit(node.else_clause),
|
210
|
+
)
|
211
|
+
end
|
212
|
+
|
213
|
+
visit Prism::CaseNode do |node|
|
214
|
+
CaseNode.new(
|
215
|
+
prism_node: node,
|
216
|
+
predicate: visit(node.predicate),
|
217
|
+
conditions: node.conditions&.map { |n| visit(n) },
|
218
|
+
else_clause: visit(node.else_clause),
|
219
|
+
)
|
220
|
+
end
|
221
|
+
|
222
|
+
visit Prism::ClassNode do |node|
|
223
|
+
ClassNode.new(
|
224
|
+
prism_node: node,
|
225
|
+
constant_path: visit(node.constant_path),
|
226
|
+
superclass: visit(node.superclass),
|
227
|
+
body: visit(node.body),
|
228
|
+
)
|
229
|
+
end
|
230
|
+
|
231
|
+
visit Prism::ClassVariableAndWriteNode do |node|
|
232
|
+
ClassVariableAndWriteNode.new(
|
233
|
+
prism_node: node,
|
234
|
+
name: node.name,
|
235
|
+
value: visit(node.value),
|
236
|
+
)
|
237
|
+
end
|
238
|
+
|
239
|
+
visit Prism::ClassVariableOperatorWriteNode do |node|
|
240
|
+
ClassVariableOperatorWriteNode.new(
|
241
|
+
prism_node: node,
|
242
|
+
name: node.name,
|
243
|
+
value: visit(node.value),
|
244
|
+
binary_operator: node.binary_operator,
|
245
|
+
)
|
246
|
+
end
|
247
|
+
|
248
|
+
visit Prism::ClassVariableOrWriteNode do |node|
|
249
|
+
ClassVariableOrWriteNode.new(
|
250
|
+
prism_node: node,
|
251
|
+
name: node.name,
|
252
|
+
value: visit(node.value),
|
253
|
+
)
|
254
|
+
end
|
255
|
+
|
256
|
+
visit Prism::ClassVariableReadNode do |node|
|
257
|
+
ClassVariableReadNode.new(
|
258
|
+
prism_node: node,
|
259
|
+
name: node.name,
|
260
|
+
)
|
261
|
+
end
|
262
|
+
|
263
|
+
visit Prism::ClassVariableTargetNode do |node|
|
264
|
+
ClassVariableTargetNode.new(
|
265
|
+
prism_node: node,
|
266
|
+
name: node.name,
|
267
|
+
)
|
268
|
+
end
|
269
|
+
|
270
|
+
visit Prism::ClassVariableWriteNode do |node|
|
271
|
+
ClassVariableWriteNode.new(
|
272
|
+
prism_node: node,
|
273
|
+
name: node.name,
|
274
|
+
value: visit(node.value),
|
275
|
+
)
|
276
|
+
end
|
277
|
+
|
278
|
+
visit Prism::ConstantAndWriteNode do |node|
|
279
|
+
ConstantAndWriteNode.new(
|
280
|
+
prism_node: node,
|
281
|
+
name: node.name,
|
282
|
+
value: visit(node.value),
|
283
|
+
)
|
284
|
+
end
|
285
|
+
|
286
|
+
visit Prism::ConstantOperatorWriteNode do |node|
|
287
|
+
ConstantOperatorWriteNode.new(
|
288
|
+
prism_node: node,
|
289
|
+
name: node.name,
|
290
|
+
value: visit(node.value),
|
291
|
+
binary_operator: node.binary_operator,
|
292
|
+
)
|
293
|
+
end
|
294
|
+
|
295
|
+
visit Prism::ConstantOrWriteNode do |node|
|
296
|
+
ConstantOrWriteNode.new(
|
297
|
+
prism_node: node,
|
298
|
+
name: node.name,
|
299
|
+
value: visit(node.value),
|
300
|
+
)
|
301
|
+
end
|
302
|
+
|
303
|
+
visit Prism::ConstantPathAndWriteNode do |node|
|
304
|
+
ConstantPathAndWriteNode.new(
|
305
|
+
prism_node: node,
|
306
|
+
target: visit(node.target),
|
307
|
+
value: visit(node.value),
|
308
|
+
)
|
309
|
+
end
|
310
|
+
|
311
|
+
visit Prism::ConstantPathNode do |node|
|
312
|
+
ConstantPathNode.new(
|
313
|
+
prism_node: node,
|
314
|
+
parent: visit(node.parent),
|
315
|
+
name: node.name,
|
316
|
+
)
|
317
|
+
end
|
318
|
+
|
319
|
+
visit Prism::ConstantPathOperatorWriteNode do |node|
|
320
|
+
ConstantPathOperatorWriteNode.new(
|
321
|
+
prism_node: node,
|
322
|
+
target: visit(node.target),
|
323
|
+
value: visit(node.value),
|
324
|
+
binary_operator: node.binary_operator,
|
325
|
+
)
|
326
|
+
end
|
327
|
+
|
328
|
+
visit Prism::ConstantPathOrWriteNode do |node|
|
329
|
+
ConstantPathOrWriteNode.new(
|
330
|
+
prism_node: node,
|
331
|
+
target: visit(node.target),
|
332
|
+
value: visit(node.value),
|
333
|
+
)
|
334
|
+
end
|
335
|
+
|
336
|
+
visit Prism::ConstantPathTargetNode do |node|
|
337
|
+
ConstantPathTargetNode.new(
|
338
|
+
prism_node: node,
|
339
|
+
parent: visit(node.parent),
|
340
|
+
name: node.name,
|
341
|
+
)
|
342
|
+
end
|
343
|
+
|
344
|
+
visit Prism::ConstantPathWriteNode do |node|
|
345
|
+
ConstantPathWriteNode.new(
|
346
|
+
prism_node: node,
|
347
|
+
target: visit(node.target),
|
348
|
+
value: visit(node.value),
|
349
|
+
)
|
350
|
+
end
|
351
|
+
|
352
|
+
visit Prism::ConstantReadNode do |node|
|
353
|
+
ConstantReadNode.new(
|
354
|
+
prism_node: node,
|
355
|
+
name: node.name,
|
356
|
+
)
|
357
|
+
end
|
358
|
+
|
359
|
+
visit Prism::ConstantTargetNode do |node|
|
360
|
+
ConstantTargetNode.new(
|
361
|
+
prism_node: node,
|
362
|
+
name: node.name,
|
363
|
+
)
|
364
|
+
end
|
365
|
+
|
366
|
+
visit Prism::ConstantWriteNode do |node|
|
367
|
+
ConstantWriteNode.new(
|
368
|
+
prism_node: node,
|
369
|
+
name: node.name,
|
370
|
+
value: visit(node.value),
|
371
|
+
)
|
372
|
+
end
|
373
|
+
|
374
|
+
visit Prism::DefNode do |node|
|
375
|
+
DefNode.new(
|
376
|
+
prism_node: node,
|
377
|
+
name: node.name,
|
378
|
+
receiver: visit(node.receiver),
|
379
|
+
parameters: visit(node.parameters),
|
380
|
+
body: visit(node.body),
|
381
|
+
)
|
382
|
+
end
|
383
|
+
|
384
|
+
visit Prism::DefinedNode do |node|
|
385
|
+
DefinedNode.new(
|
386
|
+
prism_node: node,
|
387
|
+
value: visit(node.value),
|
388
|
+
)
|
389
|
+
end
|
390
|
+
|
391
|
+
visit Prism::ElseNode do |node|
|
392
|
+
ElseNode.new(
|
393
|
+
prism_node: node,
|
394
|
+
statements: visit(node.statements),
|
395
|
+
)
|
396
|
+
end
|
397
|
+
|
398
|
+
visit Prism::EmbeddedStatementsNode do |node|
|
399
|
+
EmbeddedStatementsNode.new(
|
400
|
+
prism_node: node,
|
401
|
+
statements: visit(node.statements),
|
402
|
+
)
|
403
|
+
end
|
404
|
+
|
405
|
+
visit Prism::EmbeddedVariableNode do |node|
|
406
|
+
EmbeddedVariableNode.new(
|
407
|
+
prism_node: node,
|
408
|
+
variable: visit(node.variable),
|
409
|
+
)
|
410
|
+
end
|
411
|
+
|
412
|
+
visit Prism::EnsureNode do |node|
|
413
|
+
EnsureNode.new(
|
414
|
+
prism_node: node,
|
415
|
+
statements: visit(node.statements),
|
416
|
+
)
|
417
|
+
end
|
418
|
+
|
419
|
+
visit Prism::FalseNode do |node|
|
420
|
+
FalseNode.new(
|
421
|
+
prism_node: node,
|
422
|
+
)
|
423
|
+
end
|
424
|
+
|
425
|
+
visit Prism::FindPatternNode do |node|
|
426
|
+
FindPatternNode.new(
|
427
|
+
prism_node: node,
|
428
|
+
constant: visit(node.constant),
|
429
|
+
left: visit(node.left),
|
430
|
+
requireds: node.requireds.map { |n| visit(n) },
|
431
|
+
right: visit(node.right),
|
432
|
+
)
|
433
|
+
end
|
434
|
+
|
435
|
+
visit Prism::FlipFlopNode do |node|
|
436
|
+
FlipFlopNode.new(
|
437
|
+
prism_node: node,
|
438
|
+
left: visit(node.left),
|
439
|
+
right: visit(node.right),
|
440
|
+
exclude_end: node.exclude_end?,
|
441
|
+
)
|
442
|
+
end
|
443
|
+
|
444
|
+
visit Prism::FloatNode do |node|
|
445
|
+
FloatNode.new(
|
446
|
+
prism_node: node,
|
447
|
+
value: node.slice,
|
448
|
+
)
|
449
|
+
end
|
450
|
+
|
451
|
+
visit Prism::ForNode do |node|
|
452
|
+
ForNode.new(
|
453
|
+
prism_node: node,
|
454
|
+
index: visit(node.index),
|
455
|
+
collection: visit(node.collection),
|
456
|
+
statements: visit(node.statements),
|
457
|
+
)
|
458
|
+
end
|
459
|
+
|
460
|
+
visit Prism::ForwardingArgumentsNode do |node|
|
461
|
+
ForwardingArgumentsNode.new(
|
462
|
+
prism_node: node,
|
463
|
+
)
|
464
|
+
end
|
465
|
+
|
466
|
+
visit Prism::ForwardingParameterNode do |node|
|
467
|
+
ForwardingParameterNode.new(
|
468
|
+
prism_node: node,
|
469
|
+
)
|
470
|
+
end
|
471
|
+
|
472
|
+
visit Prism::ForwardingSuperNode do |node|
|
473
|
+
ForwardingSuperNode.new(
|
474
|
+
prism_node: node,
|
475
|
+
block: visit(node.block),
|
476
|
+
)
|
477
|
+
end
|
478
|
+
|
479
|
+
visit Prism::GlobalVariableAndWriteNode do |node|
|
480
|
+
GlobalVariableAndWriteNode.new(
|
481
|
+
prism_node: node,
|
482
|
+
name: node.name,
|
483
|
+
value: visit(node.value),
|
484
|
+
)
|
485
|
+
end
|
486
|
+
|
487
|
+
visit Prism::GlobalVariableOperatorWriteNode do |node|
|
488
|
+
GlobalVariableOperatorWriteNode.new(
|
489
|
+
prism_node: node,
|
490
|
+
name: node.name,
|
491
|
+
value: visit(node.value),
|
492
|
+
binary_operator: node.binary_operator,
|
493
|
+
)
|
494
|
+
end
|
495
|
+
|
496
|
+
visit Prism::GlobalVariableOrWriteNode do |node|
|
497
|
+
GlobalVariableOrWriteNode.new(
|
498
|
+
prism_node: node,
|
499
|
+
name: node.name,
|
500
|
+
value: visit(node.value),
|
501
|
+
)
|
502
|
+
end
|
503
|
+
|
504
|
+
visit Prism::GlobalVariableReadNode do |node|
|
505
|
+
GlobalVariableReadNode.new(
|
506
|
+
prism_node: node,
|
507
|
+
name: node.name,
|
508
|
+
)
|
509
|
+
end
|
510
|
+
|
511
|
+
visit Prism::GlobalVariableTargetNode do |node|
|
512
|
+
GlobalVariableTargetNode.new(
|
513
|
+
prism_node: node,
|
514
|
+
name: node.name,
|
515
|
+
)
|
516
|
+
end
|
517
|
+
|
518
|
+
visit Prism::GlobalVariableWriteNode do |node|
|
519
|
+
GlobalVariableWriteNode.new(
|
520
|
+
prism_node: node,
|
521
|
+
name: node.name,
|
522
|
+
value: visit(node.value),
|
523
|
+
)
|
524
|
+
end
|
525
|
+
|
526
|
+
visit Prism::HashNode do |node|
|
527
|
+
HashNode.new(
|
528
|
+
prism_node: node,
|
529
|
+
elements: node.elements&.map { |n| visit(n) },
|
530
|
+
)
|
531
|
+
end
|
532
|
+
|
533
|
+
visit Prism::HashPatternNode do |node|
|
534
|
+
HashPatternNode.new(
|
535
|
+
prism_node: node,
|
536
|
+
elements: node.elements&.map { |n| visit(n) },
|
537
|
+
rest: visit(node.rest),
|
538
|
+
)
|
539
|
+
end
|
540
|
+
|
541
|
+
visit Prism::IfNode do |node|
|
542
|
+
IfNode.new(
|
543
|
+
prism_node: node,
|
544
|
+
predicate: visit(node.predicate),
|
545
|
+
statements: visit(node.statements),
|
546
|
+
subsequent: visit(node.subsequent),
|
547
|
+
inline: (node.predicate && node.statements && node.predicate.location.start_offset > node.statements.location.start_offset),
|
548
|
+
)
|
549
|
+
end
|
550
|
+
|
551
|
+
visit Prism::ImaginaryNode do |node|
|
552
|
+
ImaginaryNode.new(
|
553
|
+
prism_node: node,
|
554
|
+
numeric: visit(node.numeric),
|
555
|
+
)
|
556
|
+
end
|
557
|
+
|
558
|
+
visit Prism::ImplicitNode do |node|
|
559
|
+
ImplicitNode.new(
|
560
|
+
prism_node: node,
|
561
|
+
value: visit(node.value),
|
562
|
+
)
|
563
|
+
end
|
564
|
+
|
565
|
+
visit Prism::ImplicitRestNode do |node|
|
566
|
+
ImplicitRestNode.new(
|
567
|
+
prism_node: node,
|
568
|
+
)
|
569
|
+
end
|
570
|
+
|
571
|
+
visit Prism::InNode do |node|
|
572
|
+
InNode.new(
|
573
|
+
prism_node: node,
|
574
|
+
pattern: visit(node.pattern),
|
575
|
+
statements: visit(node.statements),
|
576
|
+
)
|
577
|
+
end
|
578
|
+
|
579
|
+
visit Prism::IndexAndWriteNode do |node|
|
580
|
+
IndexAndWriteNode.new(
|
581
|
+
prism_node: node,
|
582
|
+
receiver: visit(node.receiver),
|
583
|
+
arguments: visit(node.arguments),
|
584
|
+
block: visit(node.block),
|
585
|
+
value: visit(node.value),
|
586
|
+
)
|
587
|
+
end
|
588
|
+
|
589
|
+
visit Prism::IndexOperatorWriteNode do |node|
|
590
|
+
IndexOperatorWriteNode.new(
|
591
|
+
prism_node: node,
|
592
|
+
receiver: visit(node.receiver),
|
593
|
+
arguments: visit(node.arguments),
|
594
|
+
block: visit(node.block),
|
595
|
+
binary_operator: node.binary_operator,
|
596
|
+
value: visit(node.value),
|
597
|
+
)
|
598
|
+
end
|
599
|
+
|
600
|
+
visit Prism::IndexOrWriteNode do |node|
|
601
|
+
IndexOrWriteNode.new(
|
602
|
+
prism_node: node,
|
603
|
+
receiver: visit(node.receiver),
|
604
|
+
arguments: visit(node.arguments),
|
605
|
+
block: visit(node.block),
|
606
|
+
value: visit(node.value),
|
607
|
+
)
|
608
|
+
end
|
609
|
+
|
610
|
+
visit Prism::IndexTargetNode do |node|
|
611
|
+
IndexTargetNode.new(
|
612
|
+
prism_node: node,
|
613
|
+
receiver: visit(node.receiver),
|
614
|
+
arguments: visit(node.arguments),
|
615
|
+
block: visit(node.block),
|
616
|
+
)
|
617
|
+
end
|
618
|
+
|
619
|
+
visit Prism::InstanceVariableAndWriteNode do |node|
|
620
|
+
InstanceVariableAndWriteNode.new(
|
621
|
+
prism_node: node,
|
622
|
+
name: node.name,
|
623
|
+
value: visit(node.value),
|
624
|
+
)
|
625
|
+
end
|
626
|
+
|
627
|
+
visit Prism::InstanceVariableOperatorWriteNode do |node|
|
628
|
+
InstanceVariableOperatorWriteNode.new(
|
629
|
+
prism_node: node,
|
630
|
+
name: node.name,
|
631
|
+
value: visit(node.value),
|
632
|
+
binary_operator: node.binary_operator,
|
633
|
+
)
|
634
|
+
end
|
635
|
+
|
636
|
+
visit Prism::InstanceVariableOrWriteNode do |node|
|
637
|
+
InstanceVariableOrWriteNode.new(
|
638
|
+
prism_node: node,
|
639
|
+
name: node.name,
|
640
|
+
value: visit(node.value),
|
641
|
+
)
|
642
|
+
end
|
643
|
+
|
644
|
+
visit Prism::InstanceVariableReadNode do |node|
|
645
|
+
InstanceVariableReadNode.new(
|
646
|
+
prism_node: node,
|
647
|
+
name: node.name,
|
648
|
+
)
|
649
|
+
end
|
650
|
+
|
651
|
+
visit Prism::InstanceVariableTargetNode do |node|
|
652
|
+
InstanceVariableTargetNode.new(
|
653
|
+
prism_node: node,
|
654
|
+
name: node.name,
|
655
|
+
)
|
656
|
+
end
|
657
|
+
|
658
|
+
visit Prism::InstanceVariableWriteNode do |node|
|
659
|
+
InstanceVariableWriteNode.new(
|
660
|
+
prism_node: node,
|
661
|
+
name: node.name,
|
662
|
+
value: visit(node.value),
|
663
|
+
)
|
664
|
+
end
|
665
|
+
|
666
|
+
visit Prism::IntegerNode do |node|
|
667
|
+
IntegerNode.new(
|
668
|
+
prism_node: node,
|
669
|
+
value: node.value,
|
670
|
+
)
|
671
|
+
end
|
672
|
+
|
673
|
+
visit Prism::InterpolatedMatchLastLineNode do |node|
|
674
|
+
InterpolatedMatchLastLineNode.new(
|
675
|
+
prism_node: node,
|
676
|
+
parts: node.parts&.map { |n| visit(n) },
|
677
|
+
ignore_case: node.ignore_case?,
|
678
|
+
multi_line: node.multi_line?,
|
679
|
+
extended: node.extended?,
|
680
|
+
once: node.once?,
|
681
|
+
)
|
682
|
+
end
|
683
|
+
|
684
|
+
visit Prism::InterpolatedRegularExpressionNode do |node|
|
685
|
+
InterpolatedRegularExpressionNode.new(
|
686
|
+
prism_node: node,
|
687
|
+
parts: node.parts.map { |part| visit(part) },
|
688
|
+
ignore_case: node.ignore_case?,
|
689
|
+
multi_line: node.multi_line?,
|
690
|
+
extended: node.extended?,
|
691
|
+
once: node.once?,
|
692
|
+
)
|
693
|
+
end
|
694
|
+
|
695
|
+
visit Prism::InterpolatedStringNode do |node|
|
696
|
+
InterpolatedStringNode.new(
|
697
|
+
prism_node: node,
|
698
|
+
parts: node.parts&.map { |n| visit(n) },
|
699
|
+
)
|
700
|
+
end
|
701
|
+
|
702
|
+
visit Prism::InterpolatedSymbolNode do |node|
|
703
|
+
InterpolatedSymbolNode.new(
|
704
|
+
prism_node: node,
|
705
|
+
parts: node.parts.map { |part| visit(part) },
|
706
|
+
)
|
707
|
+
end
|
708
|
+
|
709
|
+
visit Prism::InterpolatedXStringNode do |node|
|
710
|
+
InterpolatedXStringNode.new(
|
711
|
+
prism_node: node,
|
712
|
+
parts: node.parts.map { |part| visit(part) },
|
713
|
+
)
|
714
|
+
end
|
715
|
+
|
716
|
+
visit Prism::ItLocalVariableReadNode do |node|
|
717
|
+
ItLocalVariableReadNode.new(
|
718
|
+
prism_node: node,
|
719
|
+
)
|
720
|
+
end
|
721
|
+
|
722
|
+
visit Prism::ItParametersNode do |node|
|
723
|
+
ItParametersNode.new(
|
724
|
+
prism_node: node,
|
725
|
+
)
|
726
|
+
end
|
727
|
+
|
728
|
+
visit Prism::KeywordHashNode do |node|
|
729
|
+
KeywordHashNode.new(
|
730
|
+
prism_node: node,
|
731
|
+
elements: node.elements&.map { |n| visit(n) },
|
732
|
+
)
|
733
|
+
end
|
734
|
+
|
735
|
+
visit Prism::KeywordRestParameterNode do |node|
|
736
|
+
KeywordRestParameterNode.new(
|
737
|
+
prism_node: node,
|
738
|
+
name: node.name,
|
739
|
+
)
|
740
|
+
end
|
741
|
+
|
742
|
+
visit Prism::LambdaNode do |node|
|
743
|
+
LambdaNode.new(
|
744
|
+
prism_node: node,
|
745
|
+
parameters: visit(node.parameters),
|
746
|
+
body: visit(node.body),
|
747
|
+
)
|
748
|
+
end
|
749
|
+
|
750
|
+
visit Prism::LocalVariableAndWriteNode do |node|
|
751
|
+
LocalVariableAndWriteNode.new(
|
752
|
+
prism_node: node,
|
753
|
+
name: node.name,
|
754
|
+
value: visit(node.value),
|
755
|
+
depth: node.depth,
|
756
|
+
)
|
757
|
+
end
|
758
|
+
|
759
|
+
visit Prism::LocalVariableOperatorWriteNode do |node|
|
760
|
+
LocalVariableOperatorWriteNode.new(
|
761
|
+
prism_node: node,
|
762
|
+
name: node.name,
|
763
|
+
value: visit(node.value),
|
764
|
+
binary_operator: node.binary_operator,
|
765
|
+
depth: node.depth,
|
766
|
+
)
|
767
|
+
end
|
768
|
+
|
769
|
+
visit Prism::LocalVariableOrWriteNode do |node|
|
770
|
+
LocalVariableOrWriteNode.new(
|
771
|
+
prism_node: node,
|
772
|
+
name: node.name,
|
773
|
+
value: visit(node.value),
|
774
|
+
depth: node.depth,
|
775
|
+
)
|
776
|
+
end
|
777
|
+
|
778
|
+
visit Prism::LocalVariableReadNode do |node|
|
779
|
+
LocalVariableReadNode.new(
|
780
|
+
prism_node: node,
|
781
|
+
name: node.name,
|
782
|
+
)
|
783
|
+
end
|
784
|
+
|
785
|
+
visit Prism::LocalVariableTargetNode do |node|
|
786
|
+
LocalVariableTargetNode.new(
|
787
|
+
prism_node: node,
|
788
|
+
name: node.name,
|
789
|
+
)
|
790
|
+
end
|
791
|
+
|
792
|
+
visit Prism::LocalVariableWriteNode do |node|
|
793
|
+
LocalVariableWriteNode.new(
|
794
|
+
prism_node: node,
|
795
|
+
name: node.name,
|
796
|
+
value: visit(node.value),
|
797
|
+
)
|
798
|
+
end
|
799
|
+
|
800
|
+
visit Prism::MatchLastLineNode do |node|
|
801
|
+
MatchLastLineNode.new(
|
802
|
+
prism_node: node,
|
803
|
+
unescaped: node.unescaped,
|
804
|
+
ignore_case: node.ignore_case?,
|
805
|
+
multi_line: node.multi_line?,
|
806
|
+
extended: node.extended?,
|
807
|
+
once: node.once?,
|
808
|
+
)
|
809
|
+
end
|
810
|
+
|
811
|
+
visit Prism::MatchPredicateNode do |node|
|
812
|
+
MatchPredicateNode.new(
|
813
|
+
prism_node: node,
|
814
|
+
value: visit(node.value),
|
815
|
+
pattern: visit(node.pattern),
|
816
|
+
)
|
817
|
+
end
|
818
|
+
|
819
|
+
visit Prism::MatchRequiredNode do |node|
|
820
|
+
MatchRequiredNode.new(
|
821
|
+
prism_node: node,
|
822
|
+
value: visit(node.value),
|
823
|
+
pattern: visit(node.pattern),
|
824
|
+
)
|
825
|
+
end
|
826
|
+
|
827
|
+
visit Prism::MatchWriteNode do |node|
|
828
|
+
MatchWriteNode.new(
|
829
|
+
prism_node: node,
|
830
|
+
call: visit(node.call),
|
831
|
+
targets: node.targets.map { |t| visit(t) },
|
832
|
+
)
|
833
|
+
end
|
834
|
+
|
835
|
+
visit Prism::MissingNode do |node|
|
836
|
+
MissingNode.new(
|
837
|
+
prism_node: node,
|
838
|
+
)
|
839
|
+
end
|
840
|
+
|
841
|
+
visit Prism::ModuleNode do |node|
|
842
|
+
ModuleNode.new(
|
843
|
+
prism_node: node,
|
844
|
+
constant_path: visit(node.constant_path),
|
845
|
+
body: visit(node.body),
|
846
|
+
)
|
847
|
+
end
|
848
|
+
|
849
|
+
visit Prism::MultiTargetNode do |node|
|
850
|
+
MultiTargetNode.new(
|
851
|
+
prism_node: node,
|
852
|
+
lefts: node.lefts.map { |n| visit(n) },
|
853
|
+
rest: visit(node.rest),
|
854
|
+
rights: node.rights.map { |n| visit(n) },
|
855
|
+
)
|
856
|
+
end
|
857
|
+
|
858
|
+
visit Prism::MultiWriteNode do |node|
|
859
|
+
MultiWriteNode.new(
|
860
|
+
prism_node: node,
|
861
|
+
lefts: node.lefts&.map { |n| visit(n) },
|
862
|
+
rest: visit(node.rest),
|
863
|
+
rights: node.rights&.map { |n| visit(n) },
|
864
|
+
value: visit(node.value),
|
865
|
+
)
|
866
|
+
end
|
867
|
+
|
868
|
+
visit Prism::NextNode do |node|
|
869
|
+
NextNode.new(
|
870
|
+
prism_node: node,
|
871
|
+
arguments: visit(node.arguments),
|
872
|
+
)
|
873
|
+
end
|
874
|
+
|
875
|
+
visit Prism::NilNode do |node|
|
876
|
+
NilNode.new(
|
877
|
+
prism_node: node,
|
878
|
+
)
|
879
|
+
end
|
880
|
+
|
881
|
+
visit Prism::NoKeywordsParameterNode do |node|
|
882
|
+
NoKeywordsParameterNode.new(
|
883
|
+
prism_node: node,
|
884
|
+
)
|
885
|
+
end
|
886
|
+
|
887
|
+
visit Prism::NumberedParametersNode do |node|
|
888
|
+
NumberedParametersNode.new(
|
889
|
+
prism_node: node,
|
890
|
+
)
|
891
|
+
end
|
892
|
+
|
893
|
+
visit Prism::NumberedReferenceReadNode do |node|
|
894
|
+
NumberedReferenceReadNode.new(
|
895
|
+
prism_node: node,
|
896
|
+
number: node.number,
|
897
|
+
)
|
898
|
+
end
|
899
|
+
|
900
|
+
visit Prism::OptionalKeywordParameterNode do |node|
|
901
|
+
OptionalKeywordParameterNode.new(
|
902
|
+
prism_node: node,
|
903
|
+
name: node.name,
|
904
|
+
value: visit(node.value),
|
905
|
+
)
|
906
|
+
end
|
907
|
+
|
908
|
+
visit Prism::OptionalParameterNode do |node|
|
909
|
+
OptionalParameterNode.new(
|
910
|
+
prism_node: node,
|
911
|
+
name: node.name,
|
912
|
+
value: visit(node.value),
|
913
|
+
)
|
914
|
+
end
|
915
|
+
|
916
|
+
visit Prism::OrNode do |node|
|
917
|
+
OrNode.new(
|
918
|
+
prism_node: node,
|
919
|
+
left: visit(node.left),
|
920
|
+
operator: node.operator,
|
921
|
+
right: visit(node.right),
|
922
|
+
)
|
923
|
+
end
|
924
|
+
|
925
|
+
visit Prism::ParametersNode do |node|
|
926
|
+
ParametersNode.new(
|
927
|
+
prism_node: node,
|
928
|
+
requireds: node.requireds&.map { |n| visit(n) },
|
929
|
+
optionals: node.optionals&.map { |n| visit(n) },
|
930
|
+
rest: visit(node.rest),
|
931
|
+
posts: node.posts&.map { |n| visit(n) },
|
932
|
+
keywords: node.keywords&.map { |n| visit(n) },
|
933
|
+
keyword_rest: visit(node.keyword_rest),
|
934
|
+
block: visit(node.block),
|
935
|
+
)
|
936
|
+
end
|
937
|
+
|
938
|
+
visit Prism::ParenthesesNode do |node|
|
939
|
+
ParenthesesNode.new(
|
940
|
+
prism_node: node,
|
941
|
+
body: visit(node.body),
|
942
|
+
)
|
943
|
+
end
|
944
|
+
|
945
|
+
visit Prism::PinnedExpressionNode do |node|
|
946
|
+
PinnedExpressionNode.new(
|
947
|
+
prism_node: node,
|
948
|
+
expression: visit(node.expression),
|
949
|
+
)
|
950
|
+
end
|
951
|
+
|
952
|
+
visit Prism::PinnedVariableNode do |node|
|
953
|
+
PinnedVariableNode.new(
|
954
|
+
prism_node: node,
|
955
|
+
variable: visit(node.variable),
|
956
|
+
)
|
957
|
+
end
|
958
|
+
|
959
|
+
visit Prism::PostExecutionNode do |node|
|
960
|
+
PostExecutionNode.new(
|
961
|
+
prism_node: node,
|
962
|
+
statements: visit(node.statements),
|
963
|
+
)
|
964
|
+
end
|
965
|
+
|
966
|
+
visit Prism::PreExecutionNode do |node|
|
967
|
+
PreExecutionNode.new(
|
968
|
+
prism_node: node,
|
969
|
+
statements: visit(node.statements),
|
970
|
+
)
|
971
|
+
end
|
972
|
+
|
973
|
+
visit Prism::ProgramNode do |node|
|
974
|
+
ProgramNode.new(
|
975
|
+
prism_node: node,
|
976
|
+
statements: visit(node.statements),
|
977
|
+
)
|
978
|
+
end
|
979
|
+
|
980
|
+
visit Prism::RangeNode do |node|
|
981
|
+
RangeNode.new(
|
982
|
+
prism_node: node,
|
983
|
+
left: visit(node.left),
|
984
|
+
right: visit(node.right),
|
985
|
+
exclude_end: node.exclude_end?,
|
986
|
+
)
|
987
|
+
end
|
988
|
+
|
989
|
+
visit Prism::RationalNode do |node|
|
990
|
+
RationalNode.new(
|
991
|
+
prism_node: node,
|
992
|
+
numerator: node.numerator,
|
993
|
+
denominator: node.denominator,
|
994
|
+
)
|
995
|
+
end
|
996
|
+
|
997
|
+
visit Prism::RedoNode do |node|
|
998
|
+
RedoNode.new(
|
999
|
+
prism_node: node,
|
1000
|
+
)
|
1001
|
+
end
|
1002
|
+
|
1003
|
+
visit Prism::RegularExpressionNode do |node|
|
1004
|
+
RegularExpressionNode.new(
|
1005
|
+
prism_node: node,
|
1006
|
+
unescaped: node.unescaped,
|
1007
|
+
ignore_case: node.ignore_case?,
|
1008
|
+
multi_line: node.multi_line?,
|
1009
|
+
extended: node.extended?,
|
1010
|
+
once: node.once?,
|
1011
|
+
)
|
1012
|
+
end
|
1013
|
+
|
1014
|
+
visit Prism::RequiredKeywordParameterNode do |node|
|
1015
|
+
RequiredKeywordParameterNode.new(
|
1016
|
+
prism_node: node,
|
1017
|
+
name: node.name,
|
1018
|
+
)
|
1019
|
+
end
|
1020
|
+
|
1021
|
+
visit Prism::RequiredParameterNode do |node|
|
1022
|
+
RequiredParameterNode.new(
|
1023
|
+
prism_node: node,
|
1024
|
+
name: node.name,
|
1025
|
+
)
|
1026
|
+
end
|
1027
|
+
|
1028
|
+
visit Prism::RescueModifierNode do |node|
|
1029
|
+
RescueModifierNode.new(
|
1030
|
+
prism_node: node,
|
1031
|
+
expression: visit(node.expression),
|
1032
|
+
rescue_expression: visit(node.rescue_expression),
|
1033
|
+
)
|
1034
|
+
end
|
1035
|
+
|
1036
|
+
visit Prism::RescueNode do |node|
|
1037
|
+
RescueNode.new(
|
1038
|
+
prism_node: node,
|
1039
|
+
exceptions: node.exceptions&.map { |n| visit(n) },
|
1040
|
+
reference: visit(node.reference),
|
1041
|
+
statements: visit(node.statements),
|
1042
|
+
subsequent: visit(node.subsequent),
|
1043
|
+
)
|
1044
|
+
end
|
1045
|
+
|
1046
|
+
visit Prism::RestParameterNode do |node|
|
1047
|
+
RestParameterNode.new(
|
1048
|
+
prism_node: node,
|
1049
|
+
name: node.name,
|
1050
|
+
)
|
1051
|
+
end
|
1052
|
+
|
1053
|
+
visit Prism::RetryNode do |node|
|
1054
|
+
RetryNode.new(
|
1055
|
+
prism_node: node,
|
1056
|
+
)
|
1057
|
+
end
|
1058
|
+
|
1059
|
+
visit Prism::ReturnNode do |node|
|
1060
|
+
ReturnNode.new(
|
1061
|
+
prism_node: node,
|
1062
|
+
arguments: visit(node.arguments),
|
1063
|
+
)
|
1064
|
+
end
|
1065
|
+
|
1066
|
+
visit Prism::SelfNode do |node|
|
1067
|
+
SelfNode.new(
|
1068
|
+
prism_node: node,
|
1069
|
+
)
|
1070
|
+
end
|
1071
|
+
|
1072
|
+
visit Prism::ShareableConstantNode do |node|
|
1073
|
+
ShareableConstantNode.new(
|
1074
|
+
prism_node: node,
|
1075
|
+
write: visit(node.write),
|
1076
|
+
)
|
1077
|
+
end
|
1078
|
+
|
1079
|
+
visit Prism::SingletonClassNode do |node|
|
1080
|
+
SingletonClassNode.new(
|
1081
|
+
prism_node: node,
|
1082
|
+
expression: visit(node.expression),
|
1083
|
+
body: visit(node.body),
|
1084
|
+
)
|
1085
|
+
end
|
1086
|
+
|
1087
|
+
visit Prism::SourceEncodingNode do |node|
|
1088
|
+
SourceEncodingNode.new(
|
1089
|
+
prism_node: node,
|
1090
|
+
)
|
1091
|
+
end
|
1092
|
+
|
1093
|
+
visit Prism::SourceFileNode do |node|
|
1094
|
+
SourceFileNode.new(
|
1095
|
+
prism_node: node,
|
1096
|
+
)
|
1097
|
+
end
|
1098
|
+
|
1099
|
+
visit Prism::SourceLineNode do |node|
|
1100
|
+
SourceLineNode.new(
|
1101
|
+
prism_node: node,
|
1102
|
+
)
|
1103
|
+
end
|
1104
|
+
|
1105
|
+
visit Prism::SplatNode do |node|
|
1106
|
+
SplatNode.new(
|
1107
|
+
prism_node: node,
|
1108
|
+
expression: visit(node.expression),
|
1109
|
+
)
|
1110
|
+
end
|
1111
|
+
|
1112
|
+
visit Prism::StatementsNode do |node|
|
1113
|
+
StatementsNode.new(
|
1114
|
+
prism_node: node,
|
1115
|
+
body: node.body&.map { |n| visit(n) },
|
1116
|
+
)
|
1117
|
+
end
|
1118
|
+
|
1119
|
+
visit Prism::StringNode do |node|
|
1120
|
+
StringNode.new(
|
1121
|
+
prism_node: node,
|
1122
|
+
unescaped: node.unescaped,
|
1123
|
+
)
|
1124
|
+
end
|
1125
|
+
|
1126
|
+
visit Prism::SuperNode do |node|
|
1127
|
+
SuperNode.new(
|
1128
|
+
prism_node: node,
|
1129
|
+
arguments: visit(node.arguments),
|
1130
|
+
block: visit(node.block),
|
1131
|
+
)
|
1132
|
+
end
|
1133
|
+
|
1134
|
+
visit Prism::SymbolNode do |node|
|
1135
|
+
SymbolNode.new(
|
1136
|
+
prism_node: node,
|
1137
|
+
unescaped: node.unescaped,
|
1138
|
+
)
|
1139
|
+
end
|
1140
|
+
|
1141
|
+
visit Prism::TrueNode do |node|
|
1142
|
+
TrueNode.new(
|
1143
|
+
prism_node: node,
|
1144
|
+
)
|
1145
|
+
end
|
1146
|
+
|
1147
|
+
visit Prism::UndefNode do |node|
|
1148
|
+
UndefNode.new(
|
1149
|
+
prism_node: node,
|
1150
|
+
names: node.names.map { |n| visit(n) },
|
1151
|
+
)
|
1152
|
+
end
|
1153
|
+
|
1154
|
+
visit Prism::UnlessNode do |node|
|
1155
|
+
UnlessNode.new(
|
1156
|
+
prism_node: node,
|
1157
|
+
predicate: visit(node.predicate),
|
1158
|
+
statements: visit(node.statements),
|
1159
|
+
else_clause: visit(node.else_clause),
|
1160
|
+
inline: (node.predicate && node.statements && node.predicate.location.start_offset > node.statements.location.start_offset),
|
1161
|
+
)
|
1162
|
+
end
|
1163
|
+
|
1164
|
+
visit Prism::UntilNode do |node|
|
1165
|
+
UntilNode.new(
|
1166
|
+
prism_node: node,
|
1167
|
+
predicate: visit(node.predicate),
|
1168
|
+
statements: visit(node.statements),
|
1169
|
+
inline: (node.predicate && node.statements && node.predicate.location.start_offset > node.statements.location.start_offset),
|
1170
|
+
)
|
1171
|
+
end
|
1172
|
+
|
1173
|
+
visit Prism::WhenNode do |node|
|
1174
|
+
WhenNode.new(
|
1175
|
+
prism_node: node,
|
1176
|
+
conditions: node.conditions&.map { |n| visit(n) },
|
1177
|
+
statements: visit(node.statements),
|
1178
|
+
)
|
1179
|
+
end
|
1180
|
+
|
1181
|
+
visit Prism::WhileNode do |node|
|
1182
|
+
WhileNode.new(
|
1183
|
+
prism_node: node,
|
1184
|
+
predicate: visit(node.predicate),
|
1185
|
+
statements: visit(node.statements),
|
1186
|
+
inline: (node.predicate && node.statements && node.predicate.location.start_offset > node.statements.location.start_offset),
|
1187
|
+
)
|
1188
|
+
end
|
1189
|
+
|
1190
|
+
visit Prism::XStringNode do |node|
|
1191
|
+
XStringNode.new(
|
1192
|
+
prism_node: node,
|
1193
|
+
unescaped: node.unescaped,
|
1194
|
+
)
|
1195
|
+
end
|
1196
|
+
|
1197
|
+
visit Prism::YieldNode do |node|
|
1198
|
+
YieldNode.new(
|
1199
|
+
prism_node: node,
|
1200
|
+
arguments: visit(node.arguments),
|
1201
|
+
)
|
1202
|
+
end
|
1203
|
+
end
|
1204
|
+
end
|