yarp 0.11.0 → 0.12.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.
@@ -21,7 +21,7 @@ end
21
21
  module YARP
22
22
  module Serialize
23
23
  MAJOR_VERSION = 0
24
- MINOR_VERSION = 11
24
+ MINOR_VERSION = 12
25
25
  PATCH_VERSION = 0
26
26
 
27
27
  def self.load(input, serialized)
@@ -201,277 +201,287 @@ module YARP
201
201
 
202
202
  case type
203
203
  when 1 then
204
- AliasNode.new(load_node, load_node, load_location, location)
204
+ AliasGlobalVariableNode.new(load_node, load_node, load_location, location)
205
205
  when 2 then
206
- AlternationPatternNode.new(load_node, load_node, load_location, location)
206
+ AliasMethodNode.new(load_node, load_node, load_location, location)
207
207
  when 3 then
208
- AndNode.new(load_node, load_node, load_location, location)
208
+ AlternationPatternNode.new(load_node, load_node, load_location, location)
209
209
  when 4 then
210
- ArgumentsNode.new(Array.new(load_varint) { load_node }, location)
210
+ AndNode.new(load_node, load_node, load_location, location)
211
211
  when 5 then
212
- ArrayNode.new(Array.new(load_varint) { load_node }, load_optional_location, load_optional_location, location)
212
+ ArgumentsNode.new(Array.new(load_varint) { load_node }, location)
213
213
  when 6 then
214
- ArrayPatternNode.new(load_optional_node, Array.new(load_varint) { load_node }, load_optional_node, Array.new(load_varint) { load_node }, load_optional_location, load_optional_location, location)
214
+ ArrayNode.new(Array.new(load_varint) { load_node }, load_optional_location, load_optional_location, location)
215
215
  when 7 then
216
- AssocNode.new(load_node, load_optional_node, load_optional_location, location)
216
+ ArrayPatternNode.new(load_optional_node, Array.new(load_varint) { load_node }, load_optional_node, Array.new(load_varint) { load_node }, load_optional_location, load_optional_location, location)
217
217
  when 8 then
218
- AssocSplatNode.new(load_optional_node, load_location, location)
218
+ AssocNode.new(load_node, load_optional_node, load_optional_location, location)
219
219
  when 9 then
220
- BackReferenceReadNode.new(location)
220
+ AssocSplatNode.new(load_optional_node, load_location, location)
221
221
  when 10 then
222
- BeginNode.new(load_optional_location, load_optional_node, load_optional_node, load_optional_node, load_optional_node, load_optional_location, location)
222
+ BackReferenceReadNode.new(location)
223
223
  when 11 then
224
- BlockArgumentNode.new(load_optional_node, load_location, location)
224
+ BeginNode.new(load_optional_location, load_optional_node, load_optional_node, load_optional_node, load_optional_node, load_optional_location, location)
225
225
  when 12 then
226
- BlockLocalVariableNode.new(load_required_constant, location)
226
+ BlockArgumentNode.new(load_optional_node, load_location, location)
227
227
  when 13 then
228
- BlockNode.new(Array.new(load_varint) { load_required_constant }, load_optional_node, load_optional_node, load_location, load_location, location)
228
+ BlockLocalVariableNode.new(load_required_constant, location)
229
229
  when 14 then
230
- BlockParameterNode.new(load_optional_constant, load_optional_location, load_location, location)
230
+ BlockNode.new(Array.new(load_varint) { load_required_constant }, load_optional_node, load_optional_node, load_location, load_location, location)
231
231
  when 15 then
232
- BlockParametersNode.new(load_optional_node, Array.new(load_varint) { load_node }, load_optional_location, load_optional_location, location)
232
+ BlockParameterNode.new(load_optional_constant, load_optional_location, load_location, location)
233
233
  when 16 then
234
- BreakNode.new(load_optional_node, load_location, location)
234
+ BlockParametersNode.new(load_optional_node, Array.new(load_varint) { load_node }, load_optional_location, load_optional_location, location)
235
235
  when 17 then
236
- CallAndWriteNode.new(load_optional_node, load_optional_location, load_optional_location, load_optional_location, load_optional_node, load_optional_location, load_varint, load_string, load_string, load_location, load_node, location)
236
+ BreakNode.new(load_optional_node, load_location, location)
237
237
  when 18 then
238
- CallNode.new(load_optional_node, load_optional_location, load_optional_location, load_optional_location, load_optional_node, load_optional_location, load_optional_node, load_varint, load_string, location)
238
+ CallAndWriteNode.new(load_optional_node, load_optional_location, load_optional_location, load_optional_location, load_optional_node, load_optional_location, load_varint, load_string, load_string, load_location, load_node, location)
239
239
  when 19 then
240
- CallOperatorWriteNode.new(load_optional_node, load_optional_location, load_optional_location, load_optional_location, load_optional_node, load_optional_location, load_varint, load_string, load_string, load_required_constant, load_location, load_node, location)
240
+ CallNode.new(load_optional_node, load_optional_location, load_optional_location, load_optional_location, load_optional_node, load_optional_location, load_optional_node, load_varint, load_string, location)
241
241
  when 20 then
