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