yarp 0.11.0 → 0.12.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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",