242
- CallOrWriteNode.new(load_optional_node, load_optional_location, load_optional_location, load_optional_location, load_optional_node, load_optional_location, load_varint, load_string, load_string, load_location, load_node, location)
242
+ CallOperatorWriteNode.new(load_optional_node, load_optional_location, load_optional_location, load_optional_location, load_optional_node, load_optional_location, load_varint, load_string, load_string, load_required_constant, load_location, load_node, location)
243
243
  when 21 then
244
- CapturePatternNode.new(load_node, load_node, load_location, location)
244
+ CallOrWriteNode.new(load_optional_node, load_optional_location, load_optional_location, load_optional_location, load_optional_node, load_optional_location, load_varint, load_string, load_string, load_location, load_node, location)
245
245
  when 22 then
246
- CaseNode.new(load_optional_node, Array.new(load_varint) { load_node }, load_optional_node, load_location, load_location, location)
246
+ CapturePatternNode.new(load_node, load_node, load_location, location)
247
247
  when 23 then
248
- ClassNode.new(Array.new(load_varint) { load_required_constant }, load_location, load_node, load_optional_location, load_optional_node, load_optional_node, load_location, load_required_constant, location)
248
+ CaseNode.new(load_optional_node, Array.new(load_varint) { load_node }, load_optional_node, load_location, load_location, location)
249
249
  when 24 then
250
- ClassVariableAndWriteNode.new(load_required_constant, load_location, load_location, load_node, location)
250
+ ClassNode.new(Array.new(load_varint) { load_required_constant }, load_location, load_node, load_optional_location, load_optional_node, load_optional_node, load_location, load_required_constant, location)
251
251
  when 25 then
252
- ClassVariableOperatorWriteNode.new(load_required_constant, load_location, load_location, load_node, load_required_constant, location)
252
+ ClassVariableAndWriteNode.new(load_required_constant, load_location, load_location, load_node, location)
253
253
  when 26 then
254
- ClassVariableOrWriteNode.new(load_required_constant, load_location, load_location, load_node, location)
254
+ ClassVariableOperatorWriteNode.new(load_required_constant, load_location, load_location, load_node, load_required_constant, location)
255
255
  when 27 then
256
- ClassVariableReadNode.new(load_required_constant, location)
256
+ ClassVariableOrWriteNode.new(load_required_constant, load_location, load_location, load_node, location)
257
257
  when 28 then
258
- ClassVariableTargetNode.new(load_required_constant, location)
258
+ ClassVariableReadNode.new(load_required_constant, location)
259
259
  when 29 then
260
- ClassVariableWriteNode.new(load_required_constant, load_location, load_node, load_optional_location, location)
260
+ ClassVariableTargetNode.new(load_required_constant, location)
261
261
  when 30 then
262
- ConstantAndWriteNode.new(load_required_constant, load_location, load_location, load_node, location)
262
+ ClassVariableWriteNode.new(load_required_constant, load_location, load_node, load_optional_location, location)
263
263
  when 31 then
264
- ConstantOperatorWriteNode.new(load_required_constant, load_location, load_location, load_node, load_required_constant, location)
264
+ ConstantAndWriteNode.new(load_required_constant, load_location, load_location, load_node, location)
265
265
  when 32 then
266
- ConstantOrWriteNode.new(load_required_constant, load_location, load_location, load_node, location)
266
+ ConstantOperatorWriteNode.new(load_required_constant, load_location, load_location, load_node, load_required_constant, location)
267
267
  when 33 then
268
- ConstantPathAndWriteNode.new(load_node, load_location, load_node, location)
268
+ ConstantOrWriteNode.new(load_required_constant, load_location, load_location, load_node, location)
269
269
  when 34 then
270
- ConstantPathNode.new(load_optional_node, load_node, load_location, location)
270
+ ConstantPathAndWriteNode.new(load_node, load_location, load_node, location)
271
271
  when 35 then
272
- ConstantPathOperatorWriteNode.new(load_node, load_location, load_node, load_required_constant, location)
272
+ ConstantPathNode.new(load_optional_node, load_node, load_location, location)
273
273
  when 36 then
274
- ConstantPathOrWriteNode.new(load_node, load_location, load_node, location)
274
+ ConstantPathOperatorWriteNode.new(load_node, load_location, load_node, load_required_constant, location)
275
275
  when 37 then
276
- ConstantPathTargetNode.new(load_optional_node, load_node, load_location, location)
276
+ ConstantPathOrWriteNode.new(load_node, load_location, load_node, location)
277
277
  when 38 then
278
- ConstantPathWriteNode.new(load_node, load_location, load_node, location)
278
+ ConstantPathTargetNode.new(load_optional_node, load_node, load_location, location)
279
279
  when 39 then
280
- ConstantReadNode.new(load_required_constant, location)
280
+ ConstantPathWriteNode.new(load_node, load_location, load_node, location)
281
281
  when 40 then
