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