herb 0.7.1-aarch64-linux-musl → 0.7.3-aarch64-linux-musl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (137) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +2 -0
  3. data/README.md +1 -1
  4. data/Rakefile +46 -1
  5. data/config.yml +714 -0
  6. data/ext/herb/error_helpers.c +27 -27
  7. data/ext/herb/extconf.rb +2 -1
  8. data/ext/herb/extension.c +6 -6
  9. data/ext/herb/extension_helpers.c +3 -3
  10. data/ext/herb/nodes.c +35 -35
  11. data/herb.gemspec +3 -0
  12. data/lib/herb/3.0/herb.so +0 -0
  13. data/lib/herb/3.1/herb.so +0 -0
  14. data/lib/herb/3.2/herb.so +0 -0
  15. data/lib/herb/3.3/herb.so +0 -0
  16. data/lib/herb/3.4/herb.so +0 -0
  17. data/lib/herb/engine/debug_visitor.rb +41 -21
  18. data/lib/herb/engine.rb +20 -6
  19. data/lib/herb/version.rb +1 -1
  20. data/sig/herb/engine/debug_visitor.rbs +3 -3
  21. data/sig/herb/engine.rbs +5 -0
  22. data/src/analyze.c +5 -9
  23. data/src/analyze_helpers.c +17 -6
  24. data/src/include/pretty_print.h +1 -1
  25. data/src/include/version.h +1 -1
  26. data/src/parser.c +6 -9
  27. data/src/pretty_print.c +1 -1
  28. data/templates/ext/herb/error_helpers.c.erb +85 -0
  29. data/templates/ext/herb/error_helpers.h.erb +12 -0
  30. data/templates/ext/herb/nodes.c.erb +90 -0
  31. data/templates/ext/herb/nodes.h.erb +9 -0
  32. data/templates/javascript/packages/core/src/errors.ts.erb +193 -0
  33. data/templates/javascript/packages/core/src/node-type-guards.ts.erb +325 -0
  34. data/templates/javascript/packages/core/src/nodes.ts.erb +414 -0
  35. data/templates/javascript/packages/core/src/visitor.ts.erb +29 -0
  36. data/templates/javascript/packages/node/extension/error_helpers.cpp.erb +113 -0
  37. data/templates/javascript/packages/node/extension/error_helpers.h.erb +17 -0
  38. data/templates/javascript/packages/node/extension/nodes.cpp.erb +111 -0
  39. data/templates/javascript/packages/node/extension/nodes.h.erb +17 -0
  40. data/templates/lib/herb/ast/nodes.rb.erb +117 -0
  41. data/templates/lib/herb/errors.rb.erb +106 -0
  42. data/templates/lib/herb/visitor.rb.erb +28 -0
  43. data/templates/sig/serialized_ast_errors.rbs.erb +10 -0
  44. data/templates/sig/serialized_ast_nodes.rbs.erb +10 -0
  45. data/templates/src/ast_nodes.c.erb +145 -0
  46. data/templates/src/ast_pretty_print.c.erb +97 -0
  47. data/templates/src/errors.c.erb +245 -0
  48. data/templates/src/include/ast_nodes.h.erb +46 -0
  49. data/templates/src/include/ast_pretty_print.h.erb +14 -0
  50. data/templates/src/include/errors.h.erb +58 -0
  51. data/templates/src/visitor.c.erb +47 -0
  52. data/templates/template.rb +406 -0
  53. data/templates/wasm/error_helpers.cpp.erb +93 -0
  54. data/templates/wasm/error_helpers.h.erb +15 -0
  55. data/templates/wasm/nodes.cpp.erb +79 -0
  56. data/templates/wasm/nodes.h.erb +15 -0
  57. data/vendor/prism/Rakefile +75 -0
  58. data/vendor/prism/config.yml +4713 -0
  59. data/vendor/prism/include/prism/ast.h +8190 -0
  60. data/vendor/prism/include/prism/defines.h +260 -0
  61. data/vendor/prism/include/prism/diagnostic.h +455 -0
  62. data/vendor/prism/include/prism/encoding.h +283 -0
  63. data/vendor/prism/include/prism/node.h +129 -0
  64. data/vendor/prism/include/prism/options.h +482 -0
  65. data/vendor/prism/include/prism/pack.h +163 -0
  66. data/vendor/prism/include/prism/parser.h +933 -0
  67. data/vendor/prism/include/prism/prettyprint.h +34 -0
  68. data/vendor/prism/include/prism/regexp.h +43 -0
  69. data/vendor/prism/include/prism/static_literals.h +121 -0
  70. data/vendor/prism/include/prism/util/pm_buffer.h +236 -0
  71. data/vendor/prism/include/prism/util/pm_char.h +204 -0
  72. data/vendor/prism/include/prism/util/pm_constant_pool.h +218 -0
  73. data/vendor/prism/include/prism/util/pm_integer.h +130 -0
  74. data/vendor/prism/include/prism/util/pm_list.h +103 -0
  75. data/vendor/prism/include/prism/util/pm_memchr.h +29 -0
  76. data/vendor/prism/include/prism/util/pm_newline_list.h +113 -0
  77. data/vendor/prism/include/prism/util/pm_string.h +200 -0
  78. data/vendor/prism/include/prism/util/pm_strncasecmp.h +32 -0
  79. data/vendor/prism/include/prism/util/pm_strpbrk.h +46 -0
  80. data/vendor/prism/include/prism/version.h +29 -0
  81. data/vendor/prism/include/prism.h +408 -0
  82. data/vendor/prism/src/diagnostic.c +848 -0
  83. data/vendor/prism/src/encoding.c +5235 -0
  84. data/vendor/prism/src/node.c +8676 -0
  85. data/vendor/prism/src/options.c +328 -0
  86. data/vendor/prism/src/pack.c +509 -0
  87. data/vendor/prism/src/prettyprint.c +8941 -0
  88. data/vendor/prism/src/prism.c +23302 -0
  89. data/vendor/prism/src/regexp.c +790 -0
  90. data/vendor/prism/src/serialize.c +2268 -0
  91. data/vendor/prism/src/static_literals.c +617 -0
  92. data/vendor/prism/src/token_type.c +703 -0
  93. data/vendor/prism/src/util/pm_buffer.c +357 -0
  94. data/vendor/prism/src/util/pm_char.c +318 -0
  95. data/vendor/prism/src/util/pm_constant_pool.c +342 -0
  96. data/vendor/prism/src/util/pm_integer.c +670 -0
  97. data/vendor/prism/src/util/pm_list.c +49 -0
  98. data/vendor/prism/src/util/pm_memchr.c +35 -0
  99. data/vendor/prism/src/util/pm_newline_list.c +125 -0
  100. data/vendor/prism/src/util/pm_string.c +383 -0
  101. data/vendor/prism/src/util/pm_strncasecmp.c +36 -0
  102. data/vendor/prism/src/util/pm_strpbrk.c +206 -0
  103. data/vendor/prism/templates/ext/prism/api_node.c.erb +282 -0
  104. data/vendor/prism/templates/include/prism/ast.h.erb +226 -0
  105. data/vendor/prism/templates/include/prism/diagnostic.h.erb +130 -0
  106. data/vendor/prism/templates/java/org/prism/AbstractNodeVisitor.java.erb +22 -0
  107. data/vendor/prism/templates/java/org/prism/Loader.java.erb +434 -0
  108. data/vendor/prism/templates/java/org/prism/Nodes.java.erb +403 -0
  109. data/vendor/prism/templates/javascript/src/deserialize.js.erb +448 -0
  110. data/vendor/prism/templates/javascript/src/nodes.js.erb +197 -0
  111. data/vendor/prism/templates/javascript/src/visitor.js.erb +78 -0
  112. data/vendor/prism/templates/lib/prism/compiler.rb.erb +43 -0
  113. data/vendor/prism/templates/lib/prism/dispatcher.rb.erb +103 -0
  114. data/vendor/prism/templates/lib/prism/dot_visitor.rb.erb +189 -0
  115. data/vendor/prism/templates/lib/prism/dsl.rb.erb +133 -0
  116. data/vendor/prism/templates/lib/prism/inspect_visitor.rb.erb +131 -0
  117. data/vendor/prism/templates/lib/prism/mutation_compiler.rb.erb +19 -0
  118. data/vendor/prism/templates/lib/prism/node.rb.erb +515 -0
  119. data/vendor/prism/templates/lib/prism/reflection.rb.erb +136 -0
  120. data/vendor/prism/templates/lib/prism/serialize.rb.erb +602 -0
  121. data/vendor/prism/templates/lib/prism/visitor.rb.erb +55 -0
  122. data/vendor/prism/templates/rbi/prism/dsl.rbi.erb +68 -0
  123. data/vendor/prism/templates/rbi/prism/node.rbi.erb +164 -0
  124. data/vendor/prism/templates/rbi/prism/visitor.rbi.erb +18 -0
  125. data/vendor/prism/templates/sig/prism/_private/dot_visitor.rbs.erb +45 -0
  126. data/vendor/prism/templates/sig/prism/dsl.rbs.erb +31 -0
  127. data/vendor/prism/templates/sig/prism/mutation_compiler.rbs.erb +7 -0
  128. data/vendor/prism/templates/sig/prism/node.rbs.erb +132 -0
  129. data/vendor/prism/templates/sig/prism/visitor.rbs.erb +17 -0
  130. data/vendor/prism/templates/sig/prism.rbs.erb +89 -0
  131. data/vendor/prism/templates/src/diagnostic.c.erb +523 -0
  132. data/vendor/prism/templates/src/node.c.erb +333 -0
  133. data/vendor/prism/templates/src/prettyprint.c.erb +166 -0
  134. data/vendor/prism/templates/src/serialize.c.erb +406 -0
  135. data/vendor/prism/templates/src/token_type.c.erb +369 -0
  136. data/vendor/prism/templates/template.rb +689 -0
  137. metadata +112 -2