282
- ConstantTargetNode.new(load_required_constant, location)
282
+ ConstantReadNode.new(load_required_constant, location)
283
283
  when 41 then
284
- ConstantWriteNode.new(load_required_constant, load_location, load_node, load_location, location)
284
+ ConstantTargetNode.new(load_required_constant, location)
285
285
  when 42 then
286
+ ConstantWriteNode.new(load_required_constant, load_location, load_node, load_location, location)
287
+ when 43 then
286
288
  load_serialized_length
287
289
  DefNode.new(load_required_constant, load_location, load_optional_node, load_optional_node, load_optional_node, Array.new(load_varint) { load_required_constant }, load_location, load_optional_location, load_optional_location, load_optional_location, load_optional_location, load_optional_location, location)
288
- when 43 then
289
- DefinedNode.new(load_optional_location, load_node, load_optional_location, load_location, location)
290
290
  when 44 then
291
- ElseNode.new(load_location, load_optional_node, load_optional_location, location)
291
+ DefinedNode.new(load_optional_location, load_node, load_optional_location, load_location, location)
292
292
  when 45 then
293
- EmbeddedStatementsNode.new(load_location, load_optional_node, load_location, location)
293
+ ElseNode.new(load_location, load_optional_node, load_optional_location, location)
294
294
  when 46 then
295
- EmbeddedVariableNode.new(load_location, load_node, location)
295
+ EmbeddedStatementsNode.new(load_location, load_optional_node, load_location, location)
296
296
  when 47 then
297
- EnsureNode.new(load_location, load_optional_node, load_location, location)
297
+ EmbeddedVariableNode.new(load_location, load_node, location)
298
298
  when 48 then
299
- FalseNode.new(location)
299
+ EnsureNode.new(load_location, load_optional_node, load_location, location)
300
300
  when 49 then
301
- FindPatternNode.new(load_optional_node, load_node, Array.new(load_varint) { load_node }, load_node, load_optional_location, load_optional_location, location)
301
+ FalseNode.new(location)
302
302
  when 50 then
303
- FlipFlopNode.new(load_optional_node, load_optional_node, load_location, load_varint, location)
303
+ FindPatternNode.new(load_optional_node, load_node, Array.new(load_varint) { load_node }, load_node, load_optional_location, load_optional_location, location)
304
304
  when 51 then
305
- FloatNode.new(location)
305
+ FlipFlopNode.new(load_optional_node, load_optional_node, load_location, load_varint, location)
306
306
  when 52 then
307
- ForNode.new(load_node, load_node, load_optional_node, load_location, load_location, load_optional_location, load_location, location)
307
+ FloatNode.new(location)
308
308
  when 53 then
309
- ForwardingArgumentsNode.new(location)
309
+ ForNode.new(load_node, load_node, load_optional_node, load_location, load_location, load_optional_location, load_location, location)
310
310
  when 54 then
311
- ForwardingParameterNode.new(location)
311
+ ForwardingArgumentsNode.new(location)
312
312
  when 55 then
313
- ForwardingSuperNode.new(load_optional_node, location)
313
+ ForwardingParameterNode.new(location)
314
314
  when 56 then
315
- GlobalVariableAndWriteNode.new(load_required_constant, load_location, load_location, load_node, location)
315
+ ForwardingSuperNode.new(load_optional_node, location)
316
316
  when 57 then
317
- GlobalVariableOperatorWriteNode.new(load_required_constant, load_location, load_location, load_node, load_required_constant, location)
317
+ GlobalVariableAndWriteNode.new(load_required_constant, load_location, load_location, load_node, location)
318
318
  when 58 then
319
- GlobalVariableOrWriteNode.new(load_required_constant, load_location, load_location, load_node, location)
319
+ GlobalVariableOperatorWriteNode.new(load_required_constant, load_location, load_location, load_node, load_required_constant, location)
320
320
  when 59 then
321
- GlobalVariableReadNode.new(load_required_constant, location)
321
+ GlobalVariableOrWriteNode.new(load_required_constant, load_location, load_location, load_node, location)
322
322
  when 60 then
323
- GlobalVariableTargetNode.new(load_required_constant, location)
323
+ GlobalVariableReadNode.new(load_required_constant, location)
324
324
  when 61 then
325
- GlobalVariableWriteNode.new(load_required_constant, load_location, load_node, load_location, location)
325
+ GlobalVariableTargetNode.new(load_required_constant, location)
326
326
  when 62 then
327
- HashNode.new(load_location, Array.new(load_varint) { load_node }, load_location, location)
327
+ GlobalVariableWriteNode.new(load_required_constant, load_location, load_node, load_location, location)
328
328
  when 63 then
329
- HashPatternNode.new(load_optional_node, Array.new(load_varint) { load_node }, load_optional_node, load_optional_location, load_optional_location, location)
329
+ HashNode.new(load_location, Array.new(load_varint) { load_node }, load_location, location)
330
330
  when 64 then
