prism 0.30.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +31 -1
  3. data/README.md +3 -1
  4. data/config.yml +185 -126
  5. data/docs/serialization.md +3 -0
  6. data/ext/prism/api_node.c +2843 -2085
  7. data/ext/prism/extconf.rb +1 -1
  8. data/ext/prism/extension.c +35 -25
  9. data/ext/prism/extension.h +2 -2
  10. data/include/prism/ast.h +1048 -69
  11. data/include/prism/defines.h +9 -0
  12. data/include/prism/diagnostic.h +11 -3
  13. data/include/prism/options.h +55 -1
  14. data/include/prism/parser.h +27 -3
  15. data/include/prism/regexp.h +2 -1
  16. data/include/prism/util/pm_integer.h +6 -6
  17. data/include/prism/util/pm_newline_list.h +11 -0
  18. data/include/prism/util/pm_string.h +1 -0
  19. data/include/prism/version.h +3 -3
  20. data/lib/prism/desugar_compiler.rb +111 -74
  21. data/lib/prism/dispatcher.rb +2 -1
  22. data/lib/prism/dot_visitor.rb +21 -31
  23. data/lib/prism/dsl.rb +656 -471
  24. data/lib/prism/ffi.rb +3 -0
  25. data/lib/prism/inspect_visitor.rb +285 -57
  26. data/lib/prism/mutation_compiler.rb +5 -5
  27. data/lib/prism/node.rb +2282 -4754
  28. data/lib/prism/node_ext.rb +72 -11
  29. data/lib/prism/parse_result/errors.rb +65 -0
  30. data/lib/prism/parse_result/newlines.rb +28 -28
  31. data/lib/prism/parse_result.rb +25 -2
  32. data/lib/prism/reflection.rb +7 -7
  33. data/lib/prism/serialize.rb +468 -610
  34. data/lib/prism/translation/parser/compiler.rb +18 -18
  35. data/lib/prism/translation/parser/lexer.rb +1 -1
  36. data/lib/prism/translation/parser.rb +3 -3
  37. data/lib/prism/translation/ripper.rb +14 -14
  38. data/lib/prism/translation/ruby_parser.rb +43 -7
  39. data/prism.gemspec +3 -1
  40. data/rbi/prism/dsl.rbi +521 -0
  41. data/rbi/prism/node.rbi +1456 -5616
  42. data/rbi/prism.rbi +16 -16
  43. data/sig/prism/dsl.rbs +189 -305
  44. data/sig/prism/node.rbs +702 -603
  45. data/sig/prism/parse_result.rbs +2 -0
  46. data/src/diagnostic.c +22 -6
  47. data/src/node.c +277 -284
  48. data/src/options.c +18 -0
  49. data/src/prettyprint.c +99 -108
  50. data/src/prism.c +1282 -760
  51. data/src/regexp.c +72 -4
  52. data/src/serialize.c +165 -50
  53. data/src/token_type.c +2 -2
  54. data/src/util/pm_integer.c +14 -14
  55. data/src/util/pm_newline_list.c +29 -0
  56. data/src/util/pm_string.c +9 -5
  57. metadata +4 -2
data/src/node.c CHANGED
@@ -1,12 +1,12 @@
1
- /******************************************************************************/
1
+ /*----------------------------------------------------------------------------*/
2
2
  /* This file is generated by the templates/template.rb script and should not */
3
3
  /* be modified manually. See */
4
4
  /* templates/src/node.c.erb */
5
5
  /* if you are looking to modify the */
6
6
  /* template */
7
- /******************************************************************************/
7
+ /*----------------------------------------------------------------------------*/
8
8
 
9
- #line 2 "node.c.erb"
9
+ #line 2 "prism/templates/src/node.c.erb"
10
10
  #include "prism/node.h"
11
11
 