data/config.yml ADDED
@@ -0,0 +1,714 @@
1
+ errors:
2
+ fields:
3
+ - name: message
4
+ type: string
5
+
6
+ - name: start
7
+ type: position
8
+
9
+ - name: end
10
+ type: position
11
+
12
+ types:
13
+ - name: UnexpectedError
14
+ message:
15
+ template: "%s. Expected: `%s`, found: `%s`."
16
+ arguments:
17
+ - description
18
+ - expected
19
+ - found
20
+
21
+ fields:
22
+ - name: description
23
+ type: string
24
+
25
+ - name: expected
26
+ type: string
27
+
28
+ - name: found
29
+ type: string
30
+
31
+ - name: UnexpectedTokenError
32
+ message:
33
+ template: "Found `%s` when expecting `%s` at (%zu:%zu)."
34
+ arguments:
35
+ - token_type_to_string(found->type)
36
+ - token_type_to_string(expected_type)
37
+ - found->location->start->line
38
+ - found->location->start->column
39
+
40
+ fields:
41
+ - name: expected_type
42
+ type: token_type
43
+
44
+ - name: found
45
+ type: token
46
+
47
+ - name: MissingOpeningTagError
48
+ message:
49
+ template: "Found closing tag `</%s>` at (%zu:%zu) without a matching opening tag."
50
+ arguments:
51
+ - closing_tag->value
52
+ - closing_tag->location->start->line
53
+ - closing_tag->location->start->column
54
+
55
+ fields:
56
+ - name: closing_tag
57
+ type: token
58
+
59
+ - name: MissingClosingTagError
60
+ message:
61
+ template: "Opening tag `<%s>` at (%zu:%zu) doesn't have a matching closing tag `</%s>`."
62
+ arguments:
63
+ - opening_tag->value
64
+ - opening_tag->location->start->line
65
+ - opening_tag->location->start->column
66
+ - opening_tag->value
67
+
68
+ fields:
69
+ - name: opening_tag
70
+ type: token
71
+
72
+ - name: TagNamesMismatchError
73
+ message:
74
+ template: "Opening tag `<%s>` at (%zu:%zu) closed with `</%s>` at (%zu:%zu)."
75
+ arguments:
76
+ - opening_tag->value
77
+ - opening_tag->location->start->line
78
+ - opening_tag->location->start->column
79
+ - closing_tag->value
80
+ - closing_tag->location->start->line
81
+ - closing_tag->location->start->column
82
+
83
+ fields:
84
+ - name: opening_tag
85
+ type: token
86
+
87
+ - name: closing_tag
88
+ type: token
89
+
90
+ - name: QuotesMismatchError
91
+ message:
92
+ template: "String opened with %s but closed with %s at (%zu:%zu)."
93
+ arguments:
94
+ - opening_quote->value
95
+ - closing_quote->value
96
+ - closing_quote->location->start->line
97
+ - closing_quote->location->start->column
98
+
99
+ fields:
100
+ - name: opening_quote
101
+ type: token
102
+
103
+ - name: closing_quote
104
+ type: token
105
+
106
+ - name: VoidElementClosingTagError
107
+ message:
108
+ template: "`%s` is a void element and should not be used as a closing tag. Use `<%s>` or `<%s />` instead of `</%s>`."
109
+ arguments:
110
+ - tag_name->value
111
+ - tag_name->value
112
+ - tag_name->value
113
+ - tag_name->value
114
+
115
+ fields:
116
+ - name: tag_name
117
+ type: token
118
+
119
+ - name: expected
120
+ type: string
121
+
122
+ - name: found
123
+ type: string
124
+
125
+ - name: UnclosedElementError
126
+ message:
127
+ template: "Tag `<%s>` opened at (%zu:%zu) was never closed before the end of document."
128
+ arguments:
129
+ - opening_tag->value
130
+ - opening_tag->location->start->line
131
+ - opening_tag->location->start->column
132
+
133
+ fields:
134
+ - name: opening_tag
135
+ type: token
136
+
137
+ - name: RubyParseError
138
+ message:
139
+ template: "%s: %s"
140
+ arguments:
141
+ - diagnostic_id
142
+ - error_message
143
+
144
+ fields:
145
+ - name: error_message
146
+ type: string
147
+
148
+ - name: diagnostic_id
149
+ type: string
150
+
151
+ - name: level
152
+ type: string
153
+
154
+ warnings:
155
+ fields: []
156
+ types: []
157
+
158
+ nodes:
159
+ # fields:
160
+ # - name: type
161
+ # type: ast_node_type
162
+ #
163
+ # - name: start
164
+ # type: position
165
+ #
166
+ # - name: end
167
+ # type: position
168
+ #
169
+ # - name: errors
170
+ # type: array
171
+ # kind: error
172
+ #
173
+ # # - name: warnings
174
+ # # type: array
175
+ # # kind: warning
176
+ #
177
+ # # - name: range
178
+ # # type: range
179
+
180
+ types:
181
+ - name: DocumentNode
182
+ fields:
183
+ - name: children
184
+ type: array
185
+ kind: Node
186
+
187
+ - name: LiteralNode
188
+ fields:
189
+ - name: content
190
+ type: string
191
+
192
+ - name: HTMLOpenTagNode
193
+ fields:
194
+ - name: tag_opening
195
+ type: token
196
+
197
+ - name: tag_name
198
+ type: token
199
+
200
+ - name: tag_closing
201
+ type: token
202
+
203
+ - name: children
204
+ type: array
205
+ kind: Node
206
+
207
+ - name: is_void
208
+ type: boolean
209
+
210
+ - name: HTMLCloseTagNode
211
+ fields:
212
+ - name: tag_opening
213
+ type: token
214
+
215
+ - name: tag_name
216
+ type: token
217
+
218
+ - name: children
219
+ type: array
220
+ kind: Node
221
+
222
+ - name: tag_closing
223
+ type: token
224
+
225
+ - name: HTMLElementNode
226
+ fields:
227
+ - name: open_tag
228
+ type: node
229
+ kind: HTMLOpenTagNode
230
+
231
+ - name: tag_name
232
+ type: token
233
+
234
+ - name: body
235
+ type: array
236
+ kind: Node
237
+
238
+ - name: close_tag
239
+ type: node
240
+ kind: HTMLCloseTagNode
241
+
242
+ - name: is_void
243
+ type: boolean
244
+
245
+ - name: source
246
+ type: element_source
247
+
248
+ - name: HTMLAttributeValueNode
249
+ fields:
250
+ - name: open_quote
251
+ type: token
252
+
253
+ - name: children
254
+ type: array
255
+ kind: Node
256
+
257
+ - name: close_quote
258
+ type: token
259
+
260
+ - name: quoted
261
+ type: boolean
262
+
263
+ - name: HTMLAttributeNameNode
264
+ fields:
265
+ - name: children
266
+ type: array
267
+ kind: Node
268
+ # kind:
269
+ # - LiteralNode
270
+ # - ERBContentNode
271
+ # - WhitespaceNode
272
+
273
+ - name: HTMLAttributeNode
274
+ fields:
275
+ - name: name
276
+ type: node
277
+ kind: HTMLAttributeNameNode
278
+
279
+ - name: equals
280
+ type: token
281
+
282
+ - name: value
283
+ type: node
284
+ kind: HTMLAttributeValueNode
285
+
286
+ - name: HTMLTextNode
287
+ fields:
288
+ - name: content
289
+ type: string
290
+
291
+ - name: HTMLCommentNode
292
+ fields:
293
+ - name: comment_start
294
+ type: token
295
+
296
+ - name: children
297
+ type: array
298
+ kind: Node
299
+
300
+ - name: comment_end
301
+ type: token
302
+
303
+ - name: HTMLDoctypeNode
304
+ fields:
305
+ - name: tag_opening
306
+ type: token
307
+
308
+ - name: children
309
+ type: array
310
+ kind: Node
311
+
312
+ - name: tag_closing
313
+ type: token
314
+
315
+ - name: XMLDeclarationNode
316
+ fields:
317
+ - name: tag_opening
318
+ type: token
319
+
320
+ - name: children
321
+ type: array
322
+ kind: Node
323
+
324
+ - name: tag_closing
325
+ type: token
326
+
327
+ - name: CDATANode
328
+ fields:
329
+ - name: tag_opening
330
+ type: token
331
+
332
+ - name: children
333
+ type: array
334
+ kind: Node
335
+
336
+ - name: tag_closing
337
+ type: token
338
+
339
+ - name: WhitespaceNode
340
+ fields:
341
+ - name: value
342
+ type: token
343
+
344
+ - name: ERBContentNode
345
+ fields:
346
+ - name: tag_opening
347
+ type: token
348
+
349
+ - name: content
350
+ type: token
351
+
352
+ - name: tag_closing
353
+ type: token
354
+
355
+ - name: analyzed_ruby
356
+ type: analyzed_ruby
357
+
358
+ - name: parsed
359
+ type: boolean
360
+
361
+ - name: valid
362
+ type: boolean
363
+
364
+ - name: ERBEndNode
365
+ fields:
366
+ - name: tag_opening
367
+ type: token
368
+
369
+ - name: content
370
+ type: token
371
+
372
+ - name: tag_closing
373
+ type: token
374
+
375
+ - name: ERBElseNode
376
+ fields:
377
+ - name: tag_opening
378
+ type: token
379
+
380
+ - name: content
381
+ type: token
382
+
383
+ - name: tag_closing
384
+ type: token
385
+
386
+ - name: statements
387
+ type: array
388
+ kind: Node
389
+
390
+ - name: ERBIfNode
391
+ fields:
392
+ - name: tag_opening
393
+ type: token
394
+
395
+ - name: content
396
+ type: token
397
+
398
+ - name: tag_closing
399
+ type: token
400
+
401
+ # - name: predicate
402
+ # type: prism_node
403
+
404
+ - name: statements
405
+ type: array
406
+ kind: Node
407
+
408
+ - name: subsequent
409
+ type: node
410
+ kind: Node
411
+ # kind:
412
+ # - ERBIfNode
413
+ # - ERBElseNode
414
+
415
+ - name: end_node
416
+ type: node
417
+ kind: ERBEndNode
418
+
419
+ - name: ERBBlockNode
420
+ fields:
421
+ - name: tag_opening
422
+ type: token
423
+
424
+ - name: content
425
+ type: token
426
+
427
+ - name: tag_closing
428
+ type: token
429
+
430
+ # - name: block_type
431
+ # type: string
432
+
433
+ # - name: opener
434
+ # type: prism_node
435
+
436
+ - name: body
437
+ type: array
438
+ kind: Node
439
+
440
+ - name: end_node
441
+ type: node
442
+ kind: ERBEndNode
443
+
444
+ - name: ERBWhenNode
445
+ fields:
446
+ - name: tag_opening
447
+ type: token
448
+
449
+ - name: content
450
+ type: token
451
+
452
+ - name: tag_closing
453
+ type: token
454
+
455
+ # - name: conditions
456
+ # type: array
457
+ # kind: prism_node
458
+
459
+ - name: statements
460
+ type: array
461
+ kind: Node
462
+
463
+ - name: ERBCaseNode
464
+ fields:
465
+ - name: tag_opening
466
+ type: token
467
+
468
+ - name: content
469
+ type: token
470
+
471
+ - name: tag_closing
472
+ type: token
473
+
474
+ - name: children
475
+ type: array
476
+ kind: Node
477
+
478
+ # - name: predicate
479
+ # type: prism_node
480
+
481
+ - name: conditions
482
+ type: array
483
+ kind: ERBWhenNode
484
+
485
+ - name: else_clause
486
+ type: node
487
+ kind: ERBElseNode
488
+
489
+ - name: end_node
490
+ type: node
491
+ kind: ERBEndNode
492
+
493
+ - name: ERBCaseMatchNode
494
+ fields:
495
+ - name: tag_opening
496
+ type: token
497
+
498
+ - name: content
499
+ type: token
500
+
501
+ - name: tag_closing
502
+ type: token
503
+
504
+ - name: children
505
+ type: array
506
+ kind: Node
507
+
508
+ # - name: predicate
509
+ # type: prism_node
510
+
511
+ - name: conditions
512
+ type: array
513
+ kind: ERBInNode
514
+
515
+ - name: else_clause
516
+ type: node
517
+ kind: ERBElseNode
518
+
519
+ - name: end_node
520
+ type: node
521
+ kind: ERBEndNode
522
+
523
+ - name: ERBWhileNode
524
+ fields:
525
+ - name: tag_opening
526
+ type: token
527
+
528
+ - name: content
529
+ type: token
530
+
531
+ - name: tag_closing
532
+ type: token
533
+
534
+ # - name: predicate
535
+ # type: prism_node
536
+
537
+ - name: statements
538
+ type: array
539
+ kind: Node
540
+
541
+ - name: end_node
542
+ type: node
543
+ kind: ERBEndNode
544
+
545
+ - name: ERBUntilNode
546
+ fields:
547
+ - name: tag_opening
548
+ type: token
549
+
550
+ - name: content
551
+ type: token
552
+
553
+ - name: tag_closing
554
+ type: token
555
+
556
+ # - name: predicate
557
+ # type: prism_node
558
+
559
+ - name: statements
560
+ type: array
561
+ kind: Node
562
+
563
+ - name: end_node
564
+ type: node
565
+ kind: ERBEndNode
566
+
567
+ - name: ERBForNode
568
+ fields:
569
+ - name: tag_opening
570
+ type: token
571
+
572
+ - name: content
573
+ type: token
574
+
575
+ - name: tag_closing
576
+ type: token
577
+
578
+ # - name: index
579
+ # type: prism_node
580
+
581
+ # - name: collection
582
+ # type: prism_node
583
+
584
+ - name: statements
585
+ type: array
586
+ kind: Node
587
+
588
+ - name: end_node
589
+ type: node
590
+ kind: ERBEndNode
591
+
592
+ - name: ERBRescueNode
593
+ fields:
594
+ - name: tag_opening
595
+ type: token
596
+
597
+ - name: content
598
+ type: token
599
+
600
+ - name: tag_closing
601
+ type: token
602
+
603
+ # - name: exceptions
604
+ # type: array
605
+ # kind: Node
606
+
607
+ # - name: reference
608
+ # type: prism_node
609
+
610
+ - name: statements
611
+ type: array
612
+ kind: Node
613
+
614
+ - name: subsequent
615
+ type: node
616
+ kind: ERBRescueNode
617
+
618
+ - name: ERBEnsureNode
619
+ fields:
620
+ - name: tag_opening
621
+ type: token
622
+
623
+ - name: content
624
+ type: token
625
+
626
+ - name: tag_closing
627
+ type: token
628
+
629
+ - name: statements
630
+ type: array
631
+ kind: Node
632
+
633
+ - name: ERBBeginNode
634
+ fields:
635
+ - name: tag_opening
636
+ type: token
637
+
638
+ - name: content
639
+ type: token
640
+
641
+ - name: tag_closing
642
+ type: token
643
+
644
+ - name: statements
645
+ type: array
646
+ kind: Node
647
+
648
+ - name: rescue_clause
649
+ type: node
650
+ kind: ERBRescueNode
651
+
652
+ - name: else_clause
653
+ type: node
654
+ kind: ERBElseNode
655
+
656
+ - name: ensure_clause
657
+ type: node
658
+ kind: ERBEnsureNode
659
+
660
+ - name: end_node
661
+ type: node
662
+ kind: ERBEndNode
663
+
664
+ - name: ERBUnlessNode
665
+ fields:
666
+ - name: tag_opening
667
+ type: token
668
+
669
+ - name: content
670
+ type: token
671
+
672
+ - name: tag_closing
673
+ type: token
674
+
675
+ # - name: predicate
676
+ # type: prism_node
677
+
678
+ - name: statements
679
+ type: array
680
+ kind: Node
681
+
682
+ - name: else_clause
683
+ type: node
684
+ kind: ERBElseNode
685
+
686
+ - name: end_node
687
+ type: node
688
+ kind: ERBEndNode
689
+
690
+ - name: ERBYieldNode
691
+ fields:
692
+ - name: tag_opening
693
+ type: token
694
+
695
+ - name: content
696
+ type: token
697
+
698
+ - name: tag_closing
699
+ type: token
700
+
701
+ - name: ERBInNode
702
+ fields:
703
+ - name: tag_opening
704
+ type: token
705
+
706
+ - name: content
707
+ type: token
708
+
709
+ - name: tag_closing
710
+ type: token
711
+
712
+ - name: statements
713
+ type: array
714
+ kind: Node