331
- IfNode.new(load_optional_location, load_node, load_optional_node, load_optional_node, load_optional_location, location)
331
+ HashPatternNode.new(load_optional_node, Array.new(load_varint) { load_node }, load_optional_node, load_optional_location, load_optional_location, location)
332
332
  when 65 then
333
- ImaginaryNode.new(load_node, location)
333
+ IfNode.new(load_optional_location, load_node, load_optional_node, load_optional_node, load_optional_location, location)
334
334
  when 66 then
335
- InNode.new(load_node, load_optional_node, load_location, load_optional_location, location)
335
+ ImaginaryNode.new(load_node, location)
336
336
  when 67 then
337
- InstanceVariableAndWriteNode.new(load_required_constant, load_location, load_location, load_node, location)
337
+ ImplicitNode.new(load_node, location)
338
338
  when 68 then
339
- InstanceVariableOperatorWriteNode.new(load_required_constant, load_location, load_location, load_node, load_required_constant, location)
339
+ InNode.new(load_node, load_optional_node, load_location, load_optional_location, location)
340
340
  when 69 then
341
- InstanceVariableOrWriteNode.new(load_required_constant, load_location, load_location, load_node, location)
341
+ InstanceVariableAndWriteNode.new(load_required_constant, load_location, load_location, load_node, location)
342
342
  when 70 then
343
- InstanceVariableReadNode.new(load_required_constant, location)
343
+ InstanceVariableOperatorWriteNode.new(load_required_constant, load_location, load_location, load_node, load_required_constant, location)
344
344
  when 71 then
345
- InstanceVariableTargetNode.new(load_required_constant, location)
345
+ InstanceVariableOrWriteNode.new(load_required_constant, load_location, load_location, load_node, location)
346
346
  when 72 then
347
- InstanceVariableWriteNode.new(load_required_constant, load_location, load_node, load_location, location)
347
+ InstanceVariableReadNode.new(load_required_constant, location)
348
348
  when 73 then
349
- IntegerNode.new(location)
349
+ InstanceVariableTargetNode.new(load_required_constant, location)
350
350
  when 74 then
351
- InterpolatedRegularExpressionNode.new(load_location, Array.new(load_varint) { load_node }, load_location, load_varint, location)
351
+ InstanceVariableWriteNode.new(load_required_constant, load_location, load_node, load_location, location)
352
352
  when 75 then
353
- InterpolatedStringNode.new(load_optional_location, Array.new(load_varint) { load_node }, load_optional_location, location)
353
+ IntegerNode.new(load_varint, location)
354
354
  when 76 then
355
- InterpolatedSymbolNode.new(load_optional_location, Array.new(load_varint) { load_node }, load_optional_location, location)
355
+ InterpolatedMatchLastLineNode.new(load_location, Array.new(load_varint) { load_node }, load_location, load_varint, location)
356
356
  when 77 then
357
- InterpolatedXStringNode.new(load_location, Array.new(load_varint) { load_node }, load_location, location)
357
+ InterpolatedRegularExpressionNode.new(load_location, Array.new(load_varint) { load_node }, load_location, load_varint, location)
358
358
  when 78 then
359
- KeywordHashNode.new(Array.new(load_varint) { load_node }, location)
359
+ InterpolatedStringNode.new(load_optional_location, Array.new(load_varint) { load_node }, load_optional_location, location)
360
360
  when 79 then
361
- KeywordParameterNode.new(load_required_constant, load_location, load_optional_node, location)
361
+ InterpolatedSymbolNode.new(load_optional_location, Array.new(load_varint) { load_node }, load_optional_location, location)
362
362
  when 80 then
363
- KeywordRestParameterNode.new(load_optional_constant, load_optional_location, load_location, location)
363
+ InterpolatedXStringNode.new(load_location, Array.new(load_varint) { load_node }, load_location, location)
364
364
  when 81 then
365
- LambdaNode.new(Array.new(load_varint) { load_required_constant }, load_location, load_location, load_location, load_optional_node, load_optional_node, location)
365
+ KeywordHashNode.new(Array.new(load_varint) { load_node }, location)
366
366
  when 82 then
367
- LocalVariableAndWriteNode.new(load_location, load_location, load_node, load_required_constant, load_varint, location)
367
+ KeywordParameterNode.new(load_required_constant, load_location, load_optional_node, location)
368
368
  when 83 then
369
- LocalVariableOperatorWriteNode.new(load_location, load_location, load_node, load_required_constant, load_required_constant, load_varint, location)
369
+ KeywordRestParameterNode.new(load_optional_constant, load_optional_location, load_location, location)
370
370
  when 84 then
371
- LocalVariableOrWriteNode.new(load_location, load_location, load_node, load_required_constant, load_varint, location)
371
+ LambdaNode.new(Array.new(load_varint) { load_required_constant }, load_location, load_location, load_location, load_optional_node, load_optional_node, location)
372
372
  when 85 then