12
12
  /**
@@ -113,47 +113,47 @@ pm_node_list_destroy(pm_parser_t *parser, pm_node_list_t *list) {
113
113
  PRISM_EXPORTED_FUNCTION void
114
114
  pm_node_destroy(pm_parser_t *parser, pm_node_t *node) {
115
115
  switch (PM_NODE_TYPE(node)) {
116
- #line 110 "node.c.erb"
116
+ #line 110 "prism/templates/src/node.c.erb"
117
117
  case PM_ALIAS_GLOBAL_VARIABLE_NODE: {
118
118
  pm_alias_global_variable_node_t *cast = (pm_alias_global_variable_node_t *) node;
119
119
  pm_node_destroy(parser, (pm_node_t *)cast->new_name);
120
120
  pm_node_destroy(parser, (pm_node_t *)cast->old_name);
121
121
  break;
122
122
  }
123
- #line 110 "node.c.erb"
123
+ #line 110 "prism/templates/src/node.c.erb"
124
124
  case PM_ALIAS_METHOD_NODE: {
125
125
  pm_alias_method_node_t *cast = (pm_alias_method_node_t *) node;
126
126
  pm_node_destroy(parser, (pm_node_t *)cast->new_name);
127
127
  pm_node_destroy(parser, (pm_node_t *)cast->old_name);
128
128
  break;
129
129
  }
130
- #line 110 "node.c.erb"
130
+ #line 110 "prism/templates/src/node.c.erb"
131
131
  case PM_ALTERNATION_PATTERN_NODE: {
132
132
  pm_alternation_pattern_node_t *cast = (pm_alternation_pattern_node_t *) node;
133
133
  pm_node_destroy(parser, (pm_node_t *)cast->left);
134
134
  pm_node_destroy(parser, (pm_node_t *)cast->right);
135
135
  break;
136
136
  }
137
- #line 110 "node.c.erb"
137
+ #line 110 "prism/templates/src/node.c.erb"
138
138
  case PM_AND_NODE: {
139
139
  pm_and_node_t *cast = (pm_and_node_t *) node;
140
140
  pm_node_destroy(parser, (pm_node_t *)cast->left);
141
141
  pm_node_destroy(parser, (pm_node_t *)cast->right);
142
142
  break;
143
143
  }
144
- #line 110 "node.c.erb"
144
+ #line 110 "prism/templates/src/node.c.erb"
145
145
  case PM_ARGUMENTS_NODE: {
146
146
  pm_arguments_node_t *cast = (pm_arguments_node_t *) node;
147
147
  pm_node_list_destroy(parser, &cast->arguments);
148
148
  break;
149
149
  }
150
- #line 110 "node.c.erb"
150
+ #line 110 "prism/templates/src/node.c.erb"
151
151
  case PM_ARRAY_NODE: {
152
152
  pm_array_node_t *cast = (pm_array_node_t *) node;
153
153
  pm_node_list_destroy(parser, &cast->elements);
154
154
  break;
155
155
  }
156
- #line 110 "node.c.erb"
156
+ #line 110 "prism/templates/src/node.c.erb"
157
157
  case PM_ARRAY_PATTERN_NODE: {
158
158
  pm_array_pattern_node_t *cast = (pm_array_pattern_node_t *) node;
159
159
  if (cast->constant != NULL) {
@@ -166,14 +166,14 @@ pm_node_destroy(pm_parser_t *parser, pm_node_t *node) {
166
166
  pm_node_list_destroy(parser, &cast->posts);
167
167
  break;
168
168
  }
169
- #line 110 "node.c.erb"
169
+ #line 110 "prism/templates/src/node.c.erb"
170
170
  case PM_ASSOC_NODE: {
171
171
  pm_assoc_node_t *cast = (pm_assoc_node_t *) node;
172
172
  pm_node_destroy(parser, (pm_node_t *)cast->key);
173
173
  pm_node_destroy(parser, (pm_node_t *)cast->value);
174
174
  break;
175
175
  }
176
- #line 110 "node.c.erb"
176
+ #line 110 "prism/templates/src/node.c.erb"
177
177
  case PM_ASSOC_SPLAT_NODE: {
178
178
  pm_assoc_splat_node_t *cast = (pm_assoc_splat_node_t *) node;
179
179
  if (cast->value != NULL) {
@@ -181,11 +181,11 @@ pm_node_destroy(pm_parser_t *parser, pm_node_t *node) {
181
181
  }
182
182
  break;
183
183
  }
184
- #line 110 "node.c.erb"
184
+ #line 110 "prism/templates/src/node.c.erb"
185
185
  case PM_BACK_REFERENCE_READ_NODE: {
186
186
  break;
187
187
  }
188
- #line 110 "node.c.erb"
188
+ #line 110 "prism/templates/src/node.c.erb"
189
189
  case PM_BEGIN_NODE: {
190
190
  pm_begin_node_t *cast = (pm_begin_node_t *) node;
191
191
  if (cast->statements != NULL) {
@@ -202,7 +202,7 @@ pm_node_destroy(pm_parser_t *parser, pm_node_t *node) {
202
202
  }
203
203
  break;
204
204
  }
205
- #line 110 "node.c.erb"
205
+ #line 110 "prism/templates/src/node.c.erb"
206
206
  case PM_BLOCK_ARGUMENT_NODE: {
207
207
  pm_block_argument_node_t *cast = (pm_block_argument_node_t *) node;
208
208
  if (cast->expression != NULL) {
@@ -210,11 +210,11 @@ pm_node_destroy(pm_parser_t *parser, pm_node_t *node) {
210
210
  }
211
211
  break;
212
212
  }
213
- #line 110 "node.c.erb"
213
+ #line 110 "prism/templates/src/node.c.erb"
214
214
  case PM_BLOCK_LOCAL_VARIABLE_NODE: {
215
215
  break;
216
216
  }
217
- #line 110 "node.c.erb"
217
+ #line 110 "prism/templates/src/node.c.erb"
218
218
  case PM_BLOCK_NODE: {
219
219
  pm_block_node_t *cast = (pm_block_node_t *) node;
220
220
  pm_constant_id_list_free(&cast->locals);
@@ -226,11 +226,11 @@ pm_node_destroy(pm_parser_t *parser, pm_node_t *node) {
226
226
  }
227
227
  break;
228
228
  }
229
- #line 110 "node.c.erb"
229
+ #line 110 "prism/templates/src/node.c.erb"
230
230
  case PM_BLOCK_PARAMETER_NODE: {
231
231
  break;
232
232
  }
233
- #line 110 "node.c.erb"
233
+ #line 110 "prism/templates/src/node.c.erb"
234
234
  case PM_BLOCK_PARAMETERS_NODE: {
235
235
  pm_block_parameters_node_t *cast = (pm_block_parameters_node_t *) node;
236
236
  if (cast->parameters != NULL) {
@@ -239,7 +239,7 @@ pm_node_destroy(pm_parser_t *parser, pm_node_t *node) {
239
239
  pm_node_list_destroy(parser, &cast->locals);
240
240
  break;
241
241
  }
242
- #line 110 "node.c.erb"
242
+ #line 110 "prism/templates/src/node.c.erb"
243
243
  case PM_BREAK_NODE: {
244
244
  pm_break_node_t *cast = (pm_break_node_t *) node;
245
245
  if (cast->arguments != NULL) {
@@ -247,7 +247,7 @@ pm_node_destroy(pm_parser_t *parser, pm_node_t *node) {
247
247
  }
248
248
  break;
249
249
  }
250
- #line 110 "node.c.erb"
250
+ #line 110 "prism/templates/src/node.c.erb"
251
251
  case PM_CALL_AND_WRITE_NODE: {
252
252
  pm_call_and_write_node_t *cast = (pm_call_and_write_node_t *) node;
253
253
  if (cast->receiver != NULL) {
@@ -256,7 +256,7 @@ pm_node_destroy(pm_parser_t *parser, pm_node_t *node) {
256
256
  pm_node_destroy(parser, (pm_node_t *)cast->value);
257
257
  break;
258
258
  }
259
- #line 110 "node.c.erb"
259
+ #line 110 "prism/templates/src/node.c.erb"
260
260
  case PM_CALL_NODE: {
261
261
  pm_call_node_t *cast = (pm_call_node_t *) node;
262
262
  if (cast->receiver != NULL) {
@@ -270,7 +270,7 @@ pm_node_destroy(pm_parser_t *parser, pm_node_t *node) {
270
270
  }
271
271
  break;
272
272
  }
273
- #line 110 "node.c.erb"
273
+ #line 110 "prism/templates/src/node.c.erb"
274
274
  case PM_CALL_OPERATOR_WRITE_NODE: {
275
275
  pm_call_operator_write_node_t *cast = (pm_call_operator_write_node_t *) node;
276
276
  if (cast->receiver != NULL) {
@@ -279,7 +279,7 @@ pm_node_destroy(pm_parser_t *parser, pm_node_t *node) {
279
279
  pm_node_destroy(parser, (pm_node_t *)cast->value);
280
280
  break;
281
281
  }
282
- #line 110 "node.c.erb"
282
+ #line 110 "prism/templates/src/node.c.erb"
283
283
  case PM_CALL_OR_WRITE_NODE: {
284
284
  pm_call_or_write_node_t *cast = (pm_call_or_write_node_t *) node;
285
285
  if (cast->receiver != NULL) {
@@ -288,44 +288,44 @@ pm_node_destroy(pm_parser_t *parser, pm_node_t *node) {
288
288
  pm_node_destroy(parser, (pm_node_t *)cast->value);
289
289
  break;
290
290
  }
291
- #line 110 "node.c.erb"
291
+ #line 110 "prism/templates/src/node.c.erb"
292
292
  case PM_CALL_TARGET_NODE: {
293
293
  pm_call_target_node_t *cast = (pm_call_target_node_t *) node;
294
294
  pm_node_destroy(parser, (pm_node_t *)cast->receiver);
295
295
  break;
296
296
  }
297
- #line 110 "node.c.erb"
297
+ #line 110 "prism/templates/src/node.c.erb"
298
298
  case PM_CAPTURE_PATTERN_NODE: {
299
299
  pm_capture_pattern_node_t *cast = (pm_capture_pattern_node_t *) node;
300
300
  pm_node_destroy(parser, (pm_node_t *)cast->value);
301
301
  pm_node_destroy(parser, (pm_node_t *)cast->target);
302
302
  break;
303
303
  }
304
- #line 110 "node.c.erb"
304
+ #line 110 "prism/templates/src/node.c.erb"
305
305
  case PM_CASE_MATCH_NODE: {
306
306
  pm_case_match_node_t *cast = (pm_case_match_node_t *) node;
307
307
  if (cast->predicate != NULL) {
308
308
  pm_node_destroy(parser, (pm_node_t *)cast->predicate);
309
309
  }
310
310
  pm_node_list_destroy(parser, &cast->conditions);
311
- if (cast->consequent != NULL) {
312
- pm_node_destroy(parser, (pm_node_t *)cast->consequent);
311
+ if (cast->else_clause != NULL) {
312
+ pm_node_destroy(parser, (pm_node_t *)cast->else_clause);
313
313
  }
314
314
  break;
315
315
  }
316
- #line 110 "node.c.erb"
316
+ #line 110 "prism/templates/src/node.c.erb"
317
317
  case PM_CASE_NODE: {
318
318
  pm_case_node_t *cast = (pm_case_node_t *) node;
319
319
  if (cast->predicate != NULL) {
320
320
  pm_node_destroy(parser, (pm_node_t *)cast->predicate);
321
321
  }
322
322
  pm_node_list_destroy(parser, &cast->conditions);
323
- if (cast->consequent != NULL) {
324
- pm_node_destroy(parser, (pm_node_t *)cast->consequent);
323
+ if (cast->else_clause != NULL) {
324
+ pm_node_destroy(parser, (pm_node_t *)cast->else_clause);
325
325
  }
326
326
  break;
327
327
  }
328
- #line 110 "node.c.erb"
328
+ #line 110 "prism/templates/src/node.c.erb"
329
329
  case PM_CLASS_NODE: {
330
330
  pm_class_node_t *cast = (pm_class_node_t *) node;
331
331
  pm_constant_id_list_free(&cast->locals);
@@ -338,64 +338,64 @@ pm_node_destroy(pm_parser_t *parser, pm_node_t *node) {
338
338
  }
339
339
  break;
340
340
  }
341
- #line 110 "node.c.erb"
341
+ #line 110 "prism/templates/src/node.c.erb"
342
342
  case PM_CLASS_VARIABLE_AND_WRITE_NODE: {
343
343
  pm_class_variable_and_write_node_t *cast = (pm_class_variable_and_write_node_t *) node;
344
344
  pm_node_destroy(parser, (pm_node_t *)cast->value);
345
345
  break;
346
346
  }
347
- #line 110 "node.c.erb"
347
+ #line 110 "prism/templates/src/node.c.erb"
348
348
  case PM_CLASS_VARIABLE_OPERATOR_WRITE_NODE: {
349
349
  pm_class_variable_operator_write_node_t *cast = (pm_class_variable_operator_write_node_t *) node;
350
350
  pm_node_destroy(parser, (pm_node_t *)cast->value);
351
351
  break;
352
352
  }
353
- #line 110 "node.c.erb"
353
+ #line 110 "prism/templates/src/node.c.erb"
354
354
  case PM_CLASS_VARIABLE_OR_WRITE_NODE: {
355
355
  pm_class_variable_or_write_node_t *cast = (pm_class_variable_or_write_node_t *) node;
356
356
  pm_node_destroy(parser, (pm_node_t *)cast->value);
357
357
  break;
358
358
  }
359
- #line 110 "node.c.erb"
359
+ #line 110 "prism/templates/src/node.c.erb"
360
360
  case PM_CLASS_VARIABLE_READ_NODE: {
361
361
  break;
362
362
  }
363
- #line 110 "node.c.erb"
363
+ #line 110 "prism/templates/src/node.c.erb"
364
364
  case PM_CLASS_VARIABLE_TARGET_NODE: {
365
365
  break;
366
366
  }
367
- #line 110 "node.c.erb"
367
+ #line 110 "prism/templates/src/node.c.erb"
368
368
  case PM_CLASS_VARIABLE_WRITE_NODE: {
369
369
  pm_class_variable_write_node_t *cast = (pm_class_variable_write_node_t *) node;
370
370
  pm_node_destroy(parser, (pm_node_t *)cast->value);
371
371
  break;
372
372
  }
373
- #line 110 "node.c.erb"
373
+ #line 110 "prism/templates/src/node.c.erb"
374
374
  case PM_CONSTANT_AND_WRITE_NODE: {
375
375
  pm_constant_and_write_node_t *cast = (pm_constant_and_write_node_t *) node;
376
376
  pm_node_destroy(parser, (pm_node_t *)cast->value);
377
377
  break;
378
378
  }
379
- #line 110 "node.c.erb"
379
+ #line 110 "prism/templates/src/node.c.erb"
380
380
  case PM_CONSTANT_OPERATOR_WRITE_NODE: {
381
381
  pm_constant_operator_write_node_t *cast = (pm_constant_operator_write_node_t *) node;
382
382
  pm_node_destroy(parser, (pm_node_t *)cast->value);
383
383
  break;
384
384
  }
385
- #line 110 "node.c.erb"
385
+ #line 110 "prism/templates/src/node.c.erb"
386
386
  case PM_CONSTANT_OR_WRITE_NODE: {
387
387
  pm_constant_or_write_node_t *cast = (pm_constant_or_write_node_t *) node;
388
388
  pm_node_destroy(parser, (pm_node_t *)cast->value);
389
389
  break;
390
390
  }
391
- #line 110 "node.c.erb"
391
+ #line 110 "prism/templates/src/node.c.erb"
392
392
  case PM_CONSTANT_PATH_AND_WRITE_NODE: {
393
393
  pm_constant_path_and_write_node_t *cast = (pm_constant_path_and_write_node_t *) node;
394
394
  pm_node_destroy(parser, (pm_node_t *)cast->target);
395
395
  pm_node_destroy(parser, (pm_node_t *)cast->value);
396
396
  break;
397
397
  }
398
- #line 110 "node.c.erb"
398
+ #line 110 "prism/templates/src/node.c.erb"
399
399
  case PM_CONSTANT_PATH_NODE: {
400
400
  pm_constant_path_node_t *cast = (pm_constant_path_node_t *) node;
401
401
  if (cast->parent != NULL) {
@@ -403,21 +403,21 @@ pm_node_destroy(pm_parser_t *parser, pm_node_t *node) {
403
403
  }
404
404
  break;
405
405
  }
406
- #line 110 "node.c.erb"
406
+ #line 110 "prism/templates/src/node.c.erb"
407
407
  case PM_CONSTANT_PATH_OPERATOR_WRITE_NODE: {
408
408
  pm_constant_path_operator_write_node_t *cast = (pm_constant_path_operator_write_node_t *) node;
409
409
  pm_node_destroy(parser, (pm_node_t *)cast->target);
410
410
  pm_node_destroy(parser, (pm_node_t *)cast->value);
411
411
  break;
412
412
  }
413
- #line 110 "node.c.erb"
413
+ #line 110 "prism/templates/src/node.c.erb"
414
414
  case PM_CONSTANT_PATH_OR_WRITE_NODE: {
415
415
  pm_constant_path_or_write_node_t *cast = (pm_constant_path_or_write_node_t *) node;
416
416
  pm_node_destroy(parser, (pm_node_t *)cast->target);
417
417
  pm_node_destroy(parser, (pm_node_t *)cast->value);
418
418
  break;
419
419
  }
420
- #line 110 "node.c.erb"
420
+ #line 110 "prism/templates/src/node.c.erb"
421
421
  case PM_CONSTANT_PATH_TARGET_NODE: {
422
422
  pm_constant_path_target_node_t *cast = (pm_constant_path_target_node_t *) node;
423
423
  if (cast->parent != NULL) {
@@ -425,28 +425,28 @@ pm_node_destroy(pm_parser_t *parser, pm_node_t *node) {
425
425
  }
426
426
  break;
427
427
  }
428
- #line 110 "node.c.erb"
428
+ #line 110 "prism/templates/src/node.c.erb"
429
429
  case PM_CONSTANT_PATH_WRITE_NODE: {
430
430
  pm_constant_path_write_node_t *cast = (pm_constant_path_write_node_t *) node;
431
431
  pm_node_destroy(parser, (pm_node_t *)cast->target);
432
432
  pm_node_destroy(parser, (pm_node_t *)cast->value);
433
433
  break;
434
434
  }
435
- #line 110 "node.c.erb"
435
+ #line 110 "prism/templates/src/node.c.erb"
436
436
  case PM_CONSTANT_READ_NODE: {
437
437
  break;
438
438
  }
439
- #line 110 "node.c.erb"
439
+ #line 110 "prism/templates/src/node.c.erb"
440
440
  case PM_CONSTANT_TARGET_NODE: {
441
441
  break;
442
442
  }
443
- #line 110 "node.c.erb"
443
+ #line 110 "prism/templates/src/node.c.erb"
444
444
  case PM_CONSTANT_WRITE_NODE: {
445
445
  pm_constant_write_node_t *cast = (pm_constant_write_node_t *) node;
446
446
  pm_node_destroy(parser, (pm_node_t *)cast->value);
447
447
  break;
448
448
  }
449
- #line 110 "node.c.erb"
449
+ #line 110 "prism/templates/src/node.c.erb"
450
450
  case PM_DEF_NODE: {
451
451
  pm_def_node_t *cast = (pm_def_node_t *) node;
452
452
  if (cast->receiver != NULL) {
@@ -461,13 +461,13 @@ pm_node_destroy(pm_parser_t *parser, pm_node_t *node) {
461
461
  pm_constant_id_list_free(&cast->locals);
462
462
  break;
463
463
  }
464
- #line 110 "node.c.erb"
464
+ #line 110 "prism/templates/src/node.c.erb"
465
465
  case PM_DEFINED_NODE: {
466
466
  pm_defined_node_t *cast = (pm_defined_node_t *) node;
467
467
  pm_node_destroy(parser, (pm_node_t *)cast->value);
468
468
  break;
469
469
  }
470
- #line 110 "node.c.erb"
470
+ #line 110 "prism/templates/src/node.c.erb"
471
471
  case PM_ELSE_NODE: {
472
472
  pm_else_node_t *cast = (pm_else_node_t *) node;
473
473
  if (cast->statements != NULL) {
@@ -475,7 +475,7 @@ pm_node_destroy(pm_parser_t *parser, pm_node_t *node) {
475
475
  }
476
476
  break;
477
477
  }
478
- #line 110 "node.c.erb"
478
+ #line 110 "prism/templates/src/node.c.erb"
479
479
  case PM_EMBEDDED_STATEMENTS_NODE: {
480
480
  pm_embedded_statements_node_t *cast = (pm_embedded_statements_node_t *) node;
481
481
  if (cast->statements != NULL) {
@@ -483,13 +483,13 @@ pm_node_destroy(pm_parser_t *parser, pm_node_t *node) {
483
483
  }
484
484
  break;
485
485
  }
486
- #line 110 "node.c.erb"
486
+ #line 110 "prism/templates/src/node.c.erb"
487
487
  case PM_EMBEDDED_VARIABLE_NODE: {
488
488
  pm_embedded_variable_node_t *cast = (pm_embedded_variable_node_t *) node;
489
489
  pm_node_destroy(parser, (pm_node_t *)cast->variable);
490
490
  break;
491
491
  }
492
- #line 110 "node.c.erb"
492
+ #line 110 "prism/templates/src/node.c.erb"
493
493
  case PM_ENSURE_NODE: {
494
494
  pm_ensure_node_t *cast = (pm_ensure_node_t *) node;
495
495
  if (cast->statements != NULL) {
@@ -497,11 +497,11 @@ pm_node_destroy(pm_parser_t *parser, pm_node_t *node) {
497
497
  }
498
498
  break;
499
499
  }
500
- #line 110 "node.c.erb"
500
+ #line 110 "prism/templates/src/node.c.erb"
501
501
  case PM_FALSE_NODE: {
502
502
  break;
503
503
  }
504
- #line 110 "node.c.erb"
504
+ #line 110 "prism/templates/src/node.c.erb"
505
505
  case PM_FIND_PATTERN_NODE: {
506
506
  pm_find_pattern_node_t *cast = (pm_find_pattern_node_t *) node;
507
507
  if (cast->constant != NULL) {
@@ -512,7 +512,7 @@ pm_node_destroy(pm_parser_t *parser, pm_node_t *node) {
512
512
  pm_node_destroy(parser, (pm_node_t *)cast->right);
513
513
  break;
514
514
  }
515
- #line 110 "node.c.erb"
515
+ #line 110 "prism/templates/src/node.c.erb"
516
516
  case PM_FLIP_FLOP_NODE: {
517
517
  pm_flip_flop_node_t *cast = (pm_flip_flop_node_t *) node;
518
518
  if (cast->left != NULL) {
@@ -523,11 +523,11 @@ pm_node_destroy(pm_parser_t *parser, pm_node_t *node) {
523
523
  }
524
524
  break;
525
525
  }
526
- #line 110 "node.c.erb"
526
+ #line 110 "prism/templates/src/node.c.erb"
527
527
  case PM_FLOAT_NODE: {
528
528
  break;
529
529
  }
530
- #line 110 "node.c.erb"
530
+ #line 110 "prism/templates/src/node.c.erb"
531
531
  case PM_FOR_NODE: {
532
532
  pm_for_node_t *cast = (pm_for_node_t *) node;
533
533
  pm_node_destroy(parser, (pm_node_t *)cast->index);
@@ -537,15 +537,15 @@ pm_node_destroy(pm_parser_t *parser, pm_node_t *node) {
537
537
  }
538
538
  break;
539
539
  }
540
- #line 110 "node.c.erb"
540
+ #line 110 "prism/templates/src/node.c.erb"
541
541
  case PM_FORWARDING_ARGUMENTS_NODE: {
542
542
  break;
543
543
  }
544
- #line 110 "node.c.erb"
544
+ #line 110 "prism/templates/src/node.c.erb"
545
545
  case PM_FORWARDING_PARAMETER_NODE: {
546
546
  break;
547
547
  }
548
- #line 110 "node.c.erb"
548
+ #line 110 "prism/templates/src/node.c.erb"
549
549
  case PM_FORWARDING_SUPER_NODE: {
550
550
  pm_forwarding_super_node_t *cast = (pm_forwarding_super_node_t *) node;
551
551
  if (cast->block != NULL) {
@@ -553,45 +553,45 @@ pm_node_destroy(pm_parser_t *parser, pm_node_t *node) {
553
553
  }
554
554
  break;
555
555
  }
556
- #line 110 "node.c.erb"
556
+ #line 110 "prism/templates/src/node.c.erb"
557
557
  case PM_GLOBAL_VARIABLE_AND_WRITE_NODE: {
558
558
  pm_global_variable_and_write_node_t *cast = (pm_global_variable_and_write_node_t *) node;
559
559
  pm_node_destroy(parser, (pm_node_t *)cast->value);
560
560
  break;
561
561
  }
562
- #line 110 "node.c.erb"
562
+ #line 110 "prism/templates/src/node.c.erb"
563
563
  case PM_GLOBAL_VARIABLE_OPERATOR_WRITE_NODE: {
564
564
  pm_global_variable_operator_write_node_t *cast = (pm_global_variable_operator_write_node_t *) node;
565
565
  pm_node_destroy(parser, (pm_node_t *)cast->value);
566
566
  break;
567
567
  }
568
- #line 110 "node.c.erb"
568
+ #line 110 "prism/templates/src/node.c.erb"
569
569
  case PM_GLOBAL_VARIABLE_OR_WRITE_NODE: {
570
570
  pm_global_variable_or_write_node_t *cast = (pm_global_variable_or_write_node_t *) node;
571
571
  pm_node_destroy(parser, (pm_node_t *)cast->value);
572
572
  break;
573
573
  }
574
- #line 110 "node.c.erb"
574
+ #line 110 "prism/templates/src/node.c.erb"
575
575
  case PM_GLOBAL_VARIABLE_READ_NODE: {
576
576
  break;
577
577
  }
578
- #line 110 "node.c.erb"
578
+ #line 110 "prism/templates/src/node.c.erb"
579
579
  case PM_GLOBAL_VARIABLE_TARGET_NODE: {
580
580
  break;
581
581
  }
582
- #line 110 "node.c.erb"
582
+ #line 110 "prism/templates/src/node.c.erb"
583
583
  case PM_GLOBAL_VARIABLE_WRITE_NODE: {
584
584
  pm_global_variable_write_node_t *cast = (pm_global_variable_write_node_t *) node;
585
585
  pm_node_destroy(parser, (pm_node_t *)cast->value);
586
586
  break;
587
587
  }
588
- #line 110 "node.c.erb"
588
+ #line 110 "prism/templates/src/node.c.erb"
589
589
  case PM_HASH_NODE: {
590
590
  pm_hash_node_t *cast = (pm_hash_node_t *) node;
591
591
  pm_node_list_destroy(parser, &cast->elements);
592
592
  break;
593
593
  }
594
- #line 110 "node.c.erb"
594
+ #line 110 "prism/templates/src/node.c.erb"
595
595
  case PM_HASH_PATTERN_NODE: {
596
596
  pm_hash_pattern_node_t *cast = (pm_hash_pattern_node_t *) node;
597
597
  if (cast->constant != NULL) {
@@ -603,35 +603,35 @@ pm_node_destroy(pm_parser_t *parser, pm_node_t *node) {
603
603
  }
604
604
  break;
605
605
  }
606
- #line 110 "node.c.erb"
606
+ #line 110 "prism/templates/src/node.c.erb"
607
607
  case PM_IF_NODE: {
608
608
  pm_if_node_t *cast = (pm_if_node_t *) node;
609
609
  pm_node_destroy(parser, (pm_node_t *)cast->predicate);
610
610
  if (cast->statements != NULL) {
611
611
  pm_node_destroy(parser, (pm_node_t *)cast->statements);
612
612
  }
613
- if (cast->consequent != NULL) {
614
- pm_node_destroy(parser, (pm_node_t *)cast->consequent);
613
+ if (cast->subsequent != NULL) {
614
+ pm_node_destroy(parser, (pm_node_t *)cast->subsequent);
615
615
  }
616
616
  break;
617
617
  }
618
- #line 110 "node.c.erb"
618
+ #line 110 "prism/templates/src/node.c.erb"
619
619
  case PM_IMAGINARY_NODE: {
620
620
  pm_imaginary_node_t *cast = (pm_imaginary_node_t *) node;
621
621
  pm_node_destroy(parser, (pm_node_t *)cast->numeric);
622
622
  break;
623
623
  }
624
- #line 110 "node.c.erb"
624
+ #line 110 "prism/templates/src/node.c.erb"
625
625
  case PM_IMPLICIT_NODE: {
626
626
  pm_implicit_node_t *cast = (pm_implicit_node_t *) node;
627
627
  pm_node_destroy(parser, (pm_node_t *)cast->value);
628
628
  break;
629
629
  }
630
- #line 110 "node.c.erb"
630
+ #line 110 "prism/templates/src/node.c.erb"
631
631
  case PM_IMPLICIT_REST_NODE: {
632
632
  break;
633
633
  }
634
- #line 110 "node.c.erb"
634
+ #line 110 "prism/templates/src/node.c.erb"
635
635
  case PM_IN_NODE: {
636
636
  pm_in_node_t *cast = (pm_in_node_t *) node;
637
637
  pm_node_destroy(parser, (pm_node_t *)cast->pattern);
@@ -640,7 +640,7 @@ pm_node_destroy(pm_parser_t *parser, pm_node_t *node) {
640
640
  }
641
641
  break;
642
642
  }
643
- #line 110 "node.c.erb"
643
+ #line 110 "prism/templates/src/node.c.erb"
644
644
  case PM_INDEX_AND_WRITE_NODE: {
645
645
  pm_index_and_write_node_t *cast = (pm_index_and_write_node_t *) node;
646
646
  if (cast->receiver != NULL) {
@@ -655,7 +655,7 @@ pm_node_destroy(pm_parser_t *parser, pm_node_t *node) {
655
655
  pm_node_destroy(parser, (pm_node_t *)cast->value);
656
656
  break;
657
657
  }
658
- #line 110 "node.c.erb"
658
+ #line 110 "prism/templates/src/node.c.erb"
659
659
  case PM_INDEX_OPERATOR_WRITE_NODE: {
660
660
  pm_index_operator_write_node_t *cast = (pm_index_operator_write_node_t *) node;
661
661
  if (cast->receiver != NULL) {
@@ -670,7 +670,7 @@ pm_node_destroy(pm_parser_t *parser, pm_node_t *node) {
670
670
  pm_node_destroy(parser, (pm_node_t *)cast->value);
671
671
  break;
672
672
  }
673
- #line 110 "node.c.erb"
673
+ #line 110 "prism/templates/src/node.c.erb"
674
674
  case PM_INDEX_OR_WRITE_NODE: {
675
675
  pm_index_or_write_node_t *cast = (pm_index_or_write_node_t *) node;
676
676
  if (cast->receiver != NULL) {
@@ -685,7 +685,7 @@ pm_node_destroy(pm_parser_t *parser, pm_node_t *node) {
685
685
  pm_node_destroy(parser, (pm_node_t *)cast->value);
686
686
  break;
687
687
  }
688
- #line 110 "node.c.erb"
688
+ #line 110 "prism/templates/src/node.c.erb"
689
689
  case PM_INDEX_TARGET_NODE: {
690
690
  pm_index_target_node_t *cast = (pm_index_target_node_t *) node;
691
691
  pm_node_destroy(parser, (pm_node_t *)cast->receiver);
@@ -697,93 +697,93 @@ pm_node_destroy(pm_parser_t *parser, pm_node_t *node) {
697
697
  }
698
698
  break;
699
699
  }
700
- #line 110 "node.c.erb"
700
+ #line 110 "prism/templates/src/node.c.erb"
701
701
  case PM_INSTANCE_VARIABLE_AND_WRITE_NODE: {
702
702
  pm_instance_variable_and_write_node_t *cast = (pm_instance_variable_and_write_node_t *) node;
703
703
  pm_node_destroy(parser, (pm_node_t *)cast->value);
704
704
  break;
705
705
  }
706
- #line 110 "node.c.erb"
706
+ #line 110 "prism/templates/src/node.c.erb"
707
707
  case PM_INSTANCE_VARIABLE_OPERATOR_WRITE_NODE: {
708
708
  pm_instance_variable_operator_write_node_t *cast = (pm_instance_variable_operator_write_node_t *) node;
709
709
  pm_node_destroy(parser, (pm_node_t *)cast->value);
710
710
  break;
711
711
  }
712
- #line 110 "node.c.erb"
712
+ #line 110 "prism/templates/src/node.c.erb"
713
713
  case PM_INSTANCE_VARIABLE_OR_WRITE_NODE: {
714
714
  pm_instance_variable_or_write_node_t *cast = (pm_instance_variable_or_write_node_t *) node;
715
715
  pm_node_destroy(parser, (pm_node_t *)cast->value);
716
716
  break;
717
717
  }
718
- #line 110 "node.c.erb"
718
+ #line 110 "prism/templates/src/node.c.erb"
719
719
  case PM_INSTANCE_VARIABLE_READ_NODE: {
720
720
  break;
721
721
  }
722
- #line 110 "node.c.erb"
722
+ #line 110 "prism/templates/src/node.c.erb"
723
723
  case PM_INSTANCE_VARIABLE_TARGET_NODE: {
724
724
  break;
725
725
  }
726
- #line 110 "node.c.erb"
726
+ #line 110 "prism/templates/src/node.c.erb"
727
727
  case PM_INSTANCE_VARIABLE_WRITE_NODE: {
728
728
  pm_instance_variable_write_node_t *cast = (pm_instance_variable_write_node_t *) node;
729
729
  pm_node_destroy(parser, (pm_node_t *)cast->value);
730
730
  break;
731
731
  }
732
- #line 110 "node.c.erb"
732
+ #line 110 "prism/templates/src/node.c.erb"
733
733
  case PM_INTEGER_NODE: {
734
734
  pm_integer_node_t *cast = (pm_integer_node_t *) node;
735
735
  pm_integer_free(&cast->value);
736
736
  break;
737
737
  }
738
- #line 110 "node.c.erb"
738
+ #line 110 "prism/templates/src/node.c.erb"
739
739
  case PM_INTERPOLATED_MATCH_LAST_LINE_NODE: {
740
740
  pm_interpolated_match_last_line_node_t *cast = (pm_interpolated_match_last_line_node_t *) node;
741
741
  pm_node_list_destroy(parser, &cast->parts);
742
742
  break;
743
743
  }
744
- #line 110 "node.c.erb"
744
+ #line 110 "prism/templates/src/node.c.erb"
745
745
  case PM_INTERPOLATED_REGULAR_EXPRESSION_NODE: {
746
746
  pm_interpolated_regular_expression_node_t *cast = (pm_interpolated_regular_expression_node_t *) node;
747
747
  pm_node_list_destroy(parser, &cast->parts);
748
748
  break;
749
749
  }
750
- #line 110 "node.c.erb"
750
+ #line 110 "prism/templates/src/node.c.erb"
751
751
  case PM_INTERPOLATED_STRING_NODE: {
752
752
  pm_interpolated_string_node_t *cast = (pm_interpolated_string_node_t *) node;
753
753
  pm_node_list_destroy(parser, &cast->parts);
754
754
  break;
755
755
  }
756
- #line 110 "node.c.erb"
756
+ #line 110 "prism/templates/src/node.c.erb"
757
757
  case PM_INTERPOLATED_SYMBOL_NODE: {
758
758
  pm_interpolated_symbol_node_t *cast = (pm_interpolated_symbol_node_t *) node;
759
759
  pm_node_list_destroy(parser, &cast->parts);
760
760
  break;
761
761
  }
762
- #line 110 "node.c.erb"
762
+ #line 110 "prism/templates/src/node.c.erb"
763
763
  case PM_INTERPOLATED_X_STRING_NODE: {
764
764
  pm_interpolated_x_string_node_t *cast = (pm_interpolated_x_string_node_t *) node;
765
765
  pm_node_list_destroy(parser, &cast->parts);
766
766
  break;
767
767
  }
768
- #line 110 "node.c.erb"
768
+ #line 110 "prism/templates/src/node.c.erb"
769
769
  case PM_IT_LOCAL_VARIABLE_READ_NODE: {
770
770
  break;
771
771
  }
772
- #line 110 "node.c.erb"
772
+ #line 110 "prism/templates/src/node.c.erb"
773
773
  case PM_IT_PARAMETERS_NODE: {
774
774
  break;
775
775
  }
776
- #line 110 "node.c.erb"
776
+ #line 110 "prism/templates/src/node.c.erb"
777
777
  case PM_KEYWORD_HASH_NODE: {
778
778
  pm_keyword_hash_node_t *cast = (pm_keyword_hash_node_t *) node;
779
779
  pm_node_list_destroy(parser, &cast->elements);
780
780
  break;
781
781
  }
782
- #line 110 "node.c.erb"
782
+ #line 110 "prism/templates/src/node.c.erb"
783
783
  case PM_KEYWORD_REST_PARAMETER_NODE: {
784
784
  break;
785
785
  }
786
- #line 110 "node.c.erb"
786
+ #line 110 "prism/templates/src/node.c.erb"
787
787
  case PM_LAMBDA_NODE: {
788
788
  pm_lambda_node_t *cast = (pm_lambda_node_t *) node;
789
789
  pm_constant_id_list_free(&cast->locals);
@@ -795,70 +795,70 @@ pm_node_destroy(pm_parser_t *parser, pm_node_t *node) {
795
795
  }
796
796
  break;
797
797
  }
798
- #line 110 "node.c.erb"
798
+ #line 110 "prism/templates/src/node.c.erb"
799
799
  case PM_LOCAL_VARIABLE_AND_WRITE_NODE: {
800
800
  pm_local_variable_and_write_node_t *cast = (pm_local_variable_and_write_node_t *) node;
801
801
  pm_node_destroy(parser, (pm_node_t *)cast->value);
802
802
  break;
803
803
  }
804
- #line 110 "node.c.erb"
804
+ #line 110 "prism/templates/src/node.c.erb"
805
805
  case PM_LOCAL_VARIABLE_OPERATOR_WRITE_NODE: {
806
806
  pm_local_variable_operator_write_node_t *cast = (pm_local_variable_operator_write_node_t *) node;
807
807
  pm_node_destroy(parser, (pm_node_t *)cast->value);
808
808
  break;
809
809
  }
810
- #line 110 "node.c.erb"
810
+ #line 110 "prism/templates/src/node.c.erb"
811
811
  case PM_LOCAL_VARIABLE_OR_WRITE_NODE: {
812
812
  pm_local_variable_or_write_node_t *cast = (pm_local_variable_or_write_node_t *) node;
813
813
  pm_node_destroy(parser, (pm_node_t *)cast->value);
814
814
  break;
815
815
  }
816
- #line 110 "node.c.erb"
816
+ #line 110 "prism/templates/src/node.c.erb"
817
817
  case PM_LOCAL_VARIABLE_READ_NODE: {
818
818
  break;
819
819
  }
820
- #line 110 "node.c.erb"
820
+ #line 110 "prism/templates/src/node.c.erb"
821
821
  case PM_LOCAL_VARIABLE_TARGET_NODE: {
822
822
  break;
823
823
  }
824
- #line 110 "node.c.erb"
824
+ #line 110 "prism/templates/src/node.c.erb"
825
825
  case PM_LOCAL_VARIABLE_WRITE_NODE: {
826
826
  pm_local_variable_write_node_t *cast = (pm_local_variable_write_node_t *) node;
827
827
  pm_node_destroy(parser, (pm_node_t *)cast->value);
828
828
  break;
829
829
  }
830
- #line 110 "node.c.erb"
830
+ #line 110 "prism/templates/src/node.c.erb"
831
831
  case PM_MATCH_LAST_LINE_NODE: {
832
832
  pm_match_last_line_node_t *cast = (pm_match_last_line_node_t *) node;
833
833
  pm_string_free(&cast->unescaped);
834
834
  break;
835
835
  }
836
- #line 110 "node.c.erb"
836
+ #line 110 "prism/templates/src/node.c.erb"
837
837
  case PM_MATCH_PREDICATE_NODE: {
838
838
  pm_match_predicate_node_t *cast = (pm_match_predicate_node_t *) node;
839
839
  pm_node_destroy(parser, (pm_node_t *)cast->value);
840
840
  pm_node_destroy(parser, (pm_node_t *)cast->pattern);
841
841
  break;
842
842
  }
843
- #line 110 "node.c.erb"
843
+ #line 110 "prism/templates/src/node.c.erb"
844
844
  case PM_MATCH_REQUIRED_NODE: {
845
845
  pm_match_required_node_t *cast = (pm_match_required_node_t *) node;
846
846
  pm_node_destroy(parser, (pm_node_t *)cast->value);
847
847
  pm_node_destroy(parser, (pm_node_t *)cast->pattern);
848
848
  break;
849
849
  }
850
- #line 110 "node.c.erb"
850
+ #line 110 "prism/templates/src/node.c.erb"
851
851
  case PM_MATCH_WRITE_NODE: {
852
852
  pm_match_write_node_t *cast = (pm_match_write_node_t *) node;
853
853
  pm_node_destroy(parser, (pm_node_t *)cast->call);
854
854
  pm_node_list_destroy(parser, &cast->targets);
855
855
  break;
856
856
  }
857
- #line 110 "node.c.erb"
857
+ #line 110 "prism/templates/src/node.c.erb"
858
858
  case PM_MISSING_NODE: {
859
859
  break;
860
860
  }
861
- #line 110 "node.c.erb"
861
+ #line 110 "prism/templates/src/node.c.erb"
862
862
  case PM_MODULE_NODE: {
863
863
  pm_module_node_t *cast = (pm_module_node_t *) node;
864
864
  pm_constant_id_list_free(&cast->locals);
@@ -868,7 +868,7 @@ pm_node_destroy(pm_parser_t *parser, pm_node_t *node) {
868
868
  }
869
869
  break;
870
870
  }
871
- #line 110 "node.c.erb"
871
+ #line 110 "prism/templates/src/node.c.erb"
872
872
  case PM_MULTI_TARGET_NODE: {
873
873
  pm_multi_target_node_t *cast = (pm_multi_target_node_t *) node;
874
874
  pm_node_list_destroy(parser, &cast->lefts);
@@ -878,7 +878,7 @@ pm_node_destroy(pm_parser_t *parser, pm_node_t *node) {
878
878
  pm_node_list_destroy(parser, &cast->rights);
879
879
  break;
880
880
  }
881
- #line 110 "node.c.erb"
881
+ #line 110 "prism/templates/src/node.c.erb"
882
882
  case PM_MULTI_WRITE_NODE: {
883
883
  pm_multi_write_node_t *cast = (pm_multi_write_node_t *) node;
884
884
  pm_node_list_destroy(parser, &cast->lefts);
@@ -889,7 +889,7 @@ pm_node_destroy(pm_parser_t *parser, pm_node_t *node) {
889
889
  pm_node_destroy(parser, (pm_node_t *)cast->value);
890
890
  break;
891
891
  }
892
- #line 110 "node.c.erb"
892
+ #line 110 "prism/templates/src/node.c.erb"
893
893
  case PM_NEXT_NODE: {
894
894
  pm_next_node_t *cast = (pm_next_node_t *) node;
895
895
  if (cast->arguments != NULL) {
@@ -897,42 +897,42 @@ pm_node_destroy(pm_parser_t *parser, pm_node_t *node) {
897
897
  }
898
898
  break;
899
899
  }
900
- #line 110 "node.c.erb"
900
+ #line 110 "prism/templates/src/node.c.erb"
901
901
  case PM_NIL_NODE: {
902
902
  break;
903
903
  }
904
- #line 110 "node.c.erb"
904
+ #line 110 "prism/templates/src/node.c.erb"
905
905
  case PM_NO_KEYWORDS_PARAMETER_NODE: {
906
906
  break;
907
907
  }
908
- #line 110 "node.c.erb"
908
+ #line 110 "prism/templates/src/node.c.erb"
909
909
  case PM_NUMBERED_PARAMETERS_NODE: {
910
910
  break;
911
911
  }
912
- #line 110 "node.c.erb"
912
+ #line 110 "prism/templates/src/node.c.erb"
913
913
  case PM_NUMBERED_REFERENCE_READ_NODE: {
914
914
  break;
915
915
  }
916
- #line 110 "node.c.erb"
916
+ #line 110 "prism/templates/src/node.c.erb"
917
917
  case PM_OPTIONAL_KEYWORD_PARAMETER_NODE: {
918
918
  pm_optional_keyword_parameter_node_t *cast = (pm_optional_keyword_parameter_node_t *) node;
919
919
  pm_node_destroy(parser, (pm_node_t *)cast->value);
920
920
  break;
921
921
  }
922
- #line 110 "node.c.erb"
922
+ #line 110 "prism/templates/src/node.c.erb"
923
923
  case PM_OPTIONAL_PARAMETER_NODE: {
924
924
  pm_optional_parameter_node_t *cast = (pm_optional_parameter_node_t *) node;
925
925
  pm_node_destroy(parser, (pm_node_t *)cast->value);
926
926
  break;
927
927
  }
928
- #line 110 "node.c.erb"
928
+ #line 110 "prism/templates/src/node.c.erb"
929
929
  case PM_OR_NODE: {
930
930
  pm_or_node_t *cast = (pm_or_node_t *) node;
931
931
  pm_node_destroy(parser, (pm_node_t *)cast->left);
932
932
  pm_node_destroy(parser, (pm_node_t *)cast->right);
933
933
  break;
934
934
  }
935
- #line 110 "node.c.erb"
935
+ #line 110 "prism/templates/src/node.c.erb"
936
936
  case PM_PARAMETERS_NODE: {
937
937
  pm_parameters_node_t *cast = (pm_parameters_node_t *) node;
938
938
  pm_node_list_destroy(parser, &cast->requireds);
@@ -950,7 +950,7 @@ pm_node_destroy(pm_parser_t *parser, pm_node_t *node) {
950
950
  }
951
951
  break;
952
952
  }
953
- #line 110 "node.c.erb"
953
+ #line 110 "prism/templates/src/node.c.erb"
954
954
  case PM_PARENTHESES_NODE: {
955
955
  pm_parentheses_node_t *cast = (pm_parentheses_node_t *) node;
956
956
  if (cast->body != NULL) {
@@ -958,19 +958,19 @@ pm_node_destroy(pm_parser_t *parser, pm_node_t *node) {
958
958
  }
959
959
  break;
960
960
  }
961
- #line 110 "node.c.erb"
961
+ #line 110 "prism/templates/src/node.c.erb"
962
962
  case PM_PINNED_EXPRESSION_NODE: {
963
963
  pm_pinned_expression_node_t *cast = (pm_pinned_expression_node_t *) node;
964
964
  pm_node_destroy(parser, (pm_node_t *)cast->expression);
965
965
  break;
966
966
  }
967
- #line 110 "node.c.erb"
967
+ #line 110 "prism/templates/src/node.c.erb"
968
968
  case PM_PINNED_VARIABLE_NODE: {
969
969
  pm_pinned_variable_node_t *cast = (pm_pinned_variable_node_t *) node;
970
970
  pm_node_destroy(parser, (pm_node_t *)cast->variable);
971
971
  break;
972
972
  }
973
- #line 110 "node.c.erb"
973
+ #line 110 "prism/templates/src/node.c.erb"
974
974
  case PM_POST_EXECUTION_NODE: {
975
975
  pm_post_execution_node_t *cast = (pm_post_execution_node_t *) node;
976
976
  if (cast->statements != NULL) {
@@ -978,7 +978,7 @@ pm_node_destroy(pm_parser_t *parser, pm_node_t *node) {
978
978
  }
979
979
  break;
980
980
  }
981
- #line 110 "node.c.erb"
981
+ #line 110 "prism/templates/src/node.c.erb"
982
982
  case PM_PRE_EXECUTION_NODE: {
983
983
  pm_pre_execution_node_t *cast = (pm_pre_execution_node_t *) node;
984
984
  if (cast->statements != NULL) {
@@ -986,14 +986,14 @@ pm_node_destroy(pm_parser_t *parser, pm_node_t *node) {
986
986
  }
987
987
  break;
988
988
  }
989
- #line 110 "node.c.erb"
989
+ #line 110 "prism/templates/src/node.c.erb"
990
990
  case PM_PROGRAM_NODE: {
991
991
  pm_program_node_t *cast = (pm_program_node_t *) node;
992
992
  pm_constant_id_list_free(&cast->locals);
993
993
  pm_node_destroy(parser, (pm_node_t *)cast->statements);
994
994
  break;
995
995
  }
996
- #line 110 "node.c.erb"
996
+ #line 110 "prism/templates/src/node.c.erb"
997
997
  case PM_RANGE_NODE: {
998
998
  pm_range_node_t *cast = (pm_range_node_t *) node;
999
999
  if (cast->left != NULL) {
@@ -1004,39 +1004,39 @@ pm_node_destroy(pm_parser_t *parser, pm_node_t *node) {
1004
1004
  }
1005
1005
  break;
1006
1006
  }
1007
- #line 110 "node.c.erb"
1007
+ #line 110 "prism/templates/src/node.c.erb"
1008
1008
  case PM_RATIONAL_NODE: {
1009
1009
  pm_rational_node_t *cast = (pm_rational_node_t *) node;
1010
1010
  pm_integer_free(&cast->numerator);
1011
1011
  pm_integer_free(&cast->denominator);
1012
1012
  break;
1013
1013
  }
1014
- #line 110 "node.c.erb"
1014
+ #line 110 "prism/templates/src/node.c.erb"
1015
1015
  case PM_REDO_NODE: {
1016
1016
  break;
1017
1017
  }
1018
- #line 110 "node.c.erb"
1018
+ #line 110 "prism/templates/src/node.c.erb"
1019
1019
  case PM_REGULAR_EXPRESSION_NODE: {
1020
1020
  pm_regular_expression_node_t *cast = (pm_regular_expression_node_t *) node;
1021
1021
  pm_string_free(&cast->unescaped);
1022
1022
  break;
1023
1023
  }
1024
- #line 110 "node.c.erb"
1024
+ #line 110 "prism/templates/src/node.c.erb"
1025
1025
  case PM_REQUIRED_KEYWORD_PARAMETER_NODE: {
1026
1026
  break;
1027
1027
  }
1028
- #line 110 "node.c.erb"
1028
+ #line 110 "prism/templates/src/node.c.erb"
1029
1029
  case PM_REQUIRED_PARAMETER_NODE: {
1030
1030
  break;
1031
1031
  }
1032
- #line 110 "node.c.erb"
1032
+ #line 110 "prism/templates/src/node.c.erb"
1033
1033
  case PM_RESCUE_MODIFIER_NODE: {
1034
1034
  pm_rescue_modifier_node_t *cast = (pm_rescue_modifier_node_t *) node;
1035
1035
  pm_node_destroy(parser, (pm_node_t *)cast->expression);
1036
1036
  pm_node_destroy(parser, (pm_node_t *)cast->rescue_expression);
1037
1037
  break;
1038
1038
  }
1039
- #line 110 "node.c.erb"
1039
+ #line 110 "prism/templates/src/node.c.erb"
1040
1040
  case PM_RESCUE_NODE: {
1041
1041
  pm_rescue_node_t *cast = (pm_rescue_node_t *) node;
1042
1042
  pm_node_list_destroy(parser, &cast->exceptions);
@@ -1046,20 +1046,20 @@ pm_node_destroy(pm_parser_t *parser, pm_node_t *node) {
1046
1046
  if (cast->statements != NULL) {
1047
1047
  pm_node_destroy(parser, (pm_node_t *)cast->statements);
1048
1048
  }
1049
- if (cast->consequent != NULL) {
1050
- pm_node_destroy(parser, (pm_node_t *)cast->consequent);
1049
+ if (cast->subsequent != NULL) {
1050
+ pm_node_destroy(parser, (pm_node_t *)cast->subsequent);
1051
1051
  }
1052
1052
  break;
1053
1053
  }
1054
- #line 110 "node.c.erb"
1054
+ #line 110 "prism/templates/src/node.c.erb"
1055
1055
  case PM_REST_PARAMETER_NODE: {
1056
1056
  break;
1057
1057
  }
1058
- #line 110 "node.c.erb"
1058
+ #line 110 "prism/templates/src/node.c.erb"
1059
1059
  case PM_RETRY_NODE: {
1060
1060
  break;
1061
1061
  }
1062
- #line 110 "node.c.erb"
1062
+ #line 110 "prism/templates/src/node.c.erb"
1063
1063
  case PM_RETURN_NODE: {
1064
1064
  pm_return_node_t *cast = (pm_return_node_t *) node;
1065
1065
  if (cast->arguments != NULL) {
@@ -1067,17 +1067,17 @@ pm_node_destroy(pm_parser_t *parser, pm_node_t *node) {
1067
1067
  }
1068
1068
  break;
1069
1069
  }
1070
- #line 110 "node.c.erb"
1070
+ #line 110 "prism/templates/src/node.c.erb"
1071
1071
  case PM_SELF_NODE: {
1072
1072
  break;
1073
1073
  }
1074
- #line 110 "node.c.erb"
1074
+ #line 110 "prism/templates/src/node.c.erb"
1075
1075
  case PM_SHAREABLE_CONSTANT_NODE: {
1076
1076
  pm_shareable_constant_node_t *cast = (pm_shareable_constant_node_t *) node;
1077
1077
  pm_node_destroy(parser, (pm_node_t *)cast->write);
1078
1078
  break;
1079
1079
  }
1080
- #line 110 "node.c.erb"
1080
+ #line 110 "prism/templates/src/node.c.erb"
1081
1081
  case PM_SINGLETON_CLASS_NODE: {
1082
1082
  pm_singleton_class_node_t *cast = (pm_singleton_class_node_t *) node;
1083
1083
  pm_constant_id_list_free(&cast->locals);
@@ -1087,21 +1087,21 @@ pm_node_destroy(pm_parser_t *parser, pm_node_t *node) {
1087
1087
  }
1088
1088
  break;
1089
1089
  }
1090
- #line 110 "node.c.erb"
1090
+ #line 110 "prism/templates/src/node.c.erb"
1091
1091
  case PM_SOURCE_ENCODING_NODE: {
1092
1092
  break;
1093
1093
  }
1094
- #line 110 "node.c.erb"
1094
+ #line 110 "prism/templates/src/node.c.erb"
1095
1095
  case PM_SOURCE_FILE_NODE: {
1096
1096
  pm_source_file_node_t *cast = (pm_source_file_node_t *) node;
1097
1097
  pm_string_free(&cast->filepath);
1098
1098
  break;
1099
1099
  }
1100
- #line 110 "node.c.erb"
1100
+ #line 110 "prism/templates/src/node.c.erb"
1101
1101
  case PM_SOURCE_LINE_NODE: {
1102
1102
  break;
1103
1103
  }
1104
- #line 110 "node.c.erb"
1104
+ #line 110 "prism/templates/src/node.c.erb"
1105
1105
  case PM_SPLAT_NODE: {
1106
1106
  pm_splat_node_t *cast = (pm_splat_node_t *) node;
1107
1107
  if (cast->expression != NULL) {
@@ -1109,19 +1109,19 @@ pm_node_destroy(pm_parser_t *parser, pm_node_t *node) {
1109
1109
  }
1110
1110
  break;
1111
1111
  }
1112
- #line 110 "node.c.erb"
1112
+ #line 110 "prism/templates/src/node.c.erb"
1113
1113
  case PM_STATEMENTS_NODE: {
1114
1114
  pm_statements_node_t *cast = (pm_statements_node_t *) node;
1115
1115
  pm_node_list_destroy(parser, &cast->body);
1116
1116
  break;
1117
1117
  }
1118
- #line 110 "node.c.erb"
1118
+ #line 110 "prism/templates/src/node.c.erb"
1119
1119
  case PM_STRING_NODE: {
1120
1120
  pm_string_node_t *cast = (pm_string_node_t *) node;
1121
1121
  pm_string_free(&cast->unescaped);
1122
1122
  break;
1123
1123
  }
1124
- #line 110 "node.c.erb"
1124
+ #line 110 "prism/templates/src/node.c.erb"
1125
1125
  case PM_SUPER_NODE: {
1126
1126
  pm_super_node_t *cast = (pm_super_node_t *) node;
1127
1127
  if (cast->arguments != NULL) {
@@ -1132,35 +1132,35 @@ pm_node_destroy(pm_parser_t *parser, pm_node_t *node) {
1132
1132
  }
1133
1133
  break;
1134
1134
  }
1135
- #line 110 "node.c.erb"
1135
+ #line 110 "prism/templates/src/node.c.erb"
1136
1136
  case PM_SYMBOL_NODE: {
1137
1137
  pm_symbol_node_t *cast = (pm_symbol_node_t *) node;
1138
1138
  pm_string_free(&cast->unescaped);
1139
1139
  break;
1140
1140
  }
1141
- #line 110 "node.c.erb"
1141
+ #line 110 "prism/templates/src/node.c.erb"
1142
1142
  case PM_TRUE_NODE: {
1143
1143
  break;
1144
1144
  }
1145
- #line 110 "node.c.erb"
1145
+ #line 110 "prism/templates/src/node.c.erb"
1146
1146
  case PM_UNDEF_NODE: {
1147
1147
  pm_undef_node_t *cast = (pm_undef_node_t *) node;
1148
1148
  pm_node_list_destroy(parser, &cast->names);
1149
1149
  break;
1150
1150
  }
1151
- #line 110 "node.c.erb"
1151
+ #line 110 "prism/templates/src/node.c.erb"
1152
1152
  case PM_UNLESS_NODE: {
1153
1153
  pm_unless_node_t *cast = (pm_unless_node_t *) node;
1154
1154
  pm_node_destroy(parser, (pm_node_t *)cast->predicate);
1155
1155
  if (cast->statements != NULL) {
1156
1156
  pm_node_destroy(parser, (pm_node_t *)cast->statements);
1157
1157
  }
1158
- if (cast->consequent != NULL) {
1159
- pm_node_destroy(parser, (pm_node_t *)cast->consequent);
1158
+ if (cast->else_clause != NULL) {
1159
+ pm_node_destroy(parser, (pm_node_t *)cast->else_clause);
1160
1160
  }
1161
1161
  break;
1162
1162
  }
1163
- #line 110 "node.c.erb"
1163
+ #line 110 "prism/templates/src/node.c.erb"
1164
1164
  case PM_UNTIL_NODE: {
1165
1165
  pm_until_node_t *cast = (pm_until_node_t *) node;
1166
1166
  pm_node_destroy(parser, (pm_node_t *)cast->predicate);
@@ -1169,7 +1169,7 @@ pm_node_destroy(pm_parser_t *parser, pm_node_t *node) {
1169
1169
  }
1170
1170
  break;
1171
1171
  }
1172
- #line 110 "node.c.erb"
1172
+ #line 110 "prism/templates/src/node.c.erb"
1173
1173
  case PM_WHEN_NODE: {
1174
1174
  pm_when_node_t *cast = (pm_when_node_t *) node;
1175
1175
  pm_node_list_destroy(parser, &cast->conditions);
@@ -1178,7 +1178,7 @@ pm_node_destroy(pm_parser_t *parser, pm_node_t *node) {
1178
1178
  }
1179
1179
  break;
1180
1180
  }
1181
- #line 110 "node.c.erb"
1181
+ #line 110 "prism/templates/src/node.c.erb"
1182
1182
  case PM_WHILE_NODE: {
1183
1183
  pm_while_node_t *cast = (pm_while_node_t *) node;
1184
1184
  pm_node_destroy(parser, (pm_node_t *)cast->predicate);
@@ -1187,13 +1187,13 @@ pm_node_destroy(pm_parser_t *parser, pm_node_t *node) {
1187
1187
  }
1188
1188
  break;
1189
1189
  }
1190
- #line 110 "node.c.erb"
1190
+ #line 110 "prism/templates/src/node.c.erb"
1191
1191
  case PM_X_STRING_NODE: {
1192
1192
  pm_x_string_node_t *cast = (pm_x_string_node_t *) node;
1193
1193
  pm_string_free(&cast->unescaped);
1194
1194
  break;
1195
1195
  }
1196
- #line 110 "node.c.erb"
1196
+ #line 110 "prism/templates/src/node.c.erb"
1197
1197
  case PM_YIELD_NODE: {
1198
1198
  pm_yield_node_t *cast = (pm_yield_node_t *) node;
1199
1199
  if (cast->arguments != NULL) {
@@ -1201,7 +1201,7 @@ pm_node_destroy(pm_parser_t *parser, pm_node_t *node) {
1201
1201
  }
1202
1202
  break;
1203
1203
  }
1204
- #line 139 "node.c.erb"
1204
+ #line 139 "prism/templates/src/node.c.erb"
1205
1205
  default:
1206
1206
  assert(false && "unreachable");
1207
1207
  break;
@@ -1831,9 +1831,9 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
1831
1831
  pm_visit_node(conditions->nodes[index], visitor, data);
1832
1832
  }
1833
1833
 
1834
- // Visit the consequent field
1835
- if (cast->consequent != NULL) {
1836
- pm_visit_node((const pm_node_t *) cast->consequent, visitor, data);
1834
+ // Visit the else_clause field
1835
+ if (cast->else_clause != NULL) {
1836
+ pm_visit_node((const pm_node_t *) cast->else_clause, visitor, data);
1837
1837
  }
1838
1838
 
1839
1839
  break;
@@ -1852,9 +1852,9 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
1852
1852
  pm_visit_node(conditions->nodes[index], visitor, data);
1853
1853
  }
1854
1854
 
1855
- // Visit the consequent field
1856
- if (cast->consequent != NULL) {
1857
- pm_visit_node((const pm_node_t *) cast->consequent, visitor, data);
1855
+ // Visit the else_clause field
1856
+ if (cast->else_clause != NULL) {
1857
+ pm_visit_node((const pm_node_t *) cast->else_clause, visitor, data);
1858
1858
  }
1859
1859
 
1860
1860
  break;
@@ -2229,9 +2229,9 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
2229
2229
  pm_visit_node((const pm_node_t *) cast->statements, visitor, data);
2230
2230
  }
2231
2231
 
2232
- // Visit the consequent field
2233
- if (cast->consequent != NULL) {
2234
- pm_visit_node((const pm_node_t *) cast->consequent, visitor, data);
2232
+ // Visit the subsequent field
2233
+ if (cast->subsequent != NULL) {
2234
+ pm_visit_node((const pm_node_t *) cast->subsequent, visitor, data);
2235
2235
  }
2236
2236
 
2237
2237
  break;
@@ -2813,9 +2813,9 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
2813
2813
  pm_visit_node((const pm_node_t *) cast->statements, visitor, data);
2814
2814
  }
2815
2815
 
2816
- // Visit the consequent field
2817
- if (cast->consequent != NULL) {
2818
- pm_visit_node((const pm_node_t *) cast->consequent, visitor, data);
2816
+ // Visit the subsequent field
2817
+ if (cast->subsequent != NULL) {
2818
+ pm_visit_node((const pm_node_t *) cast->subsequent, visitor, data);
2819
2819
  }
2820
2820
 
2821
2821
  break;
@@ -2927,9 +2927,9 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
2927
2927
  pm_visit_node((const pm_node_t *) cast->statements, visitor, data);
2928
2928
  }
2929
2929
 
2930
- // Visit the consequent field
2931
- if (cast->consequent != NULL) {
2932
- pm_visit_node((const pm_node_t *) cast->consequent, visitor, data);
2930
+ // Visit the else_clause field
2931
+ if (cast->else_clause != NULL) {
2932
+ pm_visit_node((const pm_node_t *) cast->else_clause, visitor, data);
2933
2933
  }
2934
2934
 
2935
2935
  break;
@@ -3120,9 +3120,9 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
3120
3120
  const pm_arguments_node_t *cast = (const pm_arguments_node_t *) node;
3121
3121
  pm_dump_json_location(buffer, parser, &cast->base.location);
3122
3122
 
3123
- // Dump the flags field
3123
+ // Dump the ArgumentsNodeFlags field
3124
3124
  pm_buffer_append_byte(buffer, ',');
3125
- pm_buffer_append_string(buffer, "\"flags\":", 8);
3125
+ pm_buffer_append_string(buffer, "\"ArgumentsNodeFlags\":", 21);
3126
3126
  size_t flags = 0;
3127
3127
  pm_buffer_append_byte(buffer, '[');
3128
3128
  if (PM_NODE_FLAG_P(cast, PM_ARGUMENTS_NODE_FLAGS_CONTAINS_KEYWORDS)) {
@@ -3135,6 +3135,11 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
3135
3135
  pm_buffer_append_string(buffer, "\"CONTAINS_KEYWORD_SPLAT\"", 24);
3136
3136
  flags++;
3137
3137
  }
3138
+ if (PM_NODE_FLAG_P(cast, PM_ARGUMENTS_NODE_FLAGS_CONTAINS_SPLAT)) {
3139
+ if (flags != 0) pm_buffer_append_byte(buffer, ',');
3140
+ pm_buffer_append_string(buffer, "\"CONTAINS_SPLAT\"", 16);
3141
+ flags++;
3142
+ }
3138
3143
  pm_buffer_append_byte(buffer, ']');
3139
3144
 
3140
3145
  // Dump the arguments field
@@ -3158,9 +3163,9 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
3158
3163
  const pm_array_node_t *cast = (const pm_array_node_t *) node;
3159
3164
  pm_dump_json_location(buffer, parser, &cast->base.location);
3160
3165
 
3161
- // Dump the flags field
3166
+ // Dump the ArrayNodeFlags field
3162
3167
  pm_buffer_append_byte(buffer, ',');
3163
- pm_buffer_append_string(buffer, "\"flags\":", 8);
3168
+ pm_buffer_append_string(buffer, "\"ArrayNodeFlags\":", 17);
3164
3169
  size_t flags = 0;
3165
3170
  pm_buffer_append_byte(buffer, '[');
3166
3171
  if (PM_NODE_FLAG_P(cast, PM_ARRAY_NODE_FLAGS_CONTAINS_SPLAT)) {
@@ -3429,9 +3434,9 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
3429
3434
  const pm_block_local_variable_node_t *cast = (const pm_block_local_variable_node_t *) node;
3430
3435
  pm_dump_json_location(buffer, parser, &cast->base.location);
3431
3436
 
3432
- // Dump the flags field
3437
+ // Dump the ParameterFlags field
3433
3438
  pm_buffer_append_byte(buffer, ',');
3434
- pm_buffer_append_string(buffer, "\"flags\":", 8);
3439
+ pm_buffer_append_string(buffer, "\"ParameterFlags\":", 17);
3435
3440
  size_t flags = 0;
3436
3441
  pm_buffer_append_byte(buffer, '[');
3437
3442
  if (PM_NODE_FLAG_P(cast, PM_PARAMETER_FLAGS_REPEATED_PARAMETER)) {
@@ -3504,9 +3509,9 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
3504
3509
  const pm_block_parameter_node_t *cast = (const pm_block_parameter_node_t *) node;
3505
3510
  pm_dump_json_location(buffer, parser, &cast->base.location);
3506
3511
 
3507
- // Dump the flags field
3512
+ // Dump the ParameterFlags field
3508
3513
  pm_buffer_append_byte(buffer, ',');
3509
- pm_buffer_append_string(buffer, "\"flags\":", 8);
3514
+ pm_buffer_append_string(buffer, "\"ParameterFlags\":", 17);
3510
3515
  size_t flags = 0;
3511
3516
  pm_buffer_append_byte(buffer, '[');
3512
3517
  if (PM_NODE_FLAG_P(cast, PM_PARAMETER_FLAGS_REPEATED_PARAMETER)) {
@@ -3619,9 +3624,9 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
3619
3624
  const pm_call_and_write_node_t *cast = (const pm_call_and_write_node_t *) node;
3620
3625
  pm_dump_json_location(buffer, parser, &cast->base.location);
3621
3626
 
3622
- // Dump the flags field
3627
+ // Dump the CallNodeFlags field
3623
3628
  pm_buffer_append_byte(buffer, ',');
3624
- pm_buffer_append_string(buffer, "\"flags\":", 8);
3629
+ pm_buffer_append_string(buffer, "\"CallNodeFlags\":", 16);
3625
3630
  size_t flags = 0;
3626
3631
  pm_buffer_append_byte(buffer, '[');
3627
3632
  if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_SAFE_NAVIGATION)) {
@@ -3702,9 +3707,9 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
3702
3707
  const pm_call_node_t *cast = (const pm_call_node_t *) node;
3703
3708
  pm_dump_json_location(buffer, parser, &cast->base.location);
3704
3709
 
3705
- // Dump the flags field
3710
+ // Dump the CallNodeFlags field
3706
3711
  pm_buffer_append_byte(buffer, ',');
3707
- pm_buffer_append_string(buffer, "\"flags\":", 8);
3712
+ pm_buffer_append_string(buffer, "\"CallNodeFlags\":", 16);
3708
3713
  size_t flags = 0;
3709
3714
  pm_buffer_append_byte(buffer, '[');
3710
3715
  if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_SAFE_NAVIGATION)) {
@@ -3806,9 +3811,9 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
3806
3811
  const pm_call_operator_write_node_t *cast = (const pm_call_operator_write_node_t *) node;
3807
3812
  pm_dump_json_location(buffer, parser, &cast->base.location);
3808
3813
 
3809
- // Dump the flags field
3814
+ // Dump the CallNodeFlags field
3810
3815
  pm_buffer_append_byte(buffer, ',');
3811
- pm_buffer_append_string(buffer, "\"flags\":", 8);
3816
+ pm_buffer_append_string(buffer, "\"CallNodeFlags\":", 16);
3812
3817
  size_t flags = 0;
3813
3818
  pm_buffer_append_byte(buffer, '[');
3814
3819
  if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_SAFE_NAVIGATION)) {
@@ -3894,9 +3899,9 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
3894
3899
  const pm_call_or_write_node_t *cast = (const pm_call_or_write_node_t *) node;
3895
3900
  pm_dump_json_location(buffer, parser, &cast->base.location);
3896
3901
 
3897
- // Dump the flags field
3902
+ // Dump the CallNodeFlags field
3898
3903
  pm_buffer_append_byte(buffer, ',');
3899
- pm_buffer_append_string(buffer, "\"flags\":", 8);
3904
+ pm_buffer_append_string(buffer, "\"CallNodeFlags\":", 16);
3900
3905
  size_t flags = 0;
3901
3906
  pm_buffer_append_byte(buffer, '[');
3902
3907
  if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_SAFE_NAVIGATION)) {
@@ -3977,9 +3982,9 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
3977
3982
  const pm_call_target_node_t *cast = (const pm_call_target_node_t *) node;
3978
3983
  pm_dump_json_location(buffer, parser, &cast->base.location);
3979
3984
 
3980
- // Dump the flags field
3985
+ // Dump the CallNodeFlags field
3981
3986
  pm_buffer_append_byte(buffer, ',');
3982
- pm_buffer_append_string(buffer, "\"flags\":", 8);
3987
+ pm_buffer_append_string(buffer, "\"CallNodeFlags\":", 16);
3983
3988
  size_t flags = 0;
3984
3989
  pm_buffer_append_byte(buffer, '[');
3985
3990
  if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_SAFE_NAVIGATION)) {
@@ -4078,11 +4083,11 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
4078
4083
  }
4079
4084
  pm_buffer_append_byte(buffer, ']');
4080
4085
 
4081
- // Dump the consequent field
4086
+ // Dump the else_clause field
4082
4087
  pm_buffer_append_byte(buffer, ',');
4083
- pm_buffer_append_string(buffer, "\"consequent\":", 13);
4084
- if (cast->consequent != NULL) {
4085
- pm_dump_json(buffer, parser, (const pm_node_t *) cast->consequent);
4088
+ pm_buffer_append_string(buffer, "\"else_clause\":", 14);
4089
+ if (cast->else_clause != NULL) {
4090
+ pm_dump_json(buffer, parser, (const pm_node_t *) cast->else_clause);
4086
4091
  } else {
4087
4092
  pm_buffer_append_string(buffer, "null", 4);
4088
4093
  }
@@ -4127,11 +4132,11 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
4127
4132
  }
4128
4133
  pm_buffer_append_byte(buffer, ']');
4129
4134
 
4130
- // Dump the consequent field
4135
+ // Dump the else_clause field
4131
4136
  pm_buffer_append_byte(buffer, ',');
4132
- pm_buffer_append_string(buffer, "\"consequent\":", 13);
4133
- if (cast->consequent != NULL) {
4134
- pm_dump_json(buffer, parser, (const pm_node_t *) cast->consequent);
4137
+ pm_buffer_append_string(buffer, "\"else_clause\":", 14);
4138
+ if (cast->else_clause != NULL) {
4139
+ pm_dump_json(buffer, parser, (const pm_node_t *) cast->else_clause);
4135
4140
  } else {
4136
4141
  pm_buffer_append_string(buffer, "null", 4);
4137
4142
  }
@@ -5015,9 +5020,9 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
5015
5020
  const pm_flip_flop_node_t *cast = (const pm_flip_flop_node_t *) node;
5016
5021
  pm_dump_json_location(buffer, parser, &cast->base.location);
5017
5022
 
5018
- // Dump the flags field
5023
+ // Dump the RangeFlags field
5019
5024
  pm_buffer_append_byte(buffer, ',');
5020
- pm_buffer_append_string(buffer, "\"flags\":", 8);
5025
+ pm_buffer_append_string(buffer, "\"RangeFlags\":", 13);
5021
5026
  size_t flags = 0;
5022
5027
  pm_buffer_append_byte(buffer, '[');
5023
5028
  if (PM_NODE_FLAG_P(cast, PM_RANGE_FLAGS_EXCLUDE_END)) {
@@ -5430,11 +5435,11 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
5430
5435
  pm_buffer_append_string(buffer, "null", 4);
5431
5436
  }
5432
5437
 
5433
- // Dump the consequent field
5438
+ // Dump the subsequent field
5434
5439
  pm_buffer_append_byte(buffer, ',');
5435
- pm_buffer_append_string(buffer, "\"consequent\":", 13);
5436
- if (cast->consequent != NULL) {
5437
- pm_dump_json(buffer, parser, (const pm_node_t *) cast->consequent);
5440
+ pm_buffer_append_string(buffer, "\"subsequent\":", 13);
5441
+ if (cast->subsequent != NULL) {
5442
+ pm_dump_json(buffer, parser, (const pm_node_t *) cast->subsequent);
5438
5443
  } else {
5439
5444
  pm_buffer_append_string(buffer, "null", 4);
5440
5445
  }
@@ -5531,9 +5536,9 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
5531
5536
  const pm_index_and_write_node_t *cast = (const pm_index_and_write_node_t *) node;
5532
5537
  pm_dump_json_location(buffer, parser, &cast->base.location);
5533
5538
 
5534
- // Dump the flags field
5539
+ // Dump the CallNodeFlags field
5535
5540
  pm_buffer_append_byte(buffer, ',');
5536
- pm_buffer_append_string(buffer, "\"flags\":", 8);
5541
+ pm_buffer_append_string(buffer, "\"CallNodeFlags\":", 16);
5537
5542
  size_t flags = 0;
5538
5543
  pm_buffer_append_byte(buffer, '[');
5539
5544
  if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_SAFE_NAVIGATION)) {
@@ -5623,9 +5628,9 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
5623
5628
  const pm_index_operator_write_node_t *cast = (const pm_index_operator_write_node_t *) node;
5624
5629
  pm_dump_json_location(buffer, parser, &cast->base.location);
5625
5630
 
5626
- // Dump the flags field
5631
+ // Dump the CallNodeFlags field
5627
5632
  pm_buffer_append_byte(buffer, ',');
5628
- pm_buffer_append_string(buffer, "\"flags\":", 8);
5633
+ pm_buffer_append_string(buffer, "\"CallNodeFlags\":", 16);
5629
5634
  size_t flags = 0;
5630
5635
  pm_buffer_append_byte(buffer, '[');
5631
5636
  if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_SAFE_NAVIGATION)) {
@@ -5720,9 +5725,9 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
5720
5725
  const pm_index_or_write_node_t *cast = (const pm_index_or_write_node_t *) node;
5721
5726
  pm_dump_json_location(buffer, parser, &cast->base.location);
5722
5727
 
5723
- // Dump the flags field
5728
+ // Dump the CallNodeFlags field
5724
5729
  pm_buffer_append_byte(buffer, ',');
5725
- pm_buffer_append_string(buffer, "\"flags\":", 8);
5730
+ pm_buffer_append_string(buffer, "\"CallNodeFlags\":", 16);
5726
5731
  size_t flags = 0;
5727
5732
  pm_buffer_append_byte(buffer, '[');
5728
5733
  if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_SAFE_NAVIGATION)) {
@@ -5812,9 +5817,9 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
5812
5817
  const pm_index_target_node_t *cast = (const pm_index_target_node_t *) node;
5813
5818
  pm_dump_json_location(buffer, parser, &cast->base.location);
5814
5819
 
5815
- // Dump the flags field
5820
+ // Dump the CallNodeFlags field
5816
5821
  pm_buffer_append_byte(buffer, ',');
5817
- pm_buffer_append_string(buffer, "\"flags\":", 8);
5822
+ pm_buffer_append_string(buffer, "\"CallNodeFlags\":", 16);
5818
5823
  size_t flags = 0;
5819
5824
  pm_buffer_append_byte(buffer, '[');
5820
5825
  if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_SAFE_NAVIGATION)) {
@@ -6030,9 +6035,9 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
6030
6035
  const pm_integer_node_t *cast = (const pm_integer_node_t *) node;
6031
6036
  pm_dump_json_location(buffer, parser, &cast->base.location);
6032
6037
 
6033
- // Dump the flags field
6038
+ // Dump the IntegerBaseFlags field
6034
6039
  pm_buffer_append_byte(buffer, ',');
6035
- pm_buffer_append_string(buffer, "\"flags\":", 8);
6040
+ pm_buffer_append_string(buffer, "\"IntegerBaseFlags\":", 19);
6036
6041
  size_t flags = 0;
6037
6042
  pm_buffer_append_byte(buffer, '[');
6038
6043
  if (PM_NODE_FLAG_P(cast, PM_INTEGER_BASE_FLAGS_BINARY)) {
@@ -6071,9 +6076,9 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
6071
6076
  const pm_interpolated_match_last_line_node_t *cast = (const pm_interpolated_match_last_line_node_t *) node;
6072
6077
  pm_dump_json_location(buffer, parser, &cast->base.location);
6073
6078
 
6074
- // Dump the flags field
6079
+ // Dump the RegularExpressionFlags field
6075
6080
  pm_buffer_append_byte(buffer, ',');
6076
- pm_buffer_append_string(buffer, "\"flags\":", 8);
6081
+ pm_buffer_append_string(buffer, "\"RegularExpressionFlags\":", 25);
6077
6082
  size_t flags = 0;
6078
6083
  pm_buffer_append_byte(buffer, '[');
6079
6084
  if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE)) {
@@ -6164,9 +6169,9 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
6164
6169
  const pm_interpolated_regular_expression_node_t *cast = (const pm_interpolated_regular_expression_node_t *) node;
6165
6170
  pm_dump_json_location(buffer, parser, &cast->base.location);
6166
6171
 
6167
- // Dump the flags field
6172
+ // Dump the RegularExpressionFlags field
6168
6173
  pm_buffer_append_byte(buffer, ',');
6169
- pm_buffer_append_string(buffer, "\"flags\":", 8);
6174
+ pm_buffer_append_string(buffer, "\"RegularExpressionFlags\":", 25);
6170
6175
  size_t flags = 0;
6171
6176
  pm_buffer_append_byte(buffer, '[');
6172
6177
  if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE)) {
@@ -6257,9 +6262,9 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
6257
6262
  const pm_interpolated_string_node_t *cast = (const pm_interpolated_string_node_t *) node;
6258
6263
  pm_dump_json_location(buffer, parser, &cast->base.location);
6259
6264
 
6260
- // Dump the flags field
6265
+ // Dump the InterpolatedStringNodeFlags field
6261
6266
  pm_buffer_append_byte(buffer, ',');
6262
- pm_buffer_append_string(buffer, "\"flags\":", 8);
6267
+ pm_buffer_append_string(buffer, "\"InterpolatedStringNodeFlags\":", 30);
6263
6268
  size_t flags = 0;
6264
6269
  pm_buffer_append_byte(buffer, '[');
6265
6270
  if (PM_NODE_FLAG_P(cast, PM_INTERPOLATED_STRING_NODE_FLAGS_FROZEN)) {
@@ -6401,9 +6406,9 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
6401
6406
  const pm_keyword_hash_node_t *cast = (const pm_keyword_hash_node_t *) node;
6402
6407
  pm_dump_json_location(buffer, parser, &cast->base.location);
6403
6408
 
6404
- // Dump the flags field
6409
+ // Dump the KeywordHashNodeFlags field
6405
6410
  pm_buffer_append_byte(buffer, ',');
6406
- pm_buffer_append_string(buffer, "\"flags\":", 8);
6411
+ pm_buffer_append_string(buffer, "\"KeywordHashNodeFlags\":", 23);
6407
6412
  size_t flags = 0;
6408
6413
  pm_buffer_append_byte(buffer, '[');
6409
6414
  if (PM_NODE_FLAG_P(cast, PM_KEYWORD_HASH_NODE_FLAGS_SYMBOL_KEYS)) {
@@ -6434,9 +6439,9 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
6434
6439
  const pm_keyword_rest_parameter_node_t *cast = (const pm_keyword_rest_parameter_node_t *) node;
6435
6440
  pm_dump_json_location(buffer, parser, &cast->base.location);
6436
6441
 
6437
- // Dump the flags field
6442
+ // Dump the ParameterFlags field
6438
6443
  pm_buffer_append_byte(buffer, ',');
6439
- pm_buffer_append_string(buffer, "\"flags\":", 8);
6444
+ pm_buffer_append_string(buffer, "\"ParameterFlags\":", 17);
6440
6445
  size_t flags = 0;
6441
6446
  pm_buffer_append_byte(buffer, '[');
6442
6447
  if (PM_NODE_FLAG_P(cast, PM_PARAMETER_FLAGS_REPEATED_PARAMETER)) {
@@ -6711,9 +6716,9 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
6711
6716
  const pm_match_last_line_node_t *cast = (const pm_match_last_line_node_t *) node;
6712
6717
  pm_dump_json_location(buffer, parser, &cast->base.location);
6713
6718
 
6714
- // Dump the flags field
6719
+ // Dump the RegularExpressionFlags field
6715
6720
  pm_buffer_append_byte(buffer, ',');
6716
- pm_buffer_append_string(buffer, "\"flags\":", 8);
6721
+ pm_buffer_append_string(buffer, "\"RegularExpressionFlags\":", 25);
6717
6722
  size_t flags = 0;
6718
6723
  pm_buffer_append_byte(buffer, '[');
6719
6724
  if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE)) {
@@ -7147,9 +7152,9 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
7147
7152
  const pm_optional_keyword_parameter_node_t *cast = (const pm_optional_keyword_parameter_node_t *) node;
7148
7153
  pm_dump_json_location(buffer, parser, &cast->base.location);
7149
7154
 
7150
- // Dump the flags field
7155
+ // Dump the ParameterFlags field
7151
7156
  pm_buffer_append_byte(buffer, ',');
7152
- pm_buffer_append_string(buffer, "\"flags\":", 8);
7157
+ pm_buffer_append_string(buffer, "\"ParameterFlags\":", 17);
7153
7158
  size_t flags = 0;
7154
7159
  pm_buffer_append_byte(buffer, '[');
7155
7160
  if (PM_NODE_FLAG_P(cast, PM_PARAMETER_FLAGS_REPEATED_PARAMETER)) {
@@ -7183,9 +7188,9 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
7183
7188
  const pm_optional_parameter_node_t *cast = (const pm_optional_parameter_node_t *) node;
7184
7189
  pm_dump_json_location(buffer, parser, &cast->base.location);
7185
7190
 
7186
- // Dump the flags field
7191
+ // Dump the ParameterFlags field
7187
7192
  pm_buffer_append_byte(buffer, ',');
7188
- pm_buffer_append_string(buffer, "\"flags\":", 8);
7193
+ pm_buffer_append_string(buffer, "\"ParameterFlags\":", 17);
7189
7194
  size_t flags = 0;
7190
7195
  pm_buffer_append_byte(buffer, '[');
7191
7196
  if (PM_NODE_FLAG_P(cast, PM_PARAMETER_FLAGS_REPEATED_PARAMETER)) {
@@ -7500,9 +7505,9 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
7500
7505
  const pm_range_node_t *cast = (const pm_range_node_t *) node;
7501
7506
  pm_dump_json_location(buffer, parser, &cast->base.location);
7502
7507
 
7503
- // Dump the flags field
7508
+ // Dump the RangeFlags field
7504
7509
  pm_buffer_append_byte(buffer, ',');
7505
- pm_buffer_append_string(buffer, "\"flags\":", 8);
7510
+ pm_buffer_append_string(buffer, "\"RangeFlags\":", 13);
7506
7511
  size_t flags = 0;
7507
7512
  pm_buffer_append_byte(buffer, '[');
7508
7513
  if (PM_NODE_FLAG_P(cast, PM_RANGE_FLAGS_EXCLUDE_END)) {
@@ -7544,9 +7549,9 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
7544
7549
  const pm_rational_node_t *cast = (const pm_rational_node_t *) node;
7545
7550
  pm_dump_json_location(buffer, parser, &cast->base.location);
7546
7551
 
7547
- // Dump the flags field
7552
+ // Dump the IntegerBaseFlags field
7548
7553
  pm_buffer_append_byte(buffer, ',');
7549
- pm_buffer_append_string(buffer, "\"flags\":", 8);
7554
+ pm_buffer_append_string(buffer, "\"IntegerBaseFlags\":", 19);
7550
7555
  size_t flags = 0;
7551
7556
  pm_buffer_append_byte(buffer, '[');
7552
7557
  if (PM_NODE_FLAG_P(cast, PM_INTEGER_BASE_FLAGS_BINARY)) {
@@ -7599,9 +7604,9 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
7599
7604
  const pm_regular_expression_node_t *cast = (const pm_regular_expression_node_t *) node;
7600
7605
  pm_dump_json_location(buffer, parser, &cast->base.location);
7601
7606
 
7602
- // Dump the flags field
7607
+ // Dump the RegularExpressionFlags field
7603
7608
  pm_buffer_append_byte(buffer, ',');
7604
- pm_buffer_append_string(buffer, "\"flags\":", 8);
7609
+ pm_buffer_append_string(buffer, "\"RegularExpressionFlags\":", 25);
7605
7610
  size_t flags = 0;
7606
7611
  pm_buffer_append_byte(buffer, '[');
7607
7612
  if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE)) {
@@ -7693,9 +7698,9 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
7693
7698
  const pm_required_keyword_parameter_node_t *cast = (const pm_required_keyword_parameter_node_t *) node;
7694
7699
  pm_dump_json_location(buffer, parser, &cast->base.location);
7695
7700
 
7696
- // Dump the flags field
7701
+ // Dump the ParameterFlags field
7697
7702
  pm_buffer_append_byte(buffer, ',');
7698
- pm_buffer_append_string(buffer, "\"flags\":", 8);
7703
+ pm_buffer_append_string(buffer, "\"ParameterFlags\":", 17);
7699
7704
  size_t flags = 0;
7700
7705
  pm_buffer_append_byte(buffer, '[');
7701
7706
  if (PM_NODE_FLAG_P(cast, PM_PARAMETER_FLAGS_REPEATED_PARAMETER)) {
@@ -7724,9 +7729,9 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
7724
7729
  const pm_required_parameter_node_t *cast = (const pm_required_parameter_node_t *) node;
7725
7730
  pm_dump_json_location(buffer, parser, &cast->base.location);
7726
7731
 
7727
- // Dump the flags field
7732
+ // Dump the ParameterFlags field
7728
7733
  pm_buffer_append_byte(buffer, ',');
7729
- pm_buffer_append_string(buffer, "\"flags\":", 8);
7734
+ pm_buffer_append_string(buffer, "\"ParameterFlags\":", 17);
7730
7735
  size_t flags = 0;
7731
7736
  pm_buffer_append_byte(buffer, '[');
7732
7737
  if (PM_NODE_FLAG_P(cast, PM_PARAMETER_FLAGS_REPEATED_PARAMETER)) {
@@ -7818,11 +7823,11 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
7818
7823
  pm_buffer_append_string(buffer, "null", 4);
7819
7824
  }
7820
7825
 
7821
- // Dump the consequent field
7826
+ // Dump the subsequent field
7822
7827
  pm_buffer_append_byte(buffer, ',');
7823
- pm_buffer_append_string(buffer, "\"consequent\":", 13);
7824
- if (cast->consequent != NULL) {
7825
- pm_dump_json(buffer, parser, (const pm_node_t *) cast->consequent);
7828
+ pm_buffer_append_string(buffer, "\"subsequent\":", 13);
7829
+ if (cast->subsequent != NULL) {
7830
+ pm_dump_json(buffer, parser, (const pm_node_t *) cast->subsequent);
7826
7831
  } else {
7827
7832
  pm_buffer_append_string(buffer, "null", 4);
7828
7833
  }
@@ -7836,9 +7841,9 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
7836
7841
  const pm_rest_parameter_node_t *cast = (const pm_rest_parameter_node_t *) node;
7837
7842
  pm_dump_json_location(buffer, parser, &cast->base.location);
7838
7843
 
7839
- // Dump the flags field
7844
+ // Dump the ParameterFlags field
7840
7845
  pm_buffer_append_byte(buffer, ',');
7841
- pm_buffer_append_string(buffer, "\"flags\":", 8);
7846
+ pm_buffer_append_string(buffer, "\"ParameterFlags\":", 17);
7842
7847
  size_t flags = 0;
7843
7848
  pm_buffer_append_byte(buffer, '[');
7844
7849
  if (PM_NODE_FLAG_P(cast, PM_PARAMETER_FLAGS_REPEATED_PARAMETER)) {
@@ -7889,18 +7894,6 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
7889
7894
  const pm_return_node_t *cast = (const pm_return_node_t *) node;
7890
7895
  pm_dump_json_location(buffer, parser, &cast->base.location);
7891
7896
 
7892
- // Dump the flags field
7893
- pm_buffer_append_byte(buffer, ',');
7894
- pm_buffer_append_string(buffer, "\"flags\":", 8);
7895
- size_t flags = 0;
7896
- pm_buffer_append_byte(buffer, '[');
7897
- if (PM_NODE_FLAG_P(cast, PM_RETURN_NODE_FLAGS_REDUNDANT)) {
7898
- if (flags != 0) pm_buffer_append_byte(buffer, ',');
7899
- pm_buffer_append_string(buffer, "\"REDUNDANT\"", 11);
7900
- flags++;
7901
- }
7902
- pm_buffer_append_byte(buffer, ']');
7903
-
7904
7897
  // Dump the keyword_loc field
7905
7898
  pm_buffer_append_byte(buffer, ',');
7906
7899
  pm_buffer_append_string(buffer, "\"keyword_loc\":", 14);
@@ -7933,9 +7926,9 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
7933
7926
  const pm_shareable_constant_node_t *cast = (const pm_shareable_constant_node_t *) node;
7934
7927
  pm_dump_json_location(buffer, parser, &cast->base.location);
7935
7928
 
7936
- // Dump the flags field
7929
+ // Dump the ShareableConstantNodeFlags field
7937
7930
  pm_buffer_append_byte(buffer, ',');
7938
- pm_buffer_append_string(buffer, "\"flags\":", 8);
7931
+ pm_buffer_append_string(buffer, "\"ShareableConstantNodeFlags\":", 29);
7939
7932
  size_t flags = 0;
7940
7933
  pm_buffer_append_byte(buffer, '[');
7941
7934
  if (PM_NODE_FLAG_P(cast, PM_SHAREABLE_CONSTANT_NODE_FLAGS_LITERAL)) {
@@ -8028,9 +8021,9 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
8028
8021
  const pm_source_file_node_t *cast = (const pm_source_file_node_t *) node;
8029
8022
  pm_dump_json_location(buffer, parser, &cast->base.location);
8030
8023
 
8031
- // Dump the flags field
8024
+ // Dump the StringFlags field
8032
8025
  pm_buffer_append_byte(buffer, ',');
8033
- pm_buffer_append_string(buffer, "\"flags\":", 8);
8026
+ pm_buffer_append_string(buffer, "\"StringFlags\":", 14);
8034
8027
  size_t flags = 0;
8035
8028
  pm_buffer_append_byte(buffer, '[');
8036
8029
  if (PM_NODE_FLAG_P(cast, PM_STRING_FLAGS_FORCED_UTF8_ENCODING)) {
@@ -8125,9 +8118,9 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
8125
8118
  const pm_string_node_t *cast = (const pm_string_node_t *) node;
8126
8119
  pm_dump_json_location(buffer, parser, &cast->base.location);
8127
8120
 
8128
- // Dump the flags field
8121
+ // Dump the StringFlags field
8129
8122
  pm_buffer_append_byte(buffer, ',');
8130
- pm_buffer_append_string(buffer, "\"flags\":", 8);
8123
+ pm_buffer_append_string(buffer, "\"StringFlags\":", 14);
8131
8124
  size_t flags = 0;
8132
8125
  pm_buffer_append_byte(buffer, '[');
8133
8126
  if (PM_NODE_FLAG_P(cast, PM_STRING_FLAGS_FORCED_UTF8_ENCODING)) {
@@ -8242,9 +8235,9 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
8242
8235
  const pm_symbol_node_t *cast = (const pm_symbol_node_t *) node;
8243
8236
  pm_dump_json_location(buffer, parser, &cast->base.location);
8244
8237
 
8245
- // Dump the flags field
8238
+ // Dump the SymbolFlags field
8246
8239
  pm_buffer_append_byte(buffer, ',');
8247
- pm_buffer_append_string(buffer, "\"flags\":", 8);
8240
+ pm_buffer_append_string(buffer, "\"SymbolFlags\":", 14);
8248
8241
  size_t flags = 0;
8249
8242
  pm_buffer_append_byte(buffer, '[');
8250
8243
  if (PM_NODE_FLAG_P(cast, PM_SYMBOL_FLAGS_FORCED_UTF8_ENCODING)) {
@@ -8371,11 +8364,11 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
8371
8364
  pm_buffer_append_string(buffer, "null", 4);
8372
8365
  }
8373
8366
 
8374
- // Dump the consequent field
8367
+ // Dump the else_clause field
8375
8368
  pm_buffer_append_byte(buffer, ',');
8376
- pm_buffer_append_string(buffer, "\"consequent\":", 13);
8377
- if (cast->consequent != NULL) {
8378
- pm_dump_json(buffer, parser, (const pm_node_t *) cast->consequent);
8369
+ pm_buffer_append_string(buffer, "\"else_clause\":", 14);
8370
+ if (cast->else_clause != NULL) {
8371
+ pm_dump_json(buffer, parser, (const pm_node_t *) cast->else_clause);
8379
8372
  } else {
8380
8373
  pm_buffer_append_string(buffer, "null", 4);
8381
8374
  }
@@ -8398,9 +8391,9 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
8398
8391
  const pm_until_node_t *cast = (const pm_until_node_t *) node;
8399
8392
  pm_dump_json_location(buffer, parser, &cast->base.location);
8400
8393
 
8401
- // Dump the flags field
8394
+ // Dump the LoopFlags field
8402
8395
  pm_buffer_append_byte(buffer, ',');
8403
- pm_buffer_append_string(buffer, "\"flags\":", 8);
8396
+ pm_buffer_append_string(buffer, "\"LoopFlags\":", 12);
8404
8397
  size_t flags = 0;
8405
8398
  pm_buffer_append_byte(buffer, '[');
8406
8399
  if (PM_NODE_FLAG_P(cast, PM_LOOP_FLAGS_BEGIN_MODIFIER)) {
@@ -8491,9 +8484,9 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
8491
8484
  const pm_while_node_t *cast = (const pm_while_node_t *) node;
8492
8485
  pm_dump_json_location(buffer, parser, &cast->base.location);
8493
8486
 
8494
- // Dump the flags field
8487
+ // Dump the LoopFlags field
8495
8488
  pm_buffer_append_byte(buffer, ',');
8496
- pm_buffer_append_string(buffer, "\"flags\":", 8);
8489
+ pm_buffer_append_string(buffer, "\"LoopFlags\":", 12);
8497
8490
  size_t flags = 0;
8498
8491
  pm_buffer_append_byte(buffer, '[');
8499
8492
  if (PM_NODE_FLAG_P(cast, PM_LOOP_FLAGS_BEGIN_MODIFIER)) {
@@ -8540,9 +8533,9 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
8540
8533
  const pm_x_string_node_t *cast = (const pm_x_string_node_t *) node;
8541
8534
  pm_dump_json_location(buffer, parser, &cast->base.location);
8542
8535
 
8543
- // Dump the flags field
8536
+ // Dump the EncodingFlags field
8544
8537
  pm_buffer_append_byte(buffer, ',');
8545
- pm_buffer_append_string(buffer, "\"flags\":", 8);
8538
+ pm_buffer_append_string(buffer, "\"EncodingFlags\":", 16);
8546
8539
  size_t flags = 0;
8547
8540
  pm_buffer_append_byte(buffer, '[');
8548
8541
  if (PM_NODE_FLAG_P(cast, PM_ENCODING_FLAGS_FORCED_UTF8_ENCODING)) {