373
- LocalVariableReadNode.new(load_required_constant, load_varint, location)
373
+ LocalVariableAndWriteNode.new(load_location, load_location, load_node, load_required_constant, load_varint, location)
374
374
  when 86 then
375
- LocalVariableTargetNode.new(load_required_constant, load_varint, location)
375
+ LocalVariableOperatorWriteNode.new(load_location, load_location, load_node, load_required_constant, load_required_constant, load_varint, location)
376
376
  when 87 then
377
- LocalVariableWriteNode.new(load_required_constant, load_varint, load_location, load_node, load_location, location)
377
+ LocalVariableOrWriteNode.new(load_location, load_location, load_node, load_required_constant, load_varint, location)
378
378
  when 88 then
379
- MatchPredicateNode.new(load_node, load_node, load_location, location)
379
+ LocalVariableReadNode.new(load_required_constant, load_varint, location)
380
380
  when 89 then
381
- MatchRequiredNode.new(load_node, load_node, load_location, location)
381
+ LocalVariableTargetNode.new(load_required_constant, load_varint, location)
382
382
  when 90 then
383
- MissingNode.new(location)
383
+ LocalVariableWriteNode.new(load_required_constant, load_varint, load_location, load_node, load_location, location)
384
384
  when 91 then
385
- ModuleNode.new(Array.new(load_varint) { load_required_constant }, load_location, load_node, load_optional_node, load_location, load_required_constant, location)
385
+ MatchLastLineNode.new(load_location, load_location, load_location, load_string, load_varint, location)
386
386
  when 92 then
387
- MultiTargetNode.new(Array.new(load_varint) { load_node }, load_optional_location, load_optional_location, location)
387
+ MatchPredicateNode.new(load_node, load_node, load_location, location)
388
388
  when 93 then
389
- MultiWriteNode.new(Array.new(load_varint) { load_node }, load_optional_location, load_optional_location, load_location, load_node, location)
389
+ MatchRequiredNode.new(load_node, load_node, load_location, location)
390
390
  when 94 then
391
- NextNode.new(load_optional_node, load_location, location)
391
+ MatchWriteNode.new(load_node, Array.new(load_varint) { load_required_constant }, location)
392
392
  when 95 then
393
- NilNode.new(location)
393
+ MissingNode.new(location)
394
394
  when 96 then
395
- NoKeywordsParameterNode.new(load_location, load_location, location)
395
+ ModuleNode.new(Array.new(load_varint) { load_required_constant }, load_location, load_node, load_optional_node, load_location, load_required_constant, location)
396
396
  when 97 then
397
- NumberedReferenceReadNode.new(load_varint, location)
397
+ MultiTargetNode.new(Array.new(load_varint) { load_node }, load_optional_location, load_optional_location, location)
398
398
  when 98 then
399
- OptionalParameterNode.new(load_required_constant, load_location, load_location, load_node, location)
399
+ MultiWriteNode.new(Array.new(load_varint) { load_node }, load_optional_location, load_optional_location, load_location, load_node, location)
400
400
  when 99 then
401
- OrNode.new(load_node, load_node, load_location, location)
401
+ NextNode.new(load_optional_node, load_location, location)
402
402
  when 100 then
403
- ParametersNode.new(Array.new(load_varint) { load_node }, Array.new(load_varint) { load_node }, Array.new(load_varint) { load_node }, load_optional_node, Array.new(load_varint) { load_node }, load_optional_node, load_optional_node, location)
403
+ NilNode.new(location)
404
404
  when 101 then
405
- ParenthesesNode.new(load_optional_node, load_location, load_location, location)
405
+ NoKeywordsParameterNode.new(load_location, load_location, location)
406
406
  when 102 then
407
- PinnedExpressionNode.new(load_node, load_location, load_location, load_location, location)
407
+ NumberedReferenceReadNode.new(load_varint, location)
408
408
  when 103 then
409
- PinnedVariableNode.new(load_node, load_location, location)
409
+ OptionalParameterNode.new(load_required_constant, load_location, load_location, load_node, location)
410
410
  when 104 then
411
- PostExecutionNode.new(load_optional_node, load_location, load_location, load_location, location)
411
+ OrNode.new(load_node, load_node, load_location, location)
412
412
  when 105 then
413
- PreExecutionNode.new(load_optional_node, load_location, load_location, load_location, location)
413
+ ParametersNode.new(Array.new(load_varint) { load_node }, Array.new(load_varint) { load_node }, load_optional_node, Array.new(load_varint) { load_node }, Array.new(load_varint) { load_node }, load_optional_node, load_optional_node, location)
414
414
  when 106 then
415
- ProgramNode.new(Array.new(load_varint) { load_required_constant }, load_node, location)
415
+ ParenthesesNode.new(load_optional_node, load_location, load_location, location)
416
416
  when 107 then
417
- RangeNode.new(load_optional_node, load_optional_node, load_location, load_varint, location)
417
+ PinnedExpressionNode.new(load_node, load_location, load_location, load_location, location)
418
418
  when 108 then
419
- RationalNode.new(load_node, location)
419
+ PinnedVariableNode.new(load_node, load_location, location)
420
420
  when 109 then
421
- RedoNode.new(location)
421
+ PostExecutionNode.new(load_optional_node, load_location, load_location, load_location, location)
422
422
  when 110 then
423
- RegularExpressionNode.new(load_location, load_location, load_location, load_string, load_varint, location)
423
+ PreExecutionNode.new(load_optional_node, load_location, load_location, load_location, location)
424
424
  when 111 then
425
- RequiredDestructuredParameterNode.new(Array.new(load_varint) { load_node }, load_location, load_location, location)
425
+ ProgramNode.new(Array.new(load_varint) { load_required_constant }, load_node, location)
426
426
  when 112 then
427
- RequiredParameterNode.new(load_required_constant, location)
427
+ RangeNode.new(load_optional_node, load_optional_node, load_location, load_varint, location)
428
428
  when 113 then
429
- RescueModifierNode.new(load_node, load_location, load_node, location)
429
+ RationalNode.new(load_node, location)
430
430
  when 114 then
431
- RescueNode.new(load_location, Array.new(load_varint) { load_node }, load_optional_location, load_optional_node, load_optional_node, load_optional_node, location)
431
+ RedoNode.new(location)
432
432
  when 115 then
433
- RestParameterNode.new(load_optional_constant, load_optional_location, load_location, location)
433
+ RegularExpressionNode.new(load_location, load_location, load_location, load_string, load_varint, location)
434
434
  when 116 then
435
- RetryNode.new(location)
435
+ RequiredDestructuredParameterNode.new(Array.new(load_varint) { load_node }, load_location, load_location, location)
436
436
  when 117 then
437
- ReturnNode.new(load_location, load_optional_node, location)
437
+ RequiredParameterNode.new(load_required_constant, location)
438
438
  when 118 then
439
- SelfNode.new(location)
439
+ RescueModifierNode.new(load_node, load_location, load_node, location)
440
440
  when 119 then
441
- SingletonClassNode.new(Array.new(load_varint) { load_required_constant }, load_location, load_location, load_node, load_optional_node, load_location, location)
441
+ RescueNode.new(load_location, Array.new(load_varint) { load_node }, load_optional_location, load_optional_node, load_optional_node, load_optional_node, location)
442
442
  when 120 then
443
- SourceEncodingNode.new(location)
443
+ RestParameterNode.new(load_optional_constant, load_optional_location, load_location, location)
444
444
  when 121 then
445
- SourceFileNode.new(load_string, location)
445
+ RetryNode.new(location)
446
446
  when 122 then
447
- SourceLineNode.new(location)
447
+ ReturnNode.new(load_location, load_optional_node, location)
448
448
  when 123 then
449
- SplatNode.new(load_location, load_optional_node, location)
449
+ SelfNode.new(location)
450
450
  when 124 then
451
- StatementsNode.new(Array.new(load_varint) { load_node }, location)
451
+ SingletonClassNode.new(Array.new(load_varint) { load_required_constant }, load_location, load_location, load_node, load_optional_node, load_location, location)
452
452
  when 125 then
453
- StringConcatNode.new(load_node, load_node, location)
453
+ SourceEncodingNode.new(location)
454
454
  when 126 then
455
- StringNode.new(load_optional_location, load_location, load_optional_location, load_string, location)
455
+ SourceFileNode.new(load_string, location)
456
456
  when 127 then
457
- SuperNode.new(load_location, load_optional_location, load_optional_node, load_optional_location, load_optional_node, location)
457
+ SourceLineNode.new(location)
458
458
  when 128 then
459
- SymbolNode.new(load_optional_location, load_optional_location, load_optional_location, load_string, location)
459
+ SplatNode.new(load_location, load_optional_node, location)
460
460
  when 129 then
461
- TrueNode.new(location)
461
+ StatementsNode.new(Array.new(load_varint) { load_node }, location)
462
462
  when 130 then
463
- UndefNode.new(Array.new(load_varint) { load_node }, load_location, location)
463
+ StringConcatNode.new(load_node, load_node, location)
464
464
  when 131 then
465
- UnlessNode.new(load_location, load_node, load_optional_node, load_optional_node, load_optional_location, location)
465
+ StringNode.new(load_varint, load_optional_location, load_location, load_optional_location, load_string, location)
466
466
  when 132 then
467
- UntilNode.new(load_location, load_optional_location, load_node, load_optional_node, load_varint, location)
467
+ SuperNode.new(load_location, load_optional_location, load_optional_node, load_optional_location, load_optional_node, location)
468
468
  when 133 then
469
- WhenNode.new(load_location, Array.new(load_varint) { load_node }, load_optional_node, location)
469
+ SymbolNode.new(load_optional_location, load_optional_location, load_optional_location, load_string, location)
470
470
  when 134 then
471
- WhileNode.new(load_location, load_optional_location, load_node, load_optional_node, load_varint, location)
471
+ TrueNode.new(location)
472
472
  when 135 then
473
- XStringNode.new(load_location, load_location, load_location, load_string, location)
473
+ UndefNode.new(Array.new(load_varint) { load_node }, load_location, location)
474
474
  when 136 then
475
+ UnlessNode.new(load_location, load_node, load_optional_node, load_optional_node, load_optional_location, location)
476
+ when 137 then
477
+ UntilNode.new(load_location, load_optional_location, load_node, load_optional_node, load_varint, location)
478
+ when 138 then
479
+ WhenNode.new(load_location, Array.new(load_varint) { load_node }, load_optional_node, location)
480
+ when 139 then
481
+ WhileNode.new(load_location, load_optional_location, load_node, load_optional_node, load_varint, location)
482
+ when 140 then
483
+ XStringNode.new(load_location, load_location, load_location, load_string, location)
484
+ when 141 then
475
485
  YieldNode.new(load_location, load_optional_location, load_optional_node, load_optional_location, location)
476
486
  end
477
487
  end
data/lib/yarp.rb CHANGED
@@ -307,20 +307,7 @@ module YARP
307
307
  end
308
308
 
309
309
  def pretty_print(q)
310
- q.group do
311
- q.text(self.class.name.split("::").last)
312
- location.pretty_print(q)
313
- q.text("[Li:#{location.start_line}]") if newline?
314
- q.text("(")
315
- q.nest(2) do
316
- deconstructed = deconstruct_keys([])
317
- deconstructed.delete(:location)
318
- q.breakable("")
319
- q.seplist(deconstructed, lambda { q.comma_breakable }, :each_value) { |value| q.pp(value) }
320
- end
321
- q.breakable("")
322
- q.text(")")
323
- end
310
+ q.text(inspect.chomp)
324
311
  end
325
312
  end
326
313
 
@@ -389,30 +376,6 @@ module YARP
389
376
  end
390
377
  end
391
378
 
392
- class FloatNode < Node
393
- def value
394
- Float(slice)
395
- end
396
- end
397
-
398
- class ImaginaryNode < Node
399
- def value
400
- Complex(0, numeric.value)
401
- end
402
- end
403
-
404
- class IntegerNode < Node
405
- def value
406
- Integer(slice)
407
- end
408
- end
409
-
410
- class RationalNode < Node
411
- def value
412
- Rational(slice.chomp("r"))
413
- end
414
- end
415
-
416
379
  # Load the serialized AST using the source as a reference into a tree.
417
380
  def self.load(source, serialized)
418
381
  Serialize.load(source, serialized)
@@ -477,10 +440,6 @@ module YARP
477
440
  # arguments. We get rid of that here.
478
441
  names = names.grep_v(Integer)
479
442
 
480
- # TODO: We don't support numbered local variables yet, so we get rid
481
- # of those here.
482
- names = names.grep_v(/^_\d$/)
483
-
484
443
  # For some reason, CRuby occasionally pushes this special local
485
444
  # variable when there are splat arguments. We get rid of that here.
486
445
  names = names.grep_v(:"#arg_rest")
@@ -599,3 +558,59 @@ if RUBY_ENGINE == "ruby" and !ENV["YARP_FFI_BACKEND"]
599
558
  else
600
559
  require_relative "yarp/ffi"
601
560
  end
561
+
562
+ # Reopening the YARP module after yarp/node is required so that constant
563
+ # reflection APIs will find the constants defined in the node file before these.
564
+ # This block is meant to contain extra APIs we define on YARP nodes that aren't
565
+ # templated and are meant as convenience methods.
566
+ module YARP
567
+ class FloatNode < Node
568
+ # Returns the value of the node as a Ruby Float.
569
+ def value
570
+ Float(slice)
571
+ end
572
+ end
573
+
574
+ class ImaginaryNode < Node
575
+ # Returns the value of the node as a Ruby Complex.
576
+ def value
577
+ Complex(0, numeric.value)
578
+ end
579
+ end
580
+
581
+ class IntegerNode < Node
582
+ # Returns the value of the node as a Ruby Integer.
583
+ def value
584
+ Integer(slice)
585
+ end
586
+ end
587
+
588
+ class InterpolatedRegularExpressionNode < Node
589
+ # Returns a numeric value that represents the flags that were used to create
590
+ # the regular expression.
591
+ def options
592
+ o = flags & 0b111
593
+ o |= Regexp::FIXEDENCODING if flags.anybits?(RegularExpressionFlags::EUC_JP | RegularExpressionFlags::WINDOWS_31J | RegularExpressionFlags::UTF_8)
594
+ o |= Regexp::NOENCODING if flags.anybits?(RegularExpressionFlags::ASCII_8BIT)
595
+ o
596
+ end
597
+ end
598
+
599
+ class RationalNode < Node
600
+ # Returns the value of the node as a Ruby Rational.
601
+ def value
602
+ Rational(slice.chomp("r"))
603
+ end
604
+ end
605
+
606
+ class RegularExpressionNode < Node
607
+ # Returns a numeric value that represents the flags that were used to create
608
+ # the regular expression.
609
+ def options
610
+ o = flags & 0b111
611
+ o |= Regexp::FIXEDENCODING if flags.anybits?(RegularExpressionFlags::EUC_JP | RegularExpressionFlags::WINDOWS_31J | RegularExpressionFlags::UTF_8)
612
+ o |= Regexp::NOENCODING if flags.anybits?(RegularExpressionFlags::ASCII_8BIT)
613
+ o
614
+ end
615
+ end
616
+ end
data/src/diagnostic.c CHANGED
@@ -67,6 +67,7 @@ static const char* const diagnostic_messages[YP_DIAGNOSTIC_ID_LEN] = {
67
67
  [YP_ERR_ARGUMENT_SPLAT_AFTER_ASSOC_SPLAT] = "Unexpected `*` splat argument after a `**` keyword splat argument",
68
68
  [YP_ERR_ARGUMENT_SPLAT_AFTER_SPLAT] = "Unexpected `*` splat argument after a `*` splat argument",
69
69
  [YP_ERR_ARGUMENT_TERM_PAREN] = "Expected a `)` to close the arguments",
70
+ [YP_ERR_ARGUMENT_UNEXPECTED_BLOCK] = "Unexpected `{` after a method call without parenthesis",
70
71
  [YP_ERR_ARRAY_ELEMENT] = "Expected an element for the array",
71
72
  [YP_ERR_ARRAY_EXPRESSION] = "Expected an expression for the array element",
72
73
  [YP_ERR_ARRAY_EXPRESSION_AFTER_STAR] = "Expected an expression after `*` in the array",
@@ -84,7 +85,7 @@ static const char* const diagnostic_messages[YP_DIAGNOSTIC_ID_LEN] = {
84
85
  [YP_ERR_CANNOT_PARSE_STRING_PART] = "Cannot parse the string part",
85
86
  [YP_ERR_CASE_EXPRESSION_AFTER_CASE] = "Expected an expression after `case`",
86
87
  [YP_ERR_CASE_EXPRESSION_AFTER_WHEN] = "Expected an expression after `when`",
87
- [YP_ERR_CASE_LONELY_ELSE] = "Unexpected `else` in `case` statement; a `when` clause must precede `else`",
88
+ [YP_ERR_CASE_MISSING_CONDITIONS] = "Expected a `when` or `in` clause after `case`",
88
89
  [YP_ERR_CASE_TERM] = "Expected an `end` to close the `case` statement",
89
90
  [YP_ERR_CLASS_IN_METHOD] = "Unexpected class definition in a method body",
90
91
  [YP_ERR_CLASS_NAME] = "Expected a constant name after `class`",
@@ -163,6 +164,7 @@ static const char* const diagnostic_messages[YP_DIAGNOSTIC_ID_LEN] = {
163
164
  [YP_ERR_INVALID_NUMBER_DECIMAL] = "Invalid decimal number",
164
165
  [YP_ERR_INVALID_NUMBER_HEXADECIMAL] = "Invalid hexadecimal number",
165
166
  [YP_ERR_INVALID_NUMBER_OCTAL] = "Invalid octal number",
167
+ [YP_ERR_INVALID_NUMBER_UNDERSCORE] = "Invalid underscore placement in number",
166
168
  [YP_ERR_INVALID_PERCENT] = "Invalid `%` token", // TODO WHAT?
167
169
  [YP_ERR_INVALID_TOKEN] = "Invalid token", // TODO WHAT?
168
170
  [YP_ERR_INVALID_VARIABLE_GLOBAL] = "Invalid global variable",
@@ -184,7 +186,10 @@ static const char* const diagnostic_messages[YP_DIAGNOSTIC_ID_LEN] = {
184
186
  [YP_ERR_MULTI_ASSIGN_MULTI_SPLATS] = "Multiple splats in multiple assignment",
185
187
  [YP_ERR_NOT_EXPRESSION] = "Expected an expression after `not`",
186
188
  [YP_ERR_NUMBER_LITERAL_UNDERSCORE] = "Number literal ending with a `_`",
189
+ [YP_ERR_NUMBERED_PARAMETER_NOT_ALLOWED] = "Numbered parameters are not allowed alongside explicit parameters",
190
+ [YP_ERR_NUMBERED_PARAMETER_OUTER_SCOPE] = "Numbered parameter is already used in outer scope",
187
191
  [YP_ERR_OPERATOR_MULTI_ASSIGN] = "Unexpected operator for a multiple assignment",
192
+ [YP_ERR_OPERATOR_WRITE_BLOCK] = "Unexpected operator after a call with a block",
188
193
  [YP_ERR_PARAMETER_ASSOC_SPLAT_MULTI] = "Unexpected multiple `**` splat parameters",
189
194
  [YP_ERR_PARAMETER_BLOCK_MULTI] = "Multiple block parameters; only one block is allowed",
190
195
  [YP_ERR_PARAMETER_NAME_REPEAT] = "Repeated parameter name",