prism 1.4.0 → 1.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +89 -1
  3. data/Makefile +14 -6
  4. data/README.md +3 -1
  5. data/config.yml +294 -41
  6. data/docs/build_system.md +2 -2
  7. data/docs/cruby_compilation.md +1 -1
  8. data/docs/design.md +2 -2
  9. data/docs/parser_translation.md +8 -23
  10. data/docs/releasing.md +4 -25
  11. data/docs/ripper_translation.md +1 -1
  12. data/docs/ruby_api.md +1 -0
  13. data/ext/prism/api_node.c +9 -3
  14. data/ext/prism/extconf.rb +1 -1
  15. data/ext/prism/extension.c +24 -3
  16. data/ext/prism/extension.h +1 -1
  17. data/include/prism/ast.h +360 -70
  18. data/include/prism/diagnostic.h +7 -0
  19. data/include/prism/options.h +49 -3
  20. data/include/prism/parser.h +3 -0
  21. data/include/prism/regexp.h +2 -2
  22. data/include/prism/util/pm_buffer.h +8 -0
  23. data/include/prism/util/pm_integer.h +4 -0
  24. data/include/prism/util/pm_list.h +6 -0
  25. data/include/prism/util/pm_string.h +12 -2
  26. data/include/prism/version.h +2 -2
  27. data/include/prism.h +40 -15
  28. data/lib/prism/compiler.rb +457 -152
  29. data/lib/prism/desugar_compiler.rb +1 -0
  30. data/lib/prism/dispatcher.rb +16 -0
  31. data/lib/prism/dot_visitor.rb +10 -1
  32. data/lib/prism/dsl.rb +5 -2
  33. data/lib/prism/ffi.rb +28 -10
  34. data/lib/prism/inspect_visitor.rb +4 -0
  35. data/lib/prism/lex_compat.rb +18 -75
  36. data/lib/prism/lex_ripper.rb +64 -0
  37. data/lib/prism/mutation_compiler.rb +3 -0
  38. data/lib/prism/node.rb +1663 -350
  39. data/lib/prism/node_ext.rb +4 -1
  40. data/lib/prism/pack.rb +2 -0
  41. data/lib/prism/parse_result/comments.rb +1 -0
  42. data/lib/prism/parse_result/errors.rb +1 -0
  43. data/lib/prism/parse_result/newlines.rb +1 -0
  44. data/lib/prism/parse_result.rb +3 -15
  45. data/lib/prism/pattern.rb +1 -0
  46. data/lib/prism/polyfill/scan_byte.rb +14 -0
  47. data/lib/prism/polyfill/warn.rb +36 -0
  48. data/lib/prism/reflection.rb +4 -1
  49. data/lib/prism/relocation.rb +1 -0
  50. data/lib/prism/serialize.rb +30 -22
  51. data/lib/prism/string_query.rb +1 -0
  52. data/lib/prism/translation/parser/builder.rb +1 -0
  53. data/lib/prism/translation/parser/compiler.rb +63 -41
  54. data/lib/prism/translation/parser/lexer.rb +29 -21
  55. data/lib/prism/translation/parser.rb +25 -4
  56. data/lib/prism/translation/parser_current.rb +26 -0
  57. data/lib/prism/translation/parser_versions.rb +36 -0
  58. data/lib/prism/translation/ripper/lexer.rb +46 -0
  59. data/lib/prism/translation/ripper/sexp.rb +1 -0
  60. data/lib/prism/translation/ripper.rb +44 -5
  61. data/lib/prism/translation/ruby_parser.rb +341 -23
  62. data/lib/prism/translation.rb +7 -3
  63. data/lib/prism/visitor.rb +458 -153
  64. data/lib/prism.rb +23 -1
  65. data/prism.gemspec +9 -7
  66. data/rbi/prism/dsl.rbi +6 -6
  67. data/rbi/prism/node.rbi +42 -17
  68. data/rbi/prism/translation/parser_versions.rbi +23 -0
  69. data/sig/prism/dispatcher.rbs +3 -0
  70. data/sig/prism/dsl.rbs +5 -5
  71. data/sig/prism/node.rbs +463 -38
  72. data/sig/prism/node_ext.rbs +84 -17
  73. data/sig/prism/parse_result/comments.rbs +38 -0
  74. data/sig/prism/parse_result.rbs +4 -0
  75. data/sig/prism/reflection.rbs +1 -1
  76. data/sig/prism.rbs +4 -0
  77. data/src/diagnostic.c +13 -1
  78. data/src/encoding.c +172 -67
  79. data/src/node.c +11 -0
  80. data/src/options.c +17 -7
  81. data/src/prettyprint.c +18 -0
  82. data/src/prism.c +1533 -2038
  83. data/src/serialize.c +9 -1
  84. data/src/token_type.c +38 -36
  85. data/src/util/pm_constant_pool.c +1 -1
  86. data/src/util/pm_string.c +6 -8
  87. metadata +11 -9
  88. data/lib/prism/translation/parser33.rb +0 -12
  89. data/lib/prism/translation/parser34.rb +0 -12
  90. data/lib/prism/translation/parser35.rb +0 -12
  91. data/rbi/prism/translation/parser33.rbi +0 -6
  92. data/rbi/prism/translation/parser34.rbi +0 -6
  93. data/rbi/prism/translation/parser35.rbi +0 -6
data/lib/prism/node.rb CHANGED
@@ -1,9 +1,12 @@
1
1
  # frozen_string_literal: true
2
+ # :markup: markdown
2
3
 
3
4
  =begin
5
+ --
4
6
  This file is generated by the templates/template.rb script and should not be
5
7
  modified manually. See templates/lib/prism/node.rb.erb
6
8
  if you are looking to modify the template
9
+ ++
7
10
  =end
8
11
 
9
12
  module Prism
@@ -195,7 +198,7 @@ module Prism
195
198
  while (node = queue.shift)
196
199
  result << node
197
200
 
198
- node.compact_child_nodes.each do |child_node|
201
+ node.each_child_node do |child_node|
199
202
  child_location = child_node.location
200
203
 
201
204
  start_line = child_location.start_line
@@ -267,6 +270,13 @@ module Prism
267
270
 
268
271
  alias deconstruct child_nodes
269
272
 
273
+ # With a block given, yields each child node. Without a block, returns
274
+ # an enumerator that contains each child node. Excludes any `nil`s in
275
+ # the place of optional nodes that were not present.
276
+ def each_child_node
277
+ raise NoMethodError, "undefined method `each_child_node' for #{inspect}"
278
+ end
279
+
270
280
  # Returns an array of child nodes, excluding any `nil`s in the place of
271
281
  # optional nodes that were not present.
272
282
  def compact_child_nodes
@@ -330,11 +340,19 @@ module Prism
330
340
  visitor.visit_alias_global_variable_node(self)
331
341
  end
332
342
 
333
- # def child_nodes: () -> Array[nil | Node]
343
+ # def child_nodes: () -> Array[Node?]
334
344
  def child_nodes
335
345
  [new_name, old_name]
336
346
  end
337
347
 
348
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
349
+ def each_child_node
350
+ return to_enum(:each_child_node) unless block_given?
351
+
352
+ yield new_name
353
+ yield old_name
354
+ end
355
+
338
356
  # def compact_child_nodes: () -> Array[Node]
339
357
  def compact_child_nodes
340
358
  [new_name, old_name]
@@ -350,7 +368,7 @@ module Prism
350
368
  AliasGlobalVariableNode.new(source, node_id, location, flags, new_name, old_name, keyword_loc)
351
369
  end
352
370
 
353
- # def deconstruct: () -> Array[nil | Node]
371
+ # def deconstruct: () -> Array[Node?]
354
372
  alias deconstruct child_nodes
355
373
 
356
374
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, new_name: GlobalVariableReadNode | BackReferenceReadNode | NumberedReferenceReadNode, old_name: GlobalVariableReadNode | BackReferenceReadNode | NumberedReferenceReadNode | SymbolNode | MissingNode, keyword_loc: Location }
@@ -437,11 +455,19 @@ module Prism
437
455
  visitor.visit_alias_method_node(self)
438
456
  end
439
457
 
440
- # def child_nodes: () -> Array[nil | Node]
458
+ # def child_nodes: () -> Array[Node?]
441
459
  def child_nodes
442
460
  [new_name, old_name]
443
461
  end
444
462
 
463
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
464
+ def each_child_node
465
+ return to_enum(:each_child_node) unless block_given?
466
+
467
+ yield new_name
468
+ yield old_name
469
+ end
470
+
445
471
  # def compact_child_nodes: () -> Array[Node]
446
472
  def compact_child_nodes
447
473
  [new_name, old_name]
@@ -457,7 +483,7 @@ module Prism
457
483
  AliasMethodNode.new(source, node_id, location, flags, new_name, old_name, keyword_loc)
458
484
  end
459
485
 
460
- # def deconstruct: () -> Array[nil | Node]
486
+ # def deconstruct: () -> Array[Node?]
461
487
  alias deconstruct child_nodes
462
488
 
463
489
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, new_name: SymbolNode | InterpolatedSymbolNode, old_name: SymbolNode | InterpolatedSymbolNode | GlobalVariableReadNode | MissingNode, keyword_loc: Location }
@@ -556,11 +582,19 @@ module Prism
556
582
  visitor.visit_alternation_pattern_node(self)
557
583
  end
558
584
 
559
- # def child_nodes: () -> Array[nil | Node]
585
+ # def child_nodes: () -> Array[Node?]
560
586
  def child_nodes
561
587
  [left, right]
562
588
  end
563
589
 
590
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
591
+ def each_child_node
592
+ return to_enum(:each_child_node) unless block_given?
593
+
594
+ yield left
595
+ yield right
596
+ end
597
+
564
598
  # def compact_child_nodes: () -> Array[Node]
565
599
  def compact_child_nodes
566
600
  [left, right]
@@ -576,7 +610,7 @@ module Prism
576
610
  AlternationPatternNode.new(source, node_id, location, flags, left, right, operator_loc)
577
611
  end
578
612
 
579
- # def deconstruct: () -> Array[nil | Node]
613
+ # def deconstruct: () -> Array[Node?]
580
614
  alias deconstruct child_nodes
581
615
 
582
616
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, left: Prism::node, right: Prism::node, operator_loc: Location }
@@ -663,11 +697,19 @@ module Prism
663
697
  visitor.visit_and_node(self)
664
698
  end
665
699
 
666
- # def child_nodes: () -> Array[nil | Node]
700
+ # def child_nodes: () -> Array[Node?]
667
701
  def child_nodes
668
702
  [left, right]
669
703
  end
670
704
 
705
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
706
+ def each_child_node
707
+ return to_enum(:each_child_node) unless block_given?
708
+
709
+ yield left
710
+ yield right
711
+ end
712
+
671
713
  # def compact_child_nodes: () -> Array[Node]
672
714
  def compact_child_nodes
673
715
  [left, right]
@@ -683,7 +725,7 @@ module Prism
683
725
  AndNode.new(source, node_id, location, flags, left, right, operator_loc)
684
726
  end
685
727
 
686
- # def deconstruct: () -> Array[nil | Node]
728
+ # def deconstruct: () -> Array[Node?]
687
729
  alias deconstruct child_nodes
688
730
 
689
731
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, left: Prism::node, right: Prism::node, operator_loc: Location }
@@ -774,11 +816,18 @@ module Prism
774
816
  visitor.visit_arguments_node(self)
775
817
  end
776
818
 
777
- # def child_nodes: () -> Array[nil | Node]
819
+ # def child_nodes: () -> Array[Node?]
778
820
  def child_nodes
779
821
  [*arguments]
780
822
  end
781
823
 
824
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
825
+ def each_child_node
826
+ return to_enum(:each_child_node) unless block_given?
827
+
828
+ arguments.each { |node| yield node }
829
+ end
830
+
782
831
  # def compact_child_nodes: () -> Array[Node]
783
832
  def compact_child_nodes
784
833
  [*arguments]
@@ -794,7 +843,7 @@ module Prism
794
843
  ArgumentsNode.new(source, node_id, location, flags, arguments)
795
844
  end
796
845
 
797
- # def deconstruct: () -> Array[nil | Node]
846
+ # def deconstruct: () -> Array[Node?]
798
847
  alias deconstruct child_nodes
799
848
 
800
849
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, arguments: Array[Prism::node] }
@@ -879,11 +928,18 @@ module Prism
879
928
  visitor.visit_array_node(self)
880
929
  end
881
930
 
882
- # def child_nodes: () -> Array[nil | Node]
931
+ # def child_nodes: () -> Array[Node?]
883
932
  def child_nodes
884
933
  [*elements]
885
934
  end
886
935
 
936
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
937
+ def each_child_node
938
+ return to_enum(:each_child_node) unless block_given?
939
+
940
+ elements.each { |node| yield node }
941
+ end
942
+
887
943
  # def compact_child_nodes: () -> Array[Node]
888
944
  def compact_child_nodes
889
945
  [*elements]
@@ -899,7 +955,7 @@ module Prism
899
955
  ArrayNode.new(source, node_id, location, flags, elements, opening_loc, closing_loc)
900
956
  end
901
957
 
902
- # def deconstruct: () -> Array[nil | Node]
958
+ # def deconstruct: () -> Array[Node?]
903
959
  alias deconstruct child_nodes
904
960
 
905
961
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, elements: Array[Prism::node], opening_loc: Location?, closing_loc: Location? }
@@ -1036,11 +1092,21 @@ module Prism
1036
1092
  visitor.visit_array_pattern_node(self)
1037
1093
  end
1038
1094
 
1039
- # def child_nodes: () -> Array[nil | Node]
1095
+ # def child_nodes: () -> Array[Node?]
1040
1096
  def child_nodes
1041
1097
  [constant, *requireds, rest, *posts]
1042
1098
  end
1043
1099
 
1100
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
1101
+ def each_child_node
1102
+ return to_enum(:each_child_node) unless block_given?
1103
+
1104
+ yield constant if constant
1105
+ requireds.each { |node| yield node }
1106
+ yield rest if rest
1107
+ posts.each { |node| yield node }
1108
+ end
1109
+
1044
1110
  # def compact_child_nodes: () -> Array[Node]
1045
1111
  def compact_child_nodes
1046
1112
  compact = [] #: Array[Prism::node]
@@ -1056,20 +1122,29 @@ module Prism
1056
1122
  [*constant, *requireds, *rest, *posts, *opening_loc, *closing_loc] #: Array[Prism::node | Location]
1057
1123
  end
1058
1124
 
1059
- # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?constant: ConstantReadNode | ConstantPathNode | nil, ?requireds: Array[Prism::node], ?rest: Prism::node?, ?posts: Array[Prism::node], ?opening_loc: Location?, ?closing_loc: Location?) -> ArrayPatternNode
1125
+ # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?constant: ConstantPathNode | ConstantReadNode | nil, ?requireds: Array[Prism::node], ?rest: Prism::node?, ?posts: Array[Prism::node], ?opening_loc: Location?, ?closing_loc: Location?) -> ArrayPatternNode
1060
1126
  def copy(node_id: self.node_id, location: self.location, flags: self.flags, constant: self.constant, requireds: self.requireds, rest: self.rest, posts: self.posts, opening_loc: self.opening_loc, closing_loc: self.closing_loc)
1061
1127
  ArrayPatternNode.new(source, node_id, location, flags, constant, requireds, rest, posts, opening_loc, closing_loc)
1062
1128
  end
1063
1129
 
1064
- # def deconstruct: () -> Array[nil | Node]
1130
+ # def deconstruct: () -> Array[Node?]
1065
1131
  alias deconstruct child_nodes
1066
1132
 
1067
- # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, constant: ConstantReadNode | ConstantPathNode | nil, requireds: Array[Prism::node], rest: Prism::node?, posts: Array[Prism::node], opening_loc: Location?, closing_loc: Location? }
1133
+ # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, constant: ConstantPathNode | ConstantReadNode | nil, requireds: Array[Prism::node], rest: Prism::node?, posts: Array[Prism::node], opening_loc: Location?, closing_loc: Location? }
1068
1134
  def deconstruct_keys(keys)
1069
1135
  { node_id: node_id, location: location, constant: constant, requireds: requireds, rest: rest, posts: posts, opening_loc: opening_loc, closing_loc: closing_loc }
1070
1136
  end
1071
1137
 
1072
- # attr_reader constant: ConstantReadNode | ConstantPathNode | nil
1138
+ # Represents the optional constant preceding the Array
1139
+ #
1140
+ # foo in Bar[]
1141
+ # ^^^
1142
+ #
1143
+ # foo in Bar[1, 2, 3]
1144
+ # ^^^
1145
+ #
1146
+ # foo in Bar::Baz[1, 2, 3]
1147
+ # ^^^^^^^^
1073
1148
  attr_reader :constant
1074
1149
 
1075
1150
  # Represents the required elements of the array pattern.
@@ -1195,11 +1270,19 @@ module Prism
1195
1270
  visitor.visit_assoc_node(self)
1196
1271
  end
1197
1272
 
1198
- # def child_nodes: () -> Array[nil | Node]
1273
+ # def child_nodes: () -> Array[Node?]
1199
1274
  def child_nodes
1200
1275
  [key, value]
1201
1276
  end
1202
1277
 
1278
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
1279
+ def each_child_node
1280
+ return to_enum(:each_child_node) unless block_given?
1281
+
1282
+ yield key
1283
+ yield value
1284
+ end
1285
+
1203
1286
  # def compact_child_nodes: () -> Array[Node]
1204
1287
  def compact_child_nodes
1205
1288
  [key, value]
@@ -1215,7 +1298,7 @@ module Prism
1215
1298
  AssocNode.new(source, node_id, location, flags, key, value, operator_loc)
1216
1299
  end
1217
1300
 
1218
- # def deconstruct: () -> Array[nil | Node]
1301
+ # def deconstruct: () -> Array[Node?]
1219
1302
  alias deconstruct child_nodes
1220
1303
 
1221
1304
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, key: Prism::node, value: Prism::node, operator_loc: Location? }
@@ -1316,11 +1399,18 @@ module Prism
1316
1399
  visitor.visit_assoc_splat_node(self)
1317
1400
  end
1318
1401
 
1319
- # def child_nodes: () -> Array[nil | Node]
1402
+ # def child_nodes: () -> Array[Node?]
1320
1403
  def child_nodes
1321
1404
  [value]
1322
1405
  end
1323
1406
 
1407
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
1408
+ def each_child_node
1409
+ return to_enum(:each_child_node) unless block_given?
1410
+
1411
+ yield value if value
1412
+ end
1413
+
1324
1414
  # def compact_child_nodes: () -> Array[Node]
1325
1415
  def compact_child_nodes
1326
1416
  compact = [] #: Array[Prism::node]
@@ -1338,7 +1428,7 @@ module Prism
1338
1428
  AssocSplatNode.new(source, node_id, location, flags, value, operator_loc)
1339
1429
  end
1340
1430
 
1341
- # def deconstruct: () -> Array[nil | Node]
1431
+ # def deconstruct: () -> Array[Node?]
1342
1432
  alias deconstruct child_nodes
1343
1433
 
1344
1434
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, value: Prism::node?, operator_loc: Location }
@@ -1416,11 +1506,17 @@ module Prism
1416
1506
  visitor.visit_back_reference_read_node(self)
1417
1507
  end
1418
1508
 
1419
- # def child_nodes: () -> Array[nil | Node]
1509
+ # def child_nodes: () -> Array[Node?]
1420
1510
  def child_nodes
1421
1511
  []
1422
1512
  end
1423
1513
 
1514
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
1515
+ def each_child_node
1516
+ return to_enum(:each_child_node) unless block_given?
1517
+
1518
+ end
1519
+
1424
1520
  # def compact_child_nodes: () -> Array[Node]
1425
1521
  def compact_child_nodes
1426
1522
  []
@@ -1436,7 +1532,7 @@ module Prism
1436
1532
  BackReferenceReadNode.new(source, node_id, location, flags, name)
1437
1533
  end
1438
1534
 
1439
- # def deconstruct: () -> Array[nil | Node]
1535
+ # def deconstruct: () -> Array[Node?]
1440
1536
  alias deconstruct child_nodes
1441
1537
 
1442
1538
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol }
@@ -1500,11 +1596,21 @@ module Prism
1500
1596
  visitor.visit_begin_node(self)
1501
1597
  end
1502
1598
 
1503
- # def child_nodes: () -> Array[nil | Node]
1599
+ # def child_nodes: () -> Array[Node?]
1504
1600
  def child_nodes
1505
1601
  [statements, rescue_clause, else_clause, ensure_clause]
1506
1602
  end
1507
1603
 
1604
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
1605
+ def each_child_node
1606
+ return to_enum(:each_child_node) unless block_given?
1607
+
1608
+ yield statements if statements
1609
+ yield rescue_clause if rescue_clause
1610
+ yield else_clause if else_clause
1611
+ yield ensure_clause if ensure_clause
1612
+ end
1613
+
1508
1614
  # def compact_child_nodes: () -> Array[Node]
1509
1615
  def compact_child_nodes
1510
1616
  compact = [] #: Array[Prism::node]
@@ -1525,7 +1631,7 @@ module Prism
1525
1631
  BeginNode.new(source, node_id, location, flags, begin_keyword_loc, statements, rescue_clause, else_clause, ensure_clause, end_keyword_loc)
1526
1632
  end
1527
1633
 
1528
- # def deconstruct: () -> Array[nil | Node]
1634
+ # def deconstruct: () -> Array[Node?]
1529
1635
  alias deconstruct child_nodes
1530
1636
 
1531
1637
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, begin_keyword_loc: Location?, statements: StatementsNode?, rescue_clause: RescueNode?, else_clause: ElseNode?, ensure_clause: EnsureNode?, end_keyword_loc: Location? }
@@ -1659,11 +1765,18 @@ module Prism
1659
1765
  visitor.visit_block_argument_node(self)
1660
1766
  end
1661
1767
 
1662
- # def child_nodes: () -> Array[nil | Node]
1768
+ # def child_nodes: () -> Array[Node?]
1663
1769
  def child_nodes
1664
1770
  [expression]
1665
1771
  end
1666
1772
 
1773
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
1774
+ def each_child_node
1775
+ return to_enum(:each_child_node) unless block_given?
1776
+
1777
+ yield expression if expression
1778
+ end
1779
+
1667
1780
  # def compact_child_nodes: () -> Array[Node]
1668
1781
  def compact_child_nodes
1669
1782
  compact = [] #: Array[Prism::node]
@@ -1681,7 +1794,7 @@ module Prism
1681
1794
  BlockArgumentNode.new(source, node_id, location, flags, expression, operator_loc)
1682
1795
  end
1683
1796
 
1684
- # def deconstruct: () -> Array[nil | Node]
1797
+ # def deconstruct: () -> Array[Node?]
1685
1798
  alias deconstruct child_nodes
1686
1799
 
1687
1800
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, expression: Prism::node?, operator_loc: Location }
@@ -1759,11 +1872,17 @@ module Prism
1759
1872
  visitor.visit_block_local_variable_node(self)
1760
1873
  end
1761
1874
 
1762
- # def child_nodes: () -> Array[nil | Node]
1875
+ # def child_nodes: () -> Array[Node?]
1763
1876
  def child_nodes
1764
1877
  []
1765
1878
  end
1766
1879
 
1880
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
1881
+ def each_child_node
1882
+ return to_enum(:each_child_node) unless block_given?
1883
+
1884
+ end
1885
+
1767
1886
  # def compact_child_nodes: () -> Array[Node]
1768
1887
  def compact_child_nodes
1769
1888
  []
@@ -1779,7 +1898,7 @@ module Prism
1779
1898
  BlockLocalVariableNode.new(source, node_id, location, flags, name)
1780
1899
  end
1781
1900
 
1782
- # def deconstruct: () -> Array[nil | Node]
1901
+ # def deconstruct: () -> Array[Node?]
1783
1902
  alias deconstruct child_nodes
1784
1903
 
1785
1904
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol }
@@ -1845,11 +1964,19 @@ module Prism
1845
1964
  visitor.visit_block_node(self)
1846
1965
  end
1847
1966
 
1848
- # def child_nodes: () -> Array[nil | Node]
1967
+ # def child_nodes: () -> Array[Node?]
1849
1968
  def child_nodes
1850
1969
  [parameters, body]
1851
1970
  end
1852
1971
 
1972
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
1973
+ def each_child_node
1974
+ return to_enum(:each_child_node) unless block_given?
1975
+
1976
+ yield parameters if parameters
1977
+ yield body if body
1978
+ end
1979
+
1853
1980
  # def compact_child_nodes: () -> Array[Node]
1854
1981
  def compact_child_nodes
1855
1982
  compact = [] #: Array[Prism::node]
@@ -1868,7 +1995,7 @@ module Prism
1868
1995
  BlockNode.new(source, node_id, location, flags, locals, parameters, body, opening_loc, closing_loc)
1869
1996
  end
1870
1997
 
1871
- # def deconstruct: () -> Array[nil | Node]
1998
+ # def deconstruct: () -> Array[Node?]
1872
1999
  alias deconstruct child_nodes
1873
2000
 
1874
2001
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, locals: Array[Symbol], parameters: BlockParametersNode | NumberedParametersNode | ItParametersNode | nil, body: StatementsNode | BeginNode | nil, opening_loc: Location, closing_loc: Location }
@@ -1990,11 +2117,17 @@ module Prism
1990
2117
  visitor.visit_block_parameter_node(self)
1991
2118
  end
1992
2119
 
1993
- # def child_nodes: () -> Array[nil | Node]
2120
+ # def child_nodes: () -> Array[Node?]
1994
2121
  def child_nodes
1995
2122
  []
1996
2123
  end
1997
2124
 
2125
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
2126
+ def each_child_node
2127
+ return to_enum(:each_child_node) unless block_given?
2128
+
2129
+ end
2130
+
1998
2131
  # def compact_child_nodes: () -> Array[Node]
1999
2132
  def compact_child_nodes
2000
2133
  []
@@ -2010,7 +2143,7 @@ module Prism
2010
2143
  BlockParameterNode.new(source, node_id, location, flags, name, name_loc, operator_loc)
2011
2144
  end
2012
2145
 
2013
- # def deconstruct: () -> Array[nil | Node]
2146
+ # def deconstruct: () -> Array[Node?]
2014
2147
  alias deconstruct child_nodes
2015
2148
 
2016
2149
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol?, name_loc: Location?, operator_loc: Location }
@@ -2126,11 +2259,19 @@ module Prism
2126
2259
  visitor.visit_block_parameters_node(self)
2127
2260
  end
2128
2261
 
2129
- # def child_nodes: () -> Array[nil | Node]
2262
+ # def child_nodes: () -> Array[Node?]
2130
2263
  def child_nodes
2131
2264
  [parameters, *locals]
2132
2265
  end
2133
2266
 
2267
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
2268
+ def each_child_node
2269
+ return to_enum(:each_child_node) unless block_given?
2270
+
2271
+ yield parameters if parameters
2272
+ locals.each { |node| yield node }
2273
+ end
2274
+
2134
2275
  # def compact_child_nodes: () -> Array[Node]
2135
2276
  def compact_child_nodes
2136
2277
  compact = [] #: Array[Prism::node]
@@ -2149,7 +2290,7 @@ module Prism
2149
2290
  BlockParametersNode.new(source, node_id, location, flags, parameters, locals, opening_loc, closing_loc)
2150
2291
  end
2151
2292
 
2152
- # def deconstruct: () -> Array[nil | Node]
2293
+ # def deconstruct: () -> Array[Node?]
2153
2294
  alias deconstruct child_nodes
2154
2295
 
2155
2296
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, parameters: ParametersNode?, locals: Array[BlockLocalVariableNode], opening_loc: Location?, closing_loc: Location? }
@@ -2286,11 +2427,18 @@ module Prism
2286
2427
  visitor.visit_break_node(self)
2287
2428
  end
2288
2429
 
2289
- # def child_nodes: () -> Array[nil | Node]
2430
+ # def child_nodes: () -> Array[Node?]
2290
2431
  def child_nodes
2291
2432
  [arguments]
2292
2433
  end
2293
2434
 
2435
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
2436
+ def each_child_node
2437
+ return to_enum(:each_child_node) unless block_given?
2438
+
2439
+ yield arguments if arguments
2440
+ end
2441
+
2294
2442
  # def compact_child_nodes: () -> Array[Node]
2295
2443
  def compact_child_nodes
2296
2444
  compact = [] #: Array[Prism::node]
@@ -2308,7 +2456,7 @@ module Prism
2308
2456
  BreakNode.new(source, node_id, location, flags, arguments, keyword_loc)
2309
2457
  end
2310
2458
 
2311
- # def deconstruct: () -> Array[nil | Node]
2459
+ # def deconstruct: () -> Array[Node?]
2312
2460
  alias deconstruct child_nodes
2313
2461
 
2314
2462
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, arguments: ArgumentsNode?, keyword_loc: Location }
@@ -2392,11 +2540,19 @@ module Prism
2392
2540
  visitor.visit_call_and_write_node(self)
2393
2541
  end
2394
2542
 
2395
- # def child_nodes: () -> Array[nil | Node]
2543
+ # def child_nodes: () -> Array[Node?]
2396
2544
  def child_nodes
2397
2545
  [receiver, value]
2398
2546
  end
2399
2547
 
2548
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
2549
+ def each_child_node
2550
+ return to_enum(:each_child_node) unless block_given?
2551
+
2552
+ yield receiver if receiver
2553
+ yield value
2554
+ end
2555
+
2400
2556
  # def compact_child_nodes: () -> Array[Node]
2401
2557
  def compact_child_nodes
2402
2558
  compact = [] #: Array[Prism::node]
@@ -2415,7 +2571,7 @@ module Prism
2415
2571
  CallAndWriteNode.new(source, node_id, location, flags, receiver, call_operator_loc, message_loc, read_name, write_name, operator_loc, value)
2416
2572
  end
2417
2573
 
2418
- # def deconstruct: () -> Array[nil | Node]
2574
+ # def deconstruct: () -> Array[Node?]
2419
2575
  alias deconstruct child_nodes
2420
2576
 
2421
2577
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, receiver: Prism::node?, call_operator_loc: Location?, message_loc: Location?, read_name: Symbol, write_name: Symbol, operator_loc: Location, value: Prism::node }
@@ -2593,7 +2749,7 @@ module Prism
2593
2749
  # ^^^^^^^^
2594
2750
  class CallNode < Node
2595
2751
  # Initialize a new CallNode node.
2596
- def initialize(source, node_id, location, flags, receiver, call_operator_loc, name, message_loc, opening_loc, arguments, closing_loc, block)
2752
+ def initialize(source, node_id, location, flags, receiver, call_operator_loc, name, message_loc, opening_loc, arguments, closing_loc, equal_loc, block)
2597
2753
  @source = source
2598
2754
  @node_id = node_id
2599
2755
  @location = location
@@ -2605,6 +2761,7 @@ module Prism
2605
2761
  @opening_loc = opening_loc
2606
2762
  @arguments = arguments
2607
2763
  @closing_loc = closing_loc
2764
+ @equal_loc = equal_loc
2608
2765
  @block = block
2609
2766
  end
2610
2767
 
@@ -2613,11 +2770,20 @@ module Prism
2613
2770
  visitor.visit_call_node(self)
2614
2771
  end
2615
2772
 
2616
- # def child_nodes: () -> Array[nil | Node]
2773
+ # def child_nodes: () -> Array[Node?]
2617
2774
  def child_nodes
2618
2775
  [receiver, arguments, block]
2619
2776
  end
2620
2777
 
2778
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
2779
+ def each_child_node
2780
+ return to_enum(:each_child_node) unless block_given?
2781
+
2782
+ yield receiver if receiver
2783
+ yield arguments if arguments
2784
+ yield block if block
2785
+ end
2786
+
2621
2787
  # def compact_child_nodes: () -> Array[Node]
2622
2788
  def compact_child_nodes
2623
2789
  compact = [] #: Array[Prism::node]
@@ -2629,20 +2795,20 @@ module Prism
2629
2795
 
2630
2796
  # def comment_targets: () -> Array[Node | Location]
2631
2797
  def comment_targets
2632
- [*receiver, *call_operator_loc, *message_loc, *opening_loc, *arguments, *closing_loc, *block] #: Array[Prism::node | Location]
2798
+ [*receiver, *call_operator_loc, *message_loc, *opening_loc, *arguments, *closing_loc, *equal_loc, *block] #: Array[Prism::node | Location]
2633
2799
  end
2634
2800
 
2635
- # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?receiver: Prism::node?, ?call_operator_loc: Location?, ?name: Symbol, ?message_loc: Location?, ?opening_loc: Location?, ?arguments: ArgumentsNode?, ?closing_loc: Location?, ?block: BlockNode | BlockArgumentNode | nil) -> CallNode
2636
- def copy(node_id: self.node_id, location: self.location, flags: self.flags, receiver: self.receiver, call_operator_loc: self.call_operator_loc, name: self.name, message_loc: self.message_loc, opening_loc: self.opening_loc, arguments: self.arguments, closing_loc: self.closing_loc, block: self.block)
2637
- CallNode.new(source, node_id, location, flags, receiver, call_operator_loc, name, message_loc, opening_loc, arguments, closing_loc, block)
2801
+ # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?receiver: Prism::node?, ?call_operator_loc: Location?, ?name: Symbol, ?message_loc: Location?, ?opening_loc: Location?, ?arguments: ArgumentsNode?, ?closing_loc: Location?, ?equal_loc: Location?, ?block: BlockNode | BlockArgumentNode | nil) -> CallNode
2802
+ def copy(node_id: self.node_id, location: self.location, flags: self.flags, receiver: self.receiver, call_operator_loc: self.call_operator_loc, name: self.name, message_loc: self.message_loc, opening_loc: self.opening_loc, arguments: self.arguments, closing_loc: self.closing_loc, equal_loc: self.equal_loc, block: self.block)
2803
+ CallNode.new(source, node_id, location, flags, receiver, call_operator_loc, name, message_loc, opening_loc, arguments, closing_loc, equal_loc, block)
2638
2804
  end
2639
2805
 
2640
- # def deconstruct: () -> Array[nil | Node]
2806
+ # def deconstruct: () -> Array[Node?]
2641
2807
  alias deconstruct child_nodes
2642
2808
 
2643
- # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, receiver: Prism::node?, call_operator_loc: Location?, name: Symbol, message_loc: Location?, opening_loc: Location?, arguments: ArgumentsNode?, closing_loc: Location?, block: BlockNode | BlockArgumentNode | nil }
2809
+ # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, receiver: Prism::node?, call_operator_loc: Location?, name: Symbol, message_loc: Location?, opening_loc: Location?, arguments: ArgumentsNode?, closing_loc: Location?, equal_loc: Location?, block: BlockNode | BlockArgumentNode | nil }
2644
2810
  def deconstruct_keys(keys)
2645
- { node_id: node_id, location: location, receiver: receiver, call_operator_loc: call_operator_loc, name: name, message_loc: message_loc, opening_loc: opening_loc, arguments: arguments, closing_loc: closing_loc, block: block }
2811
+ { node_id: node_id, location: location, receiver: receiver, call_operator_loc: call_operator_loc, name: name, message_loc: message_loc, opening_loc: opening_loc, arguments: arguments, closing_loc: closing_loc, equal_loc: equal_loc, block: block }
2646
2812
  end
2647
2813
 
2648
2814
  # def safe_navigation?: () -> bool
@@ -2779,6 +2945,31 @@ module Prism
2779
2945
  repository.enter(node_id, :closing_loc) unless @closing_loc.nil?
2780
2946
  end
2781
2947
 
2948
+ # Represents the location of the equal sign, in the case that this is an attribute write.
2949
+ #
2950
+ # foo.bar = value
2951
+ # ^
2952
+ #
2953
+ # foo[bar] = value
2954
+ # ^
2955
+ def equal_loc
2956
+ location = @equal_loc
2957
+ case location
2958
+ when nil
2959
+ nil
2960
+ when Location
2961
+ location
2962
+ else
2963
+ @equal_loc = Location.new(source, location >> 32, location & 0xFFFFFFFF)
2964
+ end
2965
+ end
2966
+
2967
+ # Save the equal_loc location using the given saved source so that
2968
+ # it can be retrieved later.
2969
+ def save_equal_loc(repository)
2970
+ repository.enter(node_id, :equal_loc) unless @equal_loc.nil?
2971
+ end
2972
+
2782
2973
  # Represents the block that is being passed to the method.
2783
2974
  #
2784
2975
  # foo { |a| a }
@@ -2805,6 +2996,11 @@ module Prism
2805
2996
  closing_loc&.slice
2806
2997
  end
2807
2998
 
2999
+ # def equal: () -> String?
3000
+ def equal
3001
+ equal_loc&.slice
3002
+ end
3003
+
2808
3004
  # def inspect -> String
2809
3005
  def inspect
2810
3006
  InspectVisitor.compose(self)
@@ -2832,6 +3028,7 @@ module Prism
2832
3028
  (opening_loc.nil? == other.opening_loc.nil?) &&
2833
3029
  (arguments === other.arguments) &&
2834
3030
  (closing_loc.nil? == other.closing_loc.nil?) &&
3031
+ (equal_loc.nil? == other.equal_loc.nil?) &&
2835
3032
  (block === other.block)
2836
3033
  end
2837
3034
  end
@@ -2862,11 +3059,19 @@ module Prism
2862
3059
  visitor.visit_call_operator_write_node(self)
2863
3060
  end
2864
3061
 
2865
- # def child_nodes: () -> Array[nil | Node]
3062
+ # def child_nodes: () -> Array[Node?]
2866
3063
  def child_nodes
2867
3064
  [receiver, value]
2868
3065
  end
2869
3066
 
3067
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
3068
+ def each_child_node
3069
+ return to_enum(:each_child_node) unless block_given?
3070
+
3071
+ yield receiver if receiver
3072
+ yield value
3073
+ end
3074
+
2870
3075
  # def compact_child_nodes: () -> Array[Node]
2871
3076
  def compact_child_nodes
2872
3077
  compact = [] #: Array[Prism::node]
@@ -2885,7 +3090,7 @@ module Prism
2885
3090
  CallOperatorWriteNode.new(source, node_id, location, flags, receiver, call_operator_loc, message_loc, read_name, write_name, binary_operator, binary_operator_loc, value)
2886
3091
  end
2887
3092
 
2888
- # def deconstruct: () -> Array[nil | Node]
3093
+ # def deconstruct: () -> Array[Node?]
2889
3094
  alias deconstruct child_nodes
2890
3095
 
2891
3096
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, receiver: Prism::node?, call_operator_loc: Location?, message_loc: Location?, read_name: Symbol, write_name: Symbol, binary_operator: Symbol, binary_operator_loc: Location, value: Prism::node }
@@ -3069,11 +3274,19 @@ module Prism
3069
3274
  visitor.visit_call_or_write_node(self)
3070
3275
  end
3071
3276
 
3072
- # def child_nodes: () -> Array[nil | Node]
3277
+ # def child_nodes: () -> Array[Node?]
3073
3278
  def child_nodes
3074
3279
  [receiver, value]
3075
3280
  end
3076
3281
 
3282
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
3283
+ def each_child_node
3284
+ return to_enum(:each_child_node) unless block_given?
3285
+
3286
+ yield receiver if receiver
3287
+ yield value
3288
+ end
3289
+
3077
3290
  # def compact_child_nodes: () -> Array[Node]
3078
3291
  def compact_child_nodes
3079
3292
  compact = [] #: Array[Prism::node]
@@ -3092,7 +3305,7 @@ module Prism
3092
3305
  CallOrWriteNode.new(source, node_id, location, flags, receiver, call_operator_loc, message_loc, read_name, write_name, operator_loc, value)
3093
3306
  end
3094
3307
 
3095
- # def deconstruct: () -> Array[nil | Node]
3308
+ # def deconstruct: () -> Array[Node?]
3096
3309
  alias deconstruct child_nodes
3097
3310
 
3098
3311
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, receiver: Prism::node?, call_operator_loc: Location?, message_loc: Location?, read_name: Symbol, write_name: Symbol, operator_loc: Location, value: Prism::node }
@@ -3279,11 +3492,18 @@ module Prism
3279
3492
  visitor.visit_call_target_node(self)
3280
3493
  end
3281
3494
 
3282
- # def child_nodes: () -> Array[nil | Node]
3495
+ # def child_nodes: () -> Array[Node?]
3283
3496
  def child_nodes
3284
3497
  [receiver]
3285
3498
  end
3286
3499
 
3500
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
3501
+ def each_child_node
3502
+ return to_enum(:each_child_node) unless block_given?
3503
+
3504
+ yield receiver
3505
+ end
3506
+
3287
3507
  # def compact_child_nodes: () -> Array[Node]
3288
3508
  def compact_child_nodes
3289
3509
  [receiver]
@@ -3299,7 +3519,7 @@ module Prism
3299
3519
  CallTargetNode.new(source, node_id, location, flags, receiver, call_operator_loc, name, message_loc)
3300
3520
  end
3301
3521
 
3302
- # def deconstruct: () -> Array[nil | Node]
3522
+ # def deconstruct: () -> Array[Node?]
3303
3523
  alias deconstruct child_nodes
3304
3524
 
3305
3525
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, receiver: Prism::node, call_operator_loc: Location, name: Symbol, message_loc: Location }
@@ -3429,11 +3649,19 @@ module Prism
3429
3649
  visitor.visit_capture_pattern_node(self)
3430
3650
  end
3431
3651
 
3432
- # def child_nodes: () -> Array[nil | Node]
3652
+ # def child_nodes: () -> Array[Node?]
3433
3653
  def child_nodes
3434
3654
  [value, target]
3435
3655
  end
3436
3656
 
3657
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
3658
+ def each_child_node
3659
+ return to_enum(:each_child_node) unless block_given?
3660
+
3661
+ yield value
3662
+ yield target
3663
+ end
3664
+
3437
3665
  # def compact_child_nodes: () -> Array[Node]
3438
3666
  def compact_child_nodes
3439
3667
  [value, target]
@@ -3449,7 +3677,7 @@ module Prism
3449
3677
  CapturePatternNode.new(source, node_id, location, flags, value, target, operator_loc)
3450
3678
  end
3451
3679
 
3452
- # def deconstruct: () -> Array[nil | Node]
3680
+ # def deconstruct: () -> Array[Node?]
3453
3681
  alias deconstruct child_nodes
3454
3682
 
3455
3683
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, value: Prism::node, target: LocalVariableTargetNode, operator_loc: Location }
@@ -3540,11 +3768,20 @@ module Prism
3540
3768
  visitor.visit_case_match_node(self)
3541
3769
  end
3542
3770
 
3543
- # def child_nodes: () -> Array[nil | Node]
3771
+ # def child_nodes: () -> Array[Node?]
3544
3772
  def child_nodes
3545
3773
  [predicate, *conditions, else_clause]
3546
3774
  end
3547
3775
 
3776
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
3777
+ def each_child_node
3778
+ return to_enum(:each_child_node) unless block_given?
3779
+
3780
+ yield predicate if predicate
3781
+ conditions.each { |node| yield node }
3782
+ yield else_clause if else_clause
3783
+ end
3784
+
3548
3785
  # def compact_child_nodes: () -> Array[Node]
3549
3786
  def compact_child_nodes
3550
3787
  compact = [] #: Array[Prism::node]
@@ -3564,7 +3801,7 @@ module Prism
3564
3801
  CaseMatchNode.new(source, node_id, location, flags, predicate, conditions, else_clause, case_keyword_loc, end_keyword_loc)
3565
3802
  end
3566
3803
 
3567
- # def deconstruct: () -> Array[nil | Node]
3804
+ # def deconstruct: () -> Array[Node?]
3568
3805
  alias deconstruct child_nodes
3569
3806
 
3570
3807
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, predicate: Prism::node?, conditions: Array[InNode], else_clause: ElseNode?, case_keyword_loc: Location, end_keyword_loc: Location }
@@ -3685,11 +3922,20 @@ module Prism
3685
3922
  visitor.visit_case_node(self)
3686
3923
  end
3687
3924
 
3688
- # def child_nodes: () -> Array[nil | Node]
3925
+ # def child_nodes: () -> Array[Node?]
3689
3926
  def child_nodes
3690
3927
  [predicate, *conditions, else_clause]
3691
3928
  end
3692
3929
 
3930
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
3931
+ def each_child_node
3932
+ return to_enum(:each_child_node) unless block_given?
3933
+
3934
+ yield predicate if predicate
3935
+ conditions.each { |node| yield node }
3936
+ yield else_clause if else_clause
3937
+ end
3938
+
3693
3939
  # def compact_child_nodes: () -> Array[Node]
3694
3940
  def compact_child_nodes
3695
3941
  compact = [] #: Array[Prism::node]
@@ -3709,7 +3955,7 @@ module Prism
3709
3955
  CaseNode.new(source, node_id, location, flags, predicate, conditions, else_clause, case_keyword_loc, end_keyword_loc)
3710
3956
  end
3711
3957
 
3712
- # def deconstruct: () -> Array[nil | Node]
3958
+ # def deconstruct: () -> Array[Node?]
3713
3959
  alias deconstruct child_nodes
3714
3960
 
3715
3961
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, predicate: Prism::node?, conditions: Array[WhenNode], else_clause: ElseNode?, case_keyword_loc: Location, end_keyword_loc: Location }
@@ -3720,7 +3966,7 @@ module Prism
3720
3966
  # Represents the predicate of the case statement. This can be either `nil` or any [non-void expressions](https://github.com/ruby/prism/blob/main/docs/parsing_rules.md#non-void-expression).
3721
3967
  #
3722
3968
  # case true; when false; end
3723
- # ^^^^
3969
+ # ^^^^
3724
3970
  attr_reader :predicate
3725
3971
 
3726
3972
  # Represents the conditions of the case statement.
@@ -3831,11 +4077,20 @@ module Prism
3831
4077
  visitor.visit_class_node(self)
3832
4078
  end
3833
4079
 
3834
- # def child_nodes: () -> Array[nil | Node]
4080
+ # def child_nodes: () -> Array[Node?]
3835
4081
  def child_nodes
3836
4082
  [constant_path, superclass, body]
3837
4083
  end
3838
4084
 
4085
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
4086
+ def each_child_node
4087
+ return to_enum(:each_child_node) unless block_given?
4088
+
4089
+ yield constant_path
4090
+ yield superclass if superclass
4091
+ yield body if body
4092
+ end
4093
+
3839
4094
  # def compact_child_nodes: () -> Array[Node]
3840
4095
  def compact_child_nodes
3841
4096
  compact = [] #: Array[Prism::node]
@@ -3855,7 +4110,7 @@ module Prism
3855
4110
  ClassNode.new(source, node_id, location, flags, locals, class_keyword_loc, constant_path, inheritance_operator_loc, superclass, body, end_keyword_loc, name)
3856
4111
  end
3857
4112
 
3858
- # def deconstruct: () -> Array[nil | Node]
4113
+ # def deconstruct: () -> Array[Node?]
3859
4114
  alias deconstruct child_nodes
3860
4115
 
3861
4116
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, locals: Array[Symbol], class_keyword_loc: Location, constant_path: ConstantReadNode | ConstantPathNode | CallNode, inheritance_operator_loc: Location?, superclass: Prism::node?, body: StatementsNode | BeginNode | nil, end_keyword_loc: Location, name: Symbol }
@@ -3866,7 +4121,10 @@ module Prism
3866
4121
  # attr_reader locals: Array[Symbol]
3867
4122
  attr_reader :locals
3868
4123
 
3869
- # attr_reader class_keyword_loc: Location
4124
+ # Represents the location of the `class` keyword.
4125
+ #
4126
+ # class Foo end
4127
+ # ^^^^^
3870
4128
  def class_keyword_loc
3871
4129
  location = @class_keyword_loc
3872
4130
  return location if location.is_a?(Location)
@@ -3882,7 +4140,10 @@ module Prism
3882
4140
  # attr_reader constant_path: ConstantReadNode | ConstantPathNode | CallNode
3883
4141
  attr_reader :constant_path
3884
4142
 
3885
- # attr_reader inheritance_operator_loc: Location?
4143
+ # Represents the location of the `<` operator.
4144
+ #
4145
+ # class Foo < Bar
4146
+ # ^
3886
4147
  def inheritance_operator_loc
3887
4148
  location = @inheritance_operator_loc
3888
4149
  case location
@@ -3901,13 +4162,23 @@ module Prism
3901
4162
  repository.enter(node_id, :inheritance_operator_loc) unless @inheritance_operator_loc.nil?
3902
4163
  end
3903
4164
 
3904
- # attr_reader superclass: Prism::node?
4165
+ # Represents the superclass of the class.
4166
+ #
4167
+ # class Foo < Bar
4168
+ # ^^^
3905
4169
  attr_reader :superclass
3906
4170
 
3907
- # attr_reader body: StatementsNode | BeginNode | nil
4171
+ # Represents the body of the class.
4172
+ #
4173
+ # class Foo
4174
+ # foo
4175
+ # ^^^
3908
4176
  attr_reader :body
3909
4177
 
3910
- # attr_reader end_keyword_loc: Location
4178
+ # Represents the location of the `end` keyword.
4179
+ #
4180
+ # class Foo end
4181
+ # ^^^
3911
4182
  def end_keyword_loc
3912
4183
  location = @end_keyword_loc
3913
4184
  return location if location.is_a?(Location)
@@ -3920,7 +4191,9 @@ module Prism
3920
4191
  repository.enter(node_id, :end_keyword_loc)
3921
4192
  end
3922
4193
 
3923
- # attr_reader name: Symbol
4194
+ # The name of the class.
4195
+ #
4196
+ # class Foo end # name `:Foo`
3924
4197
  attr_reader :name
3925
4198
 
3926
4199
  # def class_keyword: () -> String
@@ -3991,11 +4264,18 @@ module Prism
3991
4264
  visitor.visit_class_variable_and_write_node(self)
3992
4265
  end
3993
4266
 
3994
- # def child_nodes: () -> Array[nil | Node]
4267
+ # def child_nodes: () -> Array[Node?]
3995
4268
  def child_nodes
3996
4269
  [value]
3997
4270
  end
3998
4271
 
4272
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
4273
+ def each_child_node
4274
+ return to_enum(:each_child_node) unless block_given?
4275
+
4276
+ yield value
4277
+ end
4278
+
3999
4279
  # def compact_child_nodes: () -> Array[Node]
4000
4280
  def compact_child_nodes
4001
4281
  [value]
@@ -4011,7 +4291,7 @@ module Prism
4011
4291
  ClassVariableAndWriteNode.new(source, node_id, location, flags, name, name_loc, operator_loc, value)
4012
4292
  end
4013
4293
 
4014
- # def deconstruct: () -> Array[nil | Node]
4294
+ # def deconstruct: () -> Array[Node?]
4015
4295
  alias deconstruct child_nodes
4016
4296
 
4017
4297
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol, name_loc: Location, operator_loc: Location, value: Prism::node }
@@ -4117,11 +4397,18 @@ module Prism
4117
4397
  visitor.visit_class_variable_operator_write_node(self)
4118
4398
  end
4119
4399
 
4120
- # def child_nodes: () -> Array[nil | Node]
4400
+ # def child_nodes: () -> Array[Node?]
4121
4401
  def child_nodes
4122
4402
  [value]
4123
4403
  end
4124
4404
 
4405
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
4406
+ def each_child_node
4407
+ return to_enum(:each_child_node) unless block_given?
4408
+
4409
+ yield value
4410
+ end
4411
+
4125
4412
  # def compact_child_nodes: () -> Array[Node]
4126
4413
  def compact_child_nodes
4127
4414
  [value]
@@ -4137,7 +4424,7 @@ module Prism
4137
4424
  ClassVariableOperatorWriteNode.new(source, node_id, location, flags, name, name_loc, binary_operator_loc, value, binary_operator)
4138
4425
  end
4139
4426
 
4140
- # def deconstruct: () -> Array[nil | Node]
4427
+ # def deconstruct: () -> Array[Node?]
4141
4428
  alias deconstruct child_nodes
4142
4429
 
4143
4430
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol, name_loc: Location, binary_operator_loc: Location, value: Prism::node, binary_operator: Symbol }
@@ -4229,11 +4516,18 @@ module Prism
4229
4516
  visitor.visit_class_variable_or_write_node(self)
4230
4517
  end
4231
4518
 
4232
- # def child_nodes: () -> Array[nil | Node]
4519
+ # def child_nodes: () -> Array[Node?]
4233
4520
  def child_nodes
4234
4521
  [value]
4235
4522
  end
4236
4523
 
4524
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
4525
+ def each_child_node
4526
+ return to_enum(:each_child_node) unless block_given?
4527
+
4528
+ yield value
4529
+ end
4530
+
4237
4531
  # def compact_child_nodes: () -> Array[Node]
4238
4532
  def compact_child_nodes
4239
4533
  [value]
@@ -4249,7 +4543,7 @@ module Prism
4249
4543
  ClassVariableOrWriteNode.new(source, node_id, location, flags, name, name_loc, operator_loc, value)
4250
4544
  end
4251
4545
 
4252
- # def deconstruct: () -> Array[nil | Node]
4546
+ # def deconstruct: () -> Array[Node?]
4253
4547
  alias deconstruct child_nodes
4254
4548
 
4255
4549
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol, name_loc: Location, operator_loc: Location, value: Prism::node }
@@ -4339,11 +4633,17 @@ module Prism
4339
4633
  visitor.visit_class_variable_read_node(self)
4340
4634
  end
4341
4635
 
4342
- # def child_nodes: () -> Array[nil | Node]
4636
+ # def child_nodes: () -> Array[Node?]
4343
4637
  def child_nodes
4344
4638
  []
4345
4639
  end
4346
4640
 
4641
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
4642
+ def each_child_node
4643
+ return to_enum(:each_child_node) unless block_given?
4644
+
4645
+ end
4646
+
4347
4647
  # def compact_child_nodes: () -> Array[Node]
4348
4648
  def compact_child_nodes
4349
4649
  []
@@ -4359,7 +4659,7 @@ module Prism
4359
4659
  ClassVariableReadNode.new(source, node_id, location, flags, name)
4360
4660
  end
4361
4661
 
4362
- # def deconstruct: () -> Array[nil | Node]
4662
+ # def deconstruct: () -> Array[Node?]
4363
4663
  alias deconstruct child_nodes
4364
4664
 
4365
4665
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol }
@@ -4416,11 +4716,17 @@ module Prism
4416
4716
  visitor.visit_class_variable_target_node(self)
4417
4717
  end
4418
4718
 
4419
- # def child_nodes: () -> Array[nil | Node]
4719
+ # def child_nodes: () -> Array[Node?]
4420
4720
  def child_nodes
4421
4721
  []
4422
4722
  end
4423
4723
 
4724
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
4725
+ def each_child_node
4726
+ return to_enum(:each_child_node) unless block_given?
4727
+
4728
+ end
4729
+
4424
4730
  # def compact_child_nodes: () -> Array[Node]
4425
4731
  def compact_child_nodes
4426
4732
  []
@@ -4436,7 +4742,7 @@ module Prism
4436
4742
  ClassVariableTargetNode.new(source, node_id, location, flags, name)
4437
4743
  end
4438
4744
 
4439
- # def deconstruct: () -> Array[nil | Node]
4745
+ # def deconstruct: () -> Array[Node?]
4440
4746
  alias deconstruct child_nodes
4441
4747
 
4442
4748
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol }
@@ -4492,11 +4798,18 @@ module Prism
4492
4798
  visitor.visit_class_variable_write_node(self)
4493
4799
  end
4494
4800
 
4495
- # def child_nodes: () -> Array[nil | Node]
4801
+ # def child_nodes: () -> Array[Node?]
4496
4802
  def child_nodes
4497
4803
  [value]
4498
4804
  end
4499
4805
 
4806
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
4807
+ def each_child_node
4808
+ return to_enum(:each_child_node) unless block_given?
4809
+
4810
+ yield value
4811
+ end
4812
+
4500
4813
  # def compact_child_nodes: () -> Array[Node]
4501
4814
  def compact_child_nodes
4502
4815
  [value]
@@ -4512,7 +4825,7 @@ module Prism
4512
4825
  ClassVariableWriteNode.new(source, node_id, location, flags, name, name_loc, value, operator_loc)
4513
4826
  end
4514
4827
 
4515
- # def deconstruct: () -> Array[nil | Node]
4828
+ # def deconstruct: () -> Array[Node?]
4516
4829
  alias deconstruct child_nodes
4517
4830
 
4518
4831
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol, name_loc: Location, value: Prism::node, operator_loc: Location }
@@ -4621,11 +4934,18 @@ module Prism
4621
4934
  visitor.visit_constant_and_write_node(self)
4622
4935
  end
4623
4936
 
4624
- # def child_nodes: () -> Array[nil | Node]
4937
+ # def child_nodes: () -> Array[Node?]
4625
4938
  def child_nodes
4626
4939
  [value]
4627
4940
  end
4628
4941
 
4942
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
4943
+ def each_child_node
4944
+ return to_enum(:each_child_node) unless block_given?
4945
+
4946
+ yield value
4947
+ end
4948
+
4629
4949
  # def compact_child_nodes: () -> Array[Node]
4630
4950
  def compact_child_nodes
4631
4951
  [value]
@@ -4641,7 +4961,7 @@ module Prism
4641
4961
  ConstantAndWriteNode.new(source, node_id, location, flags, name, name_loc, operator_loc, value)
4642
4962
  end
4643
4963
 
4644
- # def deconstruct: () -> Array[nil | Node]
4964
+ # def deconstruct: () -> Array[Node?]
4645
4965
  alias deconstruct child_nodes
4646
4966
 
4647
4967
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol, name_loc: Location, operator_loc: Location, value: Prism::node }
@@ -4735,11 +5055,18 @@ module Prism
4735
5055
  visitor.visit_constant_operator_write_node(self)
4736
5056
  end
4737
5057
 
4738
- # def child_nodes: () -> Array[nil | Node]
5058
+ # def child_nodes: () -> Array[Node?]
4739
5059
  def child_nodes
4740
5060
  [value]
4741
5061
  end
4742
5062
 
5063
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
5064
+ def each_child_node
5065
+ return to_enum(:each_child_node) unless block_given?
5066
+
5067
+ yield value
5068
+ end
5069
+
4743
5070
  # def compact_child_nodes: () -> Array[Node]
4744
5071
  def compact_child_nodes
4745
5072
  [value]
@@ -4755,7 +5082,7 @@ module Prism
4755
5082
  ConstantOperatorWriteNode.new(source, node_id, location, flags, name, name_loc, binary_operator_loc, value, binary_operator)
4756
5083
  end
4757
5084
 
4758
- # def deconstruct: () -> Array[nil | Node]
5085
+ # def deconstruct: () -> Array[Node?]
4759
5086
  alias deconstruct child_nodes
4760
5087
 
4761
5088
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol, name_loc: Location, binary_operator_loc: Location, value: Prism::node, binary_operator: Symbol }
@@ -4847,11 +5174,18 @@ module Prism
4847
5174
  visitor.visit_constant_or_write_node(self)
4848
5175
  end
4849
5176
 
4850
- # def child_nodes: () -> Array[nil | Node]
5177
+ # def child_nodes: () -> Array[Node?]
4851
5178
  def child_nodes
4852
5179
  [value]
4853
5180
  end
4854
5181
 
5182
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
5183
+ def each_child_node
5184
+ return to_enum(:each_child_node) unless block_given?
5185
+
5186
+ yield value
5187
+ end
5188
+
4855
5189
  # def compact_child_nodes: () -> Array[Node]
4856
5190
  def compact_child_nodes
4857
5191
  [value]
@@ -4867,7 +5201,7 @@ module Prism
4867
5201
  ConstantOrWriteNode.new(source, node_id, location, flags, name, name_loc, operator_loc, value)
4868
5202
  end
4869
5203
 
4870
- # def deconstruct: () -> Array[nil | Node]
5204
+ # def deconstruct: () -> Array[Node?]
4871
5205
  alias deconstruct child_nodes
4872
5206
 
4873
5207
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol, name_loc: Location, operator_loc: Location, value: Prism::node }
@@ -4959,11 +5293,19 @@ module Prism
4959
5293
  visitor.visit_constant_path_and_write_node(self)
4960
5294
  end
4961
5295
 
4962
- # def child_nodes: () -> Array[nil | Node]
5296
+ # def child_nodes: () -> Array[Node?]
4963
5297
  def child_nodes
4964
5298
  [target, value]
4965
5299
  end
4966
5300
 
5301
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
5302
+ def each_child_node
5303
+ return to_enum(:each_child_node) unless block_given?
5304
+
5305
+ yield target
5306
+ yield value
5307
+ end
5308
+
4967
5309
  # def compact_child_nodes: () -> Array[Node]
4968
5310
  def compact_child_nodes
4969
5311
  [target, value]
@@ -4979,7 +5321,7 @@ module Prism
4979
5321
  ConstantPathAndWriteNode.new(source, node_id, location, flags, target, operator_loc, value)
4980
5322
  end
4981
5323
 
4982
- # def deconstruct: () -> Array[nil | Node]
5324
+ # def deconstruct: () -> Array[Node?]
4983
5325
  alias deconstruct child_nodes
4984
5326
 
4985
5327
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, target: ConstantPathNode, operator_loc: Location, value: Prism::node }
@@ -5058,11 +5400,18 @@ module Prism
5058
5400
  visitor.visit_constant_path_node(self)
5059
5401
  end
5060
5402
 
5061
- # def child_nodes: () -> Array[nil | Node]
5403
+ # def child_nodes: () -> Array[Node?]
5062
5404
  def child_nodes
5063
5405
  [parent]
5064
5406
  end
5065
5407
 
5408
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
5409
+ def each_child_node
5410
+ return to_enum(:each_child_node) unless block_given?
5411
+
5412
+ yield parent if parent
5413
+ end
5414
+
5066
5415
  # def compact_child_nodes: () -> Array[Node]
5067
5416
  def compact_child_nodes
5068
5417
  compact = [] #: Array[Prism::node]
@@ -5080,7 +5429,7 @@ module Prism
5080
5429
  ConstantPathNode.new(source, node_id, location, flags, parent, name, delimiter_loc, name_loc)
5081
5430
  end
5082
5431
 
5083
- # def deconstruct: () -> Array[nil | Node]
5432
+ # def deconstruct: () -> Array[Node?]
5084
5433
  alias deconstruct child_nodes
5085
5434
 
5086
5435
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, parent: Prism::node?, name: Symbol?, delimiter_loc: Location, name_loc: Location }
@@ -5194,11 +5543,19 @@ module Prism
5194
5543
  visitor.visit_constant_path_operator_write_node(self)
5195
5544
  end
5196
5545
 
5197
- # def child_nodes: () -> Array[nil | Node]
5546
+ # def child_nodes: () -> Array[Node?]
5198
5547
  def child_nodes
5199
5548
  [target, value]
5200
5549
  end
5201
5550
 
5551
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
5552
+ def each_child_node
5553
+ return to_enum(:each_child_node) unless block_given?
5554
+
5555
+ yield target
5556
+ yield value
5557
+ end
5558
+
5202
5559
  # def compact_child_nodes: () -> Array[Node]
5203
5560
  def compact_child_nodes
5204
5561
  [target, value]
@@ -5214,7 +5571,7 @@ module Prism
5214
5571
  ConstantPathOperatorWriteNode.new(source, node_id, location, flags, target, binary_operator_loc, value, binary_operator)
5215
5572
  end
5216
5573
 
5217
- # def deconstruct: () -> Array[nil | Node]
5574
+ # def deconstruct: () -> Array[Node?]
5218
5575
  alias deconstruct child_nodes
5219
5576
 
5220
5577
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, target: ConstantPathNode, binary_operator_loc: Location, value: Prism::node, binary_operator: Symbol }
@@ -5291,11 +5648,19 @@ module Prism
5291
5648
  visitor.visit_constant_path_or_write_node(self)
5292
5649
  end
5293
5650
 
5294
- # def child_nodes: () -> Array[nil | Node]
5651
+ # def child_nodes: () -> Array[Node?]
5295
5652
  def child_nodes
5296
5653
  [target, value]
5297
5654
  end
5298
5655
 
5656
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
5657
+ def each_child_node
5658
+ return to_enum(:each_child_node) unless block_given?
5659
+
5660
+ yield target
5661
+ yield value
5662
+ end
5663
+
5299
5664
  # def compact_child_nodes: () -> Array[Node]
5300
5665
  def compact_child_nodes
5301
5666
  [target, value]
@@ -5311,7 +5676,7 @@ module Prism
5311
5676
  ConstantPathOrWriteNode.new(source, node_id, location, flags, target, operator_loc, value)
5312
5677
  end
5313
5678
 
5314
- # def deconstruct: () -> Array[nil | Node]
5679
+ # def deconstruct: () -> Array[Node?]
5315
5680
  alias deconstruct child_nodes
5316
5681
 
5317
5682
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, target: ConstantPathNode, operator_loc: Location, value: Prism::node }
@@ -5390,11 +5755,18 @@ module Prism
5390
5755
  visitor.visit_constant_path_target_node(self)
5391
5756
  end
5392
5757
 
5393
- # def child_nodes: () -> Array[nil | Node]
5758
+ # def child_nodes: () -> Array[Node?]
5394
5759
  def child_nodes
5395
5760
  [parent]
5396
5761
  end
5397
5762
 
5763
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
5764
+ def each_child_node
5765
+ return to_enum(:each_child_node) unless block_given?
5766
+
5767
+ yield parent if parent
5768
+ end
5769
+
5398
5770
  # def compact_child_nodes: () -> Array[Node]
5399
5771
  def compact_child_nodes
5400
5772
  compact = [] #: Array[Prism::node]
@@ -5412,7 +5784,7 @@ module Prism
5412
5784
  ConstantPathTargetNode.new(source, node_id, location, flags, parent, name, delimiter_loc, name_loc)
5413
5785
  end
5414
5786
 
5415
- # def deconstruct: () -> Array[nil | Node]
5787
+ # def deconstruct: () -> Array[Node?]
5416
5788
  alias deconstruct child_nodes
5417
5789
 
5418
5790
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, parent: Prism::node?, name: Symbol?, delimiter_loc: Location, name_loc: Location }
@@ -5510,11 +5882,19 @@ module Prism
5510
5882
  visitor.visit_constant_path_write_node(self)
5511
5883
  end
5512
5884
 
5513
- # def child_nodes: () -> Array[nil | Node]
5885
+ # def child_nodes: () -> Array[Node?]
5514
5886
  def child_nodes
5515
5887
  [target, value]
5516
5888
  end
5517
5889
 
5890
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
5891
+ def each_child_node
5892
+ return to_enum(:each_child_node) unless block_given?
5893
+
5894
+ yield target
5895
+ yield value
5896
+ end
5897
+
5518
5898
  # def compact_child_nodes: () -> Array[Node]
5519
5899
  def compact_child_nodes
5520
5900
  [target, value]
@@ -5530,7 +5910,7 @@ module Prism
5530
5910
  ConstantPathWriteNode.new(source, node_id, location, flags, target, operator_loc, value)
5531
5911
  end
5532
5912
 
5533
- # def deconstruct: () -> Array[nil | Node]
5913
+ # def deconstruct: () -> Array[Node?]
5534
5914
  alias deconstruct child_nodes
5535
5915
 
5536
5916
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, target: ConstantPathNode, operator_loc: Location, value: Prism::node }
@@ -5618,11 +5998,17 @@ module Prism
5618
5998
  visitor.visit_constant_read_node(self)
5619
5999
  end
5620
6000
 
5621
- # def child_nodes: () -> Array[nil | Node]
6001
+ # def child_nodes: () -> Array[Node?]
5622
6002
  def child_nodes
5623
6003
  []
5624
6004
  end
5625
6005
 
6006
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
6007
+ def each_child_node
6008
+ return to_enum(:each_child_node) unless block_given?
6009
+
6010
+ end
6011
+
5626
6012
  # def compact_child_nodes: () -> Array[Node]
5627
6013
  def compact_child_nodes
5628
6014
  []
@@ -5638,7 +6024,7 @@ module Prism
5638
6024
  ConstantReadNode.new(source, node_id, location, flags, name)
5639
6025
  end
5640
6026
 
5641
- # def deconstruct: () -> Array[nil | Node]
6027
+ # def deconstruct: () -> Array[Node?]
5642
6028
  alias deconstruct child_nodes
5643
6029
 
5644
6030
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol }
@@ -5695,11 +6081,17 @@ module Prism
5695
6081
  visitor.visit_constant_target_node(self)
5696
6082
  end
5697
6083
 
5698
- # def child_nodes: () -> Array[nil | Node]
6084
+ # def child_nodes: () -> Array[Node?]
5699
6085
  def child_nodes
5700
6086
  []
5701
6087
  end
5702
6088
 
6089
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
6090
+ def each_child_node
6091
+ return to_enum(:each_child_node) unless block_given?
6092
+
6093
+ end
6094
+
5703
6095
  # def compact_child_nodes: () -> Array[Node]
5704
6096
  def compact_child_nodes
5705
6097
  []
@@ -5715,7 +6107,7 @@ module Prism
5715
6107
  ConstantTargetNode.new(source, node_id, location, flags, name)
5716
6108
  end
5717
6109
 
5718
- # def deconstruct: () -> Array[nil | Node]
6110
+ # def deconstruct: () -> Array[Node?]
5719
6111
  alias deconstruct child_nodes
5720
6112
 
5721
6113
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol }
@@ -5771,11 +6163,18 @@ module Prism
5771
6163
  visitor.visit_constant_write_node(self)
5772
6164
  end
5773
6165
 
5774
- # def child_nodes: () -> Array[nil | Node]
6166
+ # def child_nodes: () -> Array[Node?]
5775
6167
  def child_nodes
5776
6168
  [value]
5777
6169
  end
5778
6170
 
6171
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
6172
+ def each_child_node
6173
+ return to_enum(:each_child_node) unless block_given?
6174
+
6175
+ yield value
6176
+ end
6177
+
5779
6178
  # def compact_child_nodes: () -> Array[Node]
5780
6179
  def compact_child_nodes
5781
6180
  [value]
@@ -5791,7 +6190,7 @@ module Prism
5791
6190
  ConstantWriteNode.new(source, node_id, location, flags, name, name_loc, value, operator_loc)
5792
6191
  end
5793
6192
 
5794
- # def deconstruct: () -> Array[nil | Node]
6193
+ # def deconstruct: () -> Array[Node?]
5795
6194
  alias deconstruct child_nodes
5796
6195
 
5797
6196
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol, name_loc: Location, value: Prism::node, operator_loc: Location }
@@ -5909,11 +6308,20 @@ module Prism
5909
6308
  visitor.visit_def_node(self)
5910
6309
  end
5911
6310
 
5912
- # def child_nodes: () -> Array[nil | Node]
6311
+ # def child_nodes: () -> Array[Node?]
5913
6312
  def child_nodes
5914
6313
  [receiver, parameters, body]
5915
6314
  end
5916
6315
 
6316
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
6317
+ def each_child_node
6318
+ return to_enum(:each_child_node) unless block_given?
6319
+
6320
+ yield receiver if receiver
6321
+ yield parameters if parameters
6322
+ yield body if body
6323
+ end
6324
+
5917
6325
  # def compact_child_nodes: () -> Array[Node]
5918
6326
  def compact_child_nodes
5919
6327
  compact = [] #: Array[Prism::node]
@@ -5933,7 +6341,7 @@ module Prism
5933
6341
  DefNode.new(source, node_id, location, flags, name, name_loc, receiver, parameters, body, locals, def_keyword_loc, operator_loc, lparen_loc, rparen_loc, equal_loc, end_keyword_loc)
5934
6342
  end
5935
6343
 
5936
- # def deconstruct: () -> Array[nil | Node]
6344
+ # def deconstruct: () -> Array[Node?]
5937
6345
  alias deconstruct child_nodes
5938
6346
 
5939
6347
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol, name_loc: Location, receiver: Prism::node?, parameters: ParametersNode?, body: StatementsNode | BeginNode | nil, locals: Array[Symbol], def_keyword_loc: Location, operator_loc: Location?, lparen_loc: Location?, rparen_loc: Location?, equal_loc: Location?, end_keyword_loc: Location? }
@@ -6164,11 +6572,18 @@ module Prism
6164
6572
  visitor.visit_defined_node(self)
6165
6573
  end
6166
6574
 
6167
- # def child_nodes: () -> Array[nil | Node]
6575
+ # def child_nodes: () -> Array[Node?]
6168
6576
  def child_nodes
6169
6577
  [value]
6170
6578
  end
6171
6579
 
6580
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
6581
+ def each_child_node
6582
+ return to_enum(:each_child_node) unless block_given?
6583
+
6584
+ yield value
6585
+ end
6586
+
6172
6587
  # def compact_child_nodes: () -> Array[Node]
6173
6588
  def compact_child_nodes
6174
6589
  [value]
@@ -6184,7 +6599,7 @@ module Prism
6184
6599
  DefinedNode.new(source, node_id, location, flags, lparen_loc, value, rparen_loc, keyword_loc)
6185
6600
  end
6186
6601
 
6187
- # def deconstruct: () -> Array[nil | Node]
6602
+ # def deconstruct: () -> Array[Node?]
6188
6603
  alias deconstruct child_nodes
6189
6604
 
6190
6605
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, lparen_loc: Location?, value: Prism::node, rparen_loc: Location?, keyword_loc: Location }
@@ -6308,11 +6723,18 @@ module Prism
6308
6723
  visitor.visit_else_node(self)
6309
6724
  end
6310
6725
 
6311
- # def child_nodes: () -> Array[nil | Node]
6726
+ # def child_nodes: () -> Array[Node?]
6312
6727
  def child_nodes
6313
6728
  [statements]
6314
6729
  end
6315
6730
 
6731
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
6732
+ def each_child_node
6733
+ return to_enum(:each_child_node) unless block_given?
6734
+
6735
+ yield statements if statements
6736
+ end
6737
+
6316
6738
  # def compact_child_nodes: () -> Array[Node]
6317
6739
  def compact_child_nodes
6318
6740
  compact = [] #: Array[Prism::node]
@@ -6330,7 +6752,7 @@ module Prism
6330
6752
  ElseNode.new(source, node_id, location, flags, else_keyword_loc, statements, end_keyword_loc)
6331
6753
  end
6332
6754
 
6333
- # def deconstruct: () -> Array[nil | Node]
6755
+ # def deconstruct: () -> Array[Node?]
6334
6756
  alias deconstruct child_nodes
6335
6757
 
6336
6758
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, else_keyword_loc: Location, statements: StatementsNode?, end_keyword_loc: Location? }
@@ -6429,11 +6851,18 @@ module Prism
6429
6851
  visitor.visit_embedded_statements_node(self)
6430
6852
  end
6431
6853
 
6432
- # def child_nodes: () -> Array[nil | Node]
6854
+ # def child_nodes: () -> Array[Node?]
6433
6855
  def child_nodes
6434
6856
  [statements]
6435
6857
  end
6436
6858
 
6859
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
6860
+ def each_child_node
6861
+ return to_enum(:each_child_node) unless block_given?
6862
+
6863
+ yield statements if statements
6864
+ end
6865
+
6437
6866
  # def compact_child_nodes: () -> Array[Node]
6438
6867
  def compact_child_nodes
6439
6868
  compact = [] #: Array[Prism::node]
@@ -6451,7 +6880,7 @@ module Prism
6451
6880
  EmbeddedStatementsNode.new(source, node_id, location, flags, opening_loc, statements, closing_loc)
6452
6881
  end
6453
6882
 
6454
- # def deconstruct: () -> Array[nil | Node]
6883
+ # def deconstruct: () -> Array[Node?]
6455
6884
  alias deconstruct child_nodes
6456
6885
 
6457
6886
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, opening_loc: Location, statements: StatementsNode?, closing_loc: Location }
@@ -6543,11 +6972,18 @@ module Prism
6543
6972
  visitor.visit_embedded_variable_node(self)
6544
6973
  end
6545
6974
 
6546
- # def child_nodes: () -> Array[nil | Node]
6975
+ # def child_nodes: () -> Array[Node?]
6547
6976
  def child_nodes
6548
6977
  [variable]
6549
6978
  end
6550
6979
 
6980
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
6981
+ def each_child_node
6982
+ return to_enum(:each_child_node) unless block_given?
6983
+
6984
+ yield variable
6985
+ end
6986
+
6551
6987
  # def compact_child_nodes: () -> Array[Node]
6552
6988
  def compact_child_nodes
6553
6989
  [variable]
@@ -6563,7 +6999,7 @@ module Prism
6563
6999
  EmbeddedVariableNode.new(source, node_id, location, flags, operator_loc, variable)
6564
7000
  end
6565
7001
 
6566
- # def deconstruct: () -> Array[nil | Node]
7002
+ # def deconstruct: () -> Array[Node?]
6567
7003
  alias deconstruct child_nodes
6568
7004
 
6569
7005
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, operator_loc: Location, variable: InstanceVariableReadNode | ClassVariableReadNode | GlobalVariableReadNode | BackReferenceReadNode | NumberedReferenceReadNode }
@@ -6641,11 +7077,18 @@ module Prism
6641
7077
  visitor.visit_ensure_node(self)
6642
7078
  end
6643
7079
 
6644
- # def child_nodes: () -> Array[nil | Node]
7080
+ # def child_nodes: () -> Array[Node?]
6645
7081
  def child_nodes
6646
7082
  [statements]
6647
7083
  end
6648
7084
 
7085
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
7086
+ def each_child_node
7087
+ return to_enum(:each_child_node) unless block_given?
7088
+
7089
+ yield statements if statements
7090
+ end
7091
+
6649
7092
  # def compact_child_nodes: () -> Array[Node]
6650
7093
  def compact_child_nodes
6651
7094
  compact = [] #: Array[Prism::node]
@@ -6663,7 +7106,7 @@ module Prism
6663
7106
  EnsureNode.new(source, node_id, location, flags, ensure_keyword_loc, statements, end_keyword_loc)
6664
7107
  end
6665
7108
 
6666
- # def deconstruct: () -> Array[nil | Node]
7109
+ # def deconstruct: () -> Array[Node?]
6667
7110
  alias deconstruct child_nodes
6668
7111
 
6669
7112
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, ensure_keyword_loc: Location, statements: StatementsNode?, end_keyword_loc: Location }
@@ -6753,11 +7196,17 @@ module Prism
6753
7196
  visitor.visit_false_node(self)
6754
7197
  end
6755
7198
 
6756
- # def child_nodes: () -> Array[nil | Node]
7199
+ # def child_nodes: () -> Array[Node?]
6757
7200
  def child_nodes
6758
7201
  []
6759
7202
  end
6760
7203
 
7204
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
7205
+ def each_child_node
7206
+ return to_enum(:each_child_node) unless block_given?
7207
+
7208
+ end
7209
+
6761
7210
  # def compact_child_nodes: () -> Array[Node]
6762
7211
  def compact_child_nodes
6763
7212
  []
@@ -6773,7 +7222,7 @@ module Prism
6773
7222
  FalseNode.new(source, node_id, location, flags)
6774
7223
  end
6775
7224
 
6776
- # def deconstruct: () -> Array[nil | Node]
7225
+ # def deconstruct: () -> Array[Node?]
6777
7226
  alias deconstruct child_nodes
6778
7227
 
6779
7228
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location }
@@ -6813,6 +7262,9 @@ module Prism
6813
7262
  #
6814
7263
  # foo in Foo(*bar, baz, *qux)
6815
7264
  # ^^^^^^^^^^^^^^^^^^^^
7265
+ #
7266
+ # foo => *bar, baz, *qux
7267
+ # ^^^^^^^^^^^^^^^
6816
7268
  class FindPatternNode < Node
6817
7269
  # Initialize a new FindPatternNode node.
6818
7270
  def initialize(source, node_id, location, flags, constant, left, requireds, right, opening_loc, closing_loc)
@@ -6833,11 +7285,21 @@ module Prism
6833
7285
  visitor.visit_find_pattern_node(self)
6834
7286
  end
6835
7287
 
6836
- # def child_nodes: () -> Array[nil | Node]
7288
+ # def child_nodes: () -> Array[Node?]
6837
7289
  def child_nodes
6838
7290
  [constant, left, *requireds, right]
6839
7291
  end
6840
7292
 
7293
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
7294
+ def each_child_node
7295
+ return to_enum(:each_child_node) unless block_given?
7296
+
7297
+ yield constant if constant
7298
+ yield left
7299
+ requireds.each { |node| yield node }
7300
+ yield right
7301
+ end
7302
+
6841
7303
  # def compact_child_nodes: () -> Array[Node]
6842
7304
  def compact_child_nodes
6843
7305
  compact = [] #: Array[Prism::node]
@@ -6853,32 +7315,59 @@ module Prism
6853
7315
  [*constant, left, *requireds, right, *opening_loc, *closing_loc] #: Array[Prism::node | Location]
6854
7316
  end
6855
7317
 
6856
- # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?constant: ConstantReadNode | ConstantPathNode | nil, ?left: SplatNode, ?requireds: Array[Prism::node], ?right: SplatNode | MissingNode, ?opening_loc: Location?, ?closing_loc: Location?) -> FindPatternNode
7318
+ # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?constant: ConstantPathNode | ConstantReadNode | nil, ?left: SplatNode, ?requireds: Array[Prism::node], ?right: SplatNode | MissingNode, ?opening_loc: Location?, ?closing_loc: Location?) -> FindPatternNode
6857
7319
  def copy(node_id: self.node_id, location: self.location, flags: self.flags, constant: self.constant, left: self.left, requireds: self.requireds, right: self.right, opening_loc: self.opening_loc, closing_loc: self.closing_loc)
6858
7320
  FindPatternNode.new(source, node_id, location, flags, constant, left, requireds, right, opening_loc, closing_loc)
6859
7321
  end
6860
7322
 
6861
- # def deconstruct: () -> Array[nil | Node]
7323
+ # def deconstruct: () -> Array[Node?]
6862
7324
  alias deconstruct child_nodes
6863
7325
 
6864
- # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, constant: ConstantReadNode | ConstantPathNode | nil, left: SplatNode, requireds: Array[Prism::node], right: SplatNode | MissingNode, opening_loc: Location?, closing_loc: Location? }
7326
+ # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, constant: ConstantPathNode | ConstantReadNode | nil, left: SplatNode, requireds: Array[Prism::node], right: SplatNode | MissingNode, opening_loc: Location?, closing_loc: Location? }
6865
7327
  def deconstruct_keys(keys)
6866
7328
  { node_id: node_id, location: location, constant: constant, left: left, requireds: requireds, right: right, opening_loc: opening_loc, closing_loc: closing_loc }
6867
7329
  end
6868
7330
 
6869
- # attr_reader constant: ConstantReadNode | ConstantPathNode | nil
7331
+ # Represents the optional constant preceding the pattern
7332
+ #
7333
+ # foo in Foo(*bar, baz, *qux)
7334
+ # ^^^
6870
7335
  attr_reader :constant
6871
7336
 
6872
- # attr_reader left: SplatNode
7337
+ # Represents the first wildcard node in the pattern.
7338
+ #
7339
+ # foo in *bar, baz, *qux
7340
+ # ^^^^
7341
+ #
7342
+ # foo in Foo(*bar, baz, *qux)
7343
+ # ^^^^
6873
7344
  attr_reader :left
6874
7345
 
6875
- # attr_reader requireds: Array[Prism::node]
7346
+ # Represents the nodes in between the wildcards.
7347
+ #
7348
+ # foo in *bar, baz, *qux
7349
+ # ^^^
7350
+ #
7351
+ # foo in Foo(*bar, baz, 1, *qux)
7352
+ # ^^^^^^
6876
7353
  attr_reader :requireds
6877
7354
 
6878
- # attr_reader right: SplatNode | MissingNode
7355
+ # Represents the second wildcard node in the pattern.
7356
+ #
7357
+ # foo in *bar, baz, *qux
7358
+ # ^^^^
7359
+ #
7360
+ # foo in Foo(*bar, baz, *qux)
7361
+ # ^^^^
6879
7362
  attr_reader :right
6880
7363
 
6881
- # attr_reader opening_loc: Location?
7364
+ # The location of the opening brace.
7365
+ #
7366
+ # foo in [*bar, baz, *qux]
7367
+ # ^
7368
+ #
7369
+ # foo in Foo(*bar, baz, *qux)
7370
+ # ^
6882
7371
  def opening_loc
6883
7372
  location = @opening_loc
6884
7373
  case location
@@ -6897,7 +7386,13 @@ module Prism
6897
7386
  repository.enter(node_id, :opening_loc) unless @opening_loc.nil?
6898
7387
  end
6899
7388
 
6900
- # attr_reader closing_loc: Location?
7389
+ # The location of the closing brace.
7390
+ #
7391
+ # foo in [*bar, baz, *qux]
7392
+ # ^
7393
+ #
7394
+ # foo in Foo(*bar, baz, *qux)
7395
+ # ^
6901
7396
  def closing_loc
6902
7397
  location = @closing_loc
6903
7398
  case location
@@ -6976,11 +7471,19 @@ module Prism
6976
7471
  visitor.visit_flip_flop_node(self)
6977
7472
  end
6978
7473
 
6979
- # def child_nodes: () -> Array[nil | Node]
7474
+ # def child_nodes: () -> Array[Node?]
6980
7475
  def child_nodes
6981
7476
  [left, right]
6982
7477
  end
6983
7478
 
7479
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
7480
+ def each_child_node
7481
+ return to_enum(:each_child_node) unless block_given?
7482
+
7483
+ yield left if left
7484
+ yield right if right
7485
+ end
7486
+
6984
7487
  # def compact_child_nodes: () -> Array[Node]
6985
7488
  def compact_child_nodes
6986
7489
  compact = [] #: Array[Prism::node]
@@ -6999,7 +7502,7 @@ module Prism
6999
7502
  FlipFlopNode.new(source, node_id, location, flags, left, right, operator_loc)
7000
7503
  end
7001
7504
 
7002
- # def deconstruct: () -> Array[nil | Node]
7505
+ # def deconstruct: () -> Array[Node?]
7003
7506
  alias deconstruct child_nodes
7004
7507
 
7005
7508
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, left: Prism::node?, right: Prism::node?, operator_loc: Location }
@@ -7081,11 +7584,17 @@ module Prism
7081
7584
  visitor.visit_float_node(self)
7082
7585
  end
7083
7586
 
7084
- # def child_nodes: () -> Array[nil | Node]
7587
+ # def child_nodes: () -> Array[Node?]
7085
7588
  def child_nodes
7086
7589
  []
7087
7590
  end
7088
7591
 
7592
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
7593
+ def each_child_node
7594
+ return to_enum(:each_child_node) unless block_given?
7595
+
7596
+ end
7597
+
7089
7598
  # def compact_child_nodes: () -> Array[Node]
7090
7599
  def compact_child_nodes
7091
7600
  []
@@ -7101,7 +7610,7 @@ module Prism
7101
7610
  FloatNode.new(source, node_id, location, flags, value)
7102
7611
  end
7103
7612
 
7104
- # def deconstruct: () -> Array[nil | Node]
7613
+ # def deconstruct: () -> Array[Node?]
7105
7614
  alias deconstruct child_nodes
7106
7615
 
7107
7616
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, value: Float }
@@ -7160,11 +7669,20 @@ module Prism
7160
7669
  visitor.visit_for_node(self)
7161
7670
  end
7162
7671
 
7163
- # def child_nodes: () -> Array[nil | Node]
7672
+ # def child_nodes: () -> Array[Node?]
7164
7673
  def child_nodes
7165
7674
  [index, collection, statements]
7166
7675
  end
7167
7676
 
7677
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
7678
+ def each_child_node
7679
+ return to_enum(:each_child_node) unless block_given?
7680
+
7681
+ yield index
7682
+ yield collection
7683
+ yield statements if statements
7684
+ end
7685
+
7168
7686
  # def compact_child_nodes: () -> Array[Node]
7169
7687
  def compact_child_nodes
7170
7688
  compact = [] #: Array[Prism::node]
@@ -7184,7 +7702,7 @@ module Prism
7184
7702
  ForNode.new(source, node_id, location, flags, index, collection, statements, for_keyword_loc, in_keyword_loc, do_keyword_loc, end_keyword_loc)
7185
7703
  end
7186
7704
 
7187
- # def deconstruct: () -> Array[nil | Node]
7705
+ # def deconstruct: () -> Array[Node?]
7188
7706
  alias deconstruct child_nodes
7189
7707
 
7190
7708
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, index: LocalVariableTargetNode | InstanceVariableTargetNode | ClassVariableTargetNode | GlobalVariableTargetNode | ConstantTargetNode | ConstantPathTargetNode | CallTargetNode | IndexTargetNode | MultiTargetNode | BackReferenceReadNode | NumberedReferenceReadNode | MissingNode, collection: Prism::node, statements: StatementsNode?, for_keyword_loc: Location, in_keyword_loc: Location, do_keyword_loc: Location?, end_keyword_loc: Location }
@@ -7351,11 +7869,17 @@ module Prism
7351
7869
  visitor.visit_forwarding_arguments_node(self)
7352
7870
  end
7353
7871
 
7354
- # def child_nodes: () -> Array[nil | Node]
7872
+ # def child_nodes: () -> Array[Node?]
7355
7873
  def child_nodes
7356
7874
  []
7357
7875
  end
7358
7876
 
7877
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
7878
+ def each_child_node
7879
+ return to_enum(:each_child_node) unless block_given?
7880
+
7881
+ end
7882
+
7359
7883
  # def compact_child_nodes: () -> Array[Node]
7360
7884
  def compact_child_nodes
7361
7885
  []
@@ -7371,7 +7895,7 @@ module Prism
7371
7895
  ForwardingArgumentsNode.new(source, node_id, location, flags)
7372
7896
  end
7373
7897
 
7374
- # def deconstruct: () -> Array[nil | Node]
7898
+ # def deconstruct: () -> Array[Node?]
7375
7899
  alias deconstruct child_nodes
7376
7900
 
7377
7901
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location }
@@ -7420,11 +7944,17 @@ module Prism
7420
7944
  visitor.visit_forwarding_parameter_node(self)
7421
7945
  end
7422
7946
 
7423
- # def child_nodes: () -> Array[nil | Node]
7947
+ # def child_nodes: () -> Array[Node?]
7424
7948
  def child_nodes
7425
7949
  []
7426
7950
  end
7427
7951
 
7952
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
7953
+ def each_child_node
7954
+ return to_enum(:each_child_node) unless block_given?
7955
+
7956
+ end
7957
+
7428
7958
  # def compact_child_nodes: () -> Array[Node]
7429
7959
  def compact_child_nodes
7430
7960
  []
@@ -7440,7 +7970,7 @@ module Prism
7440
7970
  ForwardingParameterNode.new(source, node_id, location, flags)
7441
7971
  end
7442
7972
 
7443
- # def deconstruct: () -> Array[nil | Node]
7973
+ # def deconstruct: () -> Array[Node?]
7444
7974
  alias deconstruct child_nodes
7445
7975
 
7446
7976
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location }
@@ -7470,10 +8000,15 @@ module Prism
7470
8000
  end
7471
8001
  end
7472
8002
 
7473
- # Represents the use of the `super` keyword without parentheses or arguments.
8003
+ # Represents the use of the `super` keyword without parentheses or arguments, but which might have a block.
7474
8004
  #
7475
8005
  # super
7476
8006
  # ^^^^^
8007
+ #
8008
+ # super { 123 }
8009
+ # ^^^^^^^^^^^^^
8010
+ #
8011
+ # If it has any other arguments, it would be a `SuperNode` instead.
7477
8012
  class ForwardingSuperNode < Node
7478
8013
  # Initialize a new ForwardingSuperNode node.
7479
8014
  def initialize(source, node_id, location, flags, block)
@@ -7489,11 +8024,18 @@ module Prism
7489
8024
  visitor.visit_forwarding_super_node(self)
7490
8025
  end
7491
8026
 
7492
- # def child_nodes: () -> Array[nil | Node]
8027
+ # def child_nodes: () -> Array[Node?]
7493
8028
  def child_nodes
7494
8029
  [block]
7495
8030
  end
7496
8031
 
8032
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
8033
+ def each_child_node
8034
+ return to_enum(:each_child_node) unless block_given?
8035
+
8036
+ yield block if block
8037
+ end
8038
+
7497
8039
  # def compact_child_nodes: () -> Array[Node]
7498
8040
  def compact_child_nodes
7499
8041
  compact = [] #: Array[Prism::node]
@@ -7511,7 +8053,7 @@ module Prism
7511
8053
  ForwardingSuperNode.new(source, node_id, location, flags, block)
7512
8054
  end
7513
8055
 
7514
- # def deconstruct: () -> Array[nil | Node]
8056
+ # def deconstruct: () -> Array[Node?]
7515
8057
  alias deconstruct child_nodes
7516
8058
 
7517
8059
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, block: BlockNode? }
@@ -7519,7 +8061,7 @@ module Prism
7519
8061
  { node_id: node_id, location: location, block: block }
7520
8062
  end
7521
8063
 
7522
- # attr_reader block: BlockNode?
8064
+ # All other arguments are forwarded as normal, except the original block is replaced with the new block.
7523
8065
  attr_reader :block
7524
8066
 
7525
8067
  # def inspect -> String
@@ -7567,11 +8109,18 @@ module Prism
7567
8109
  visitor.visit_global_variable_and_write_node(self)
7568
8110
  end
7569
8111
 
7570
- # def child_nodes: () -> Array[nil | Node]
8112
+ # def child_nodes: () -> Array[Node?]
7571
8113
  def child_nodes
7572
8114
  [value]
7573
8115
  end
7574
8116
 
8117
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
8118
+ def each_child_node
8119
+ return to_enum(:each_child_node) unless block_given?
8120
+
8121
+ yield value
8122
+ end
8123
+
7575
8124
  # def compact_child_nodes: () -> Array[Node]
7576
8125
  def compact_child_nodes
7577
8126
  [value]
@@ -7587,7 +8136,7 @@ module Prism
7587
8136
  GlobalVariableAndWriteNode.new(source, node_id, location, flags, name, name_loc, operator_loc, value)
7588
8137
  end
7589
8138
 
7590
- # def deconstruct: () -> Array[nil | Node]
8139
+ # def deconstruct: () -> Array[Node?]
7591
8140
  alias deconstruct child_nodes
7592
8141
 
7593
8142
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol, name_loc: Location, operator_loc: Location, value: Prism::node }
@@ -7681,11 +8230,18 @@ module Prism
7681
8230
  visitor.visit_global_variable_operator_write_node(self)
7682
8231
  end
7683
8232
 
7684
- # def child_nodes: () -> Array[nil | Node]
8233
+ # def child_nodes: () -> Array[Node?]
7685
8234
  def child_nodes
7686
8235
  [value]
7687
8236
  end
7688
8237
 
8238
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
8239
+ def each_child_node
8240
+ return to_enum(:each_child_node) unless block_given?
8241
+
8242
+ yield value
8243
+ end
8244
+
7689
8245
  # def compact_child_nodes: () -> Array[Node]
7690
8246
  def compact_child_nodes
7691
8247
  [value]
@@ -7701,7 +8257,7 @@ module Prism
7701
8257
  GlobalVariableOperatorWriteNode.new(source, node_id, location, flags, name, name_loc, binary_operator_loc, value, binary_operator)
7702
8258
  end
7703
8259
 
7704
- # def deconstruct: () -> Array[nil | Node]
8260
+ # def deconstruct: () -> Array[Node?]
7705
8261
  alias deconstruct child_nodes
7706
8262
 
7707
8263
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol, name_loc: Location, binary_operator_loc: Location, value: Prism::node, binary_operator: Symbol }
@@ -7793,11 +8349,18 @@ module Prism
7793
8349
  visitor.visit_global_variable_or_write_node(self)
7794
8350
  end
7795
8351
 
7796
- # def child_nodes: () -> Array[nil | Node]
8352
+ # def child_nodes: () -> Array[Node?]
7797
8353
  def child_nodes
7798
8354
  [value]
7799
8355
  end
7800
8356
 
8357
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
8358
+ def each_child_node
8359
+ return to_enum(:each_child_node) unless block_given?
8360
+
8361
+ yield value
8362
+ end
8363
+
7801
8364
  # def compact_child_nodes: () -> Array[Node]
7802
8365
  def compact_child_nodes
7803
8366
  [value]
@@ -7813,7 +8376,7 @@ module Prism
7813
8376
  GlobalVariableOrWriteNode.new(source, node_id, location, flags, name, name_loc, operator_loc, value)
7814
8377
  end
7815
8378
 
7816
- # def deconstruct: () -> Array[nil | Node]
8379
+ # def deconstruct: () -> Array[Node?]
7817
8380
  alias deconstruct child_nodes
7818
8381
 
7819
8382
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol, name_loc: Location, operator_loc: Location, value: Prism::node }
@@ -7903,11 +8466,17 @@ module Prism
7903
8466
  visitor.visit_global_variable_read_node(self)
7904
8467
  end
7905
8468
 
7906
- # def child_nodes: () -> Array[nil | Node]
8469
+ # def child_nodes: () -> Array[Node?]
7907
8470
  def child_nodes
7908
8471
  []
7909
8472
  end
7910
8473
 
8474
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
8475
+ def each_child_node
8476
+ return to_enum(:each_child_node) unless block_given?
8477
+
8478
+ end
8479
+
7911
8480
  # def compact_child_nodes: () -> Array[Node]
7912
8481
  def compact_child_nodes
7913
8482
  []
@@ -7923,7 +8492,7 @@ module Prism
7923
8492
  GlobalVariableReadNode.new(source, node_id, location, flags, name)
7924
8493
  end
7925
8494
 
7926
- # def deconstruct: () -> Array[nil | Node]
8495
+ # def deconstruct: () -> Array[Node?]
7927
8496
  alias deconstruct child_nodes
7928
8497
 
7929
8498
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol }
@@ -7980,11 +8549,17 @@ module Prism
7980
8549
  visitor.visit_global_variable_target_node(self)
7981
8550
  end
7982
8551
 
7983
- # def child_nodes: () -> Array[nil | Node]
8552
+ # def child_nodes: () -> Array[Node?]
7984
8553
  def child_nodes
7985
8554
  []
7986
8555
  end
7987
8556
 
8557
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
8558
+ def each_child_node
8559
+ return to_enum(:each_child_node) unless block_given?
8560
+
8561
+ end
8562
+
7988
8563
  # def compact_child_nodes: () -> Array[Node]
7989
8564
  def compact_child_nodes
7990
8565
  []
@@ -8000,7 +8575,7 @@ module Prism
8000
8575
  GlobalVariableTargetNode.new(source, node_id, location, flags, name)
8001
8576
  end
8002
8577
 
8003
- # def deconstruct: () -> Array[nil | Node]
8578
+ # def deconstruct: () -> Array[Node?]
8004
8579
  alias deconstruct child_nodes
8005
8580
 
8006
8581
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol }
@@ -8056,11 +8631,18 @@ module Prism
8056
8631
  visitor.visit_global_variable_write_node(self)
8057
8632
  end
8058
8633
 
8059
- # def child_nodes: () -> Array[nil | Node]
8634
+ # def child_nodes: () -> Array[Node?]
8060
8635
  def child_nodes
8061
8636
  [value]
8062
8637
  end
8063
8638
 
8639
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
8640
+ def each_child_node
8641
+ return to_enum(:each_child_node) unless block_given?
8642
+
8643
+ yield value
8644
+ end
8645
+
8064
8646
  # def compact_child_nodes: () -> Array[Node]
8065
8647
  def compact_child_nodes
8066
8648
  [value]
@@ -8076,7 +8658,7 @@ module Prism
8076
8658
  GlobalVariableWriteNode.new(source, node_id, location, flags, name, name_loc, value, operator_loc)
8077
8659
  end
8078
8660
 
8079
- # def deconstruct: () -> Array[nil | Node]
8661
+ # def deconstruct: () -> Array[Node?]
8080
8662
  alias deconstruct child_nodes
8081
8663
 
8082
8664
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol, name_loc: Location, value: Prism::node, operator_loc: Location }
@@ -8184,11 +8766,18 @@ module Prism
8184
8766
  visitor.visit_hash_node(self)
8185
8767
  end
8186
8768
 
8187
- # def child_nodes: () -> Array[nil | Node]
8769
+ # def child_nodes: () -> Array[Node?]
8188
8770
  def child_nodes
8189
8771
  [*elements]
8190
8772
  end
8191
8773
 
8774
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
8775
+ def each_child_node
8776
+ return to_enum(:each_child_node) unless block_given?
8777
+
8778
+ elements.each { |node| yield node }
8779
+ end
8780
+
8192
8781
  # def compact_child_nodes: () -> Array[Node]
8193
8782
  def compact_child_nodes
8194
8783
  [*elements]
@@ -8204,7 +8793,7 @@ module Prism
8204
8793
  HashNode.new(source, node_id, location, flags, opening_loc, elements, closing_loc)
8205
8794
  end
8206
8795
 
8207
- # def deconstruct: () -> Array[nil | Node]
8796
+ # def deconstruct: () -> Array[Node?]
8208
8797
  alias deconstruct child_nodes
8209
8798
 
8210
8799
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, opening_loc: Location, elements: Array[AssocNode | AssocSplatNode], closing_loc: Location }
@@ -8296,6 +8885,12 @@ module Prism
8296
8885
  #
8297
8886
  # foo => { a: 1, b: 2, **c }
8298
8887
  # ^^^^^^^^^^^^^^^^^^^
8888
+ #
8889
+ # foo => Bar[a: 1, b: 2]
8890
+ # ^^^^^^^^^^^^^^^
8891
+ #
8892
+ # foo in { a: 1, b: 2 }
8893
+ # ^^^^^^^^^^^^^^
8299
8894
  class HashPatternNode < Node
8300
8895
  # Initialize a new HashPatternNode node.
8301
8896
  def initialize(source, node_id, location, flags, constant, elements, rest, opening_loc, closing_loc)
@@ -8315,11 +8910,20 @@ module Prism
8315
8910
  visitor.visit_hash_pattern_node(self)
8316
8911
  end
8317
8912
 
8318
- # def child_nodes: () -> Array[nil | Node]
8913
+ # def child_nodes: () -> Array[Node?]
8319
8914
  def child_nodes
8320
8915
  [constant, *elements, rest]
8321
8916
  end
8322
8917
 
8918
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
8919
+ def each_child_node
8920
+ return to_enum(:each_child_node) unless block_given?
8921
+
8922
+ yield constant if constant
8923
+ elements.each { |node| yield node }
8924
+ yield rest if rest
8925
+ end
8926
+
8323
8927
  # def compact_child_nodes: () -> Array[Node]
8324
8928
  def compact_child_nodes
8325
8929
  compact = [] #: Array[Prism::node]
@@ -8334,29 +8938,53 @@ module Prism
8334
8938
  [*constant, *elements, *rest, *opening_loc, *closing_loc] #: Array[Prism::node | Location]
8335
8939
  end
8336
8940
 
8337
- # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?constant: ConstantReadNode | ConstantPathNode | nil, ?elements: Array[AssocNode], ?rest: AssocSplatNode | NoKeywordsParameterNode | nil, ?opening_loc: Location?, ?closing_loc: Location?) -> HashPatternNode
8941
+ # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?constant: ConstantPathNode | ConstantReadNode | nil, ?elements: Array[AssocNode], ?rest: AssocSplatNode | NoKeywordsParameterNode | nil, ?opening_loc: Location?, ?closing_loc: Location?) -> HashPatternNode
8338
8942
  def copy(node_id: self.node_id, location: self.location, flags: self.flags, constant: self.constant, elements: self.elements, rest: self.rest, opening_loc: self.opening_loc, closing_loc: self.closing_loc)
8339
8943
  HashPatternNode.new(source, node_id, location, flags, constant, elements, rest, opening_loc, closing_loc)
8340
8944
  end
8341
8945
 
8342
- # def deconstruct: () -> Array[nil | Node]
8946
+ # def deconstruct: () -> Array[Node?]
8343
8947
  alias deconstruct child_nodes
8344
8948
 
8345
- # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, constant: ConstantReadNode | ConstantPathNode | nil, elements: Array[AssocNode], rest: AssocSplatNode | NoKeywordsParameterNode | nil, opening_loc: Location?, closing_loc: Location? }
8949
+ # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, constant: ConstantPathNode | ConstantReadNode | nil, elements: Array[AssocNode], rest: AssocSplatNode | NoKeywordsParameterNode | nil, opening_loc: Location?, closing_loc: Location? }
8346
8950
  def deconstruct_keys(keys)
8347
8951
  { node_id: node_id, location: location, constant: constant, elements: elements, rest: rest, opening_loc: opening_loc, closing_loc: closing_loc }
8348
8952
  end
8349
8953
 
8350
- # attr_reader constant: ConstantReadNode | ConstantPathNode | nil
8954
+ # Represents the optional constant preceding the Hash.
8955
+ #
8956
+ # foo => Bar[a: 1, b: 2]
8957
+ # ^^^
8958
+ #
8959
+ # foo => Bar::Baz[a: 1, b: 2]
8960
+ # ^^^^^^^^
8351
8961
  attr_reader :constant
8352
8962
 
8353
- # attr_reader elements: Array[AssocNode]
8963
+ # Represents the explicit named hash keys and values.
8964
+ #
8965
+ # foo => { a: 1, b:, ** }
8966
+ # ^^^^^^^^
8354
8967
  attr_reader :elements
8355
8968
 
8356
- # attr_reader rest: AssocSplatNode | NoKeywordsParameterNode | nil
8969
+ # Represents the rest of the Hash keys and values. This can be named, unnamed, or explicitly forbidden via `**nil`, this last one results in a `NoKeywordsParameterNode`.
8970
+ #
8971
+ # foo => { a: 1, b:, **c }
8972
+ # ^^^
8973
+ #
8974
+ # foo => { a: 1, b:, ** }
8975
+ # ^^
8976
+ #
8977
+ # foo => { a: 1, b:, **nil }
8978
+ # ^^^^^
8357
8979
  attr_reader :rest
8358
8980
 
8359
- # attr_reader opening_loc: Location?
8981
+ # The location of the opening brace.
8982
+ #
8983
+ # foo => { a: 1 }
8984
+ # ^
8985
+ #
8986
+ # foo => Bar[a: 1]
8987
+ # ^
8360
8988
  def opening_loc
8361
8989
  location = @opening_loc
8362
8990
  case location
@@ -8375,7 +9003,13 @@ module Prism
8375
9003
  repository.enter(node_id, :opening_loc) unless @opening_loc.nil?
8376
9004
  end
8377
9005
 
8378
- # attr_reader closing_loc: Location?
9006
+ # The location of the closing brace.
9007
+ #
9008
+ # foo => { a: 1 }
9009
+ # ^
9010
+ #
9011
+ # foo => Bar[a: 1]
9012
+ # ^
8379
9013
  def closing_loc
8380
9014
  location = @closing_loc
8381
9015
  case location
@@ -8462,11 +9096,20 @@ module Prism
8462
9096
  visitor.visit_if_node(self)
8463
9097
  end
8464
9098
 
8465
- # def child_nodes: () -> Array[nil | Node]
9099
+ # def child_nodes: () -> Array[Node?]
8466
9100
  def child_nodes
8467
9101
  [predicate, statements, subsequent]
8468
9102
  end
8469
9103
 
9104
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
9105
+ def each_child_node
9106
+ return to_enum(:each_child_node) unless block_given?
9107
+
9108
+ yield predicate
9109
+ yield statements if statements
9110
+ yield subsequent if subsequent
9111
+ end
9112
+
8470
9113
  # def compact_child_nodes: () -> Array[Node]
8471
9114
  def compact_child_nodes
8472
9115
  compact = [] #: Array[Prism::node]
@@ -8486,7 +9129,7 @@ module Prism
8486
9129
  IfNode.new(source, node_id, location, flags, if_keyword_loc, predicate, then_keyword_loc, statements, subsequent, end_keyword_loc)
8487
9130
  end
8488
9131
 
8489
- # def deconstruct: () -> Array[nil | Node]
9132
+ # def deconstruct: () -> Array[Node?]
8490
9133
  alias deconstruct child_nodes
8491
9134
 
8492
9135
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, if_keyword_loc: Location?, predicate: Prism::node, then_keyword_loc: Location?, statements: StatementsNode?, subsequent: ElseNode | IfNode | nil, end_keyword_loc: Location? }
@@ -8668,11 +9311,18 @@ module Prism
8668
9311
  visitor.visit_imaginary_node(self)
8669
9312
  end
8670
9313
 
8671
- # def child_nodes: () -> Array[nil | Node]
9314
+ # def child_nodes: () -> Array[Node?]
8672
9315
  def child_nodes
8673
9316
  [numeric]
8674
9317
  end
8675
9318
 
9319
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
9320
+ def each_child_node
9321
+ return to_enum(:each_child_node) unless block_given?
9322
+
9323
+ yield numeric
9324
+ end
9325
+
8676
9326
  # def compact_child_nodes: () -> Array[Node]
8677
9327
  def compact_child_nodes
8678
9328
  [numeric]
@@ -8688,7 +9338,7 @@ module Prism
8688
9338
  ImaginaryNode.new(source, node_id, location, flags, numeric)
8689
9339
  end
8690
9340
 
8691
- # def deconstruct: () -> Array[nil | Node]
9341
+ # def deconstruct: () -> Array[Node?]
8692
9342
  alias deconstruct child_nodes
8693
9343
 
8694
9344
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, numeric: FloatNode | IntegerNode | RationalNode }
@@ -8747,11 +9397,18 @@ module Prism
8747
9397
  visitor.visit_implicit_node(self)
8748
9398
  end
8749
9399
 
8750
- # def child_nodes: () -> Array[nil | Node]
9400
+ # def child_nodes: () -> Array[Node?]
8751
9401
  def child_nodes
8752
9402
  [value]
8753
9403
  end
8754
9404
 
9405
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
9406
+ def each_child_node
9407
+ return to_enum(:each_child_node) unless block_given?
9408
+
9409
+ yield value
9410
+ end
9411
+
8755
9412
  # def compact_child_nodes: () -> Array[Node]
8756
9413
  def compact_child_nodes
8757
9414
  [value]
@@ -8767,7 +9424,7 @@ module Prism
8767
9424
  ImplicitNode.new(source, node_id, location, flags, value)
8768
9425
  end
8769
9426
 
8770
- # def deconstruct: () -> Array[nil | Node]
9427
+ # def deconstruct: () -> Array[Node?]
8771
9428
  alias deconstruct child_nodes
8772
9429
 
8773
9430
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, value: LocalVariableReadNode | CallNode | ConstantReadNode | LocalVariableTargetNode }
@@ -8828,11 +9485,17 @@ module Prism
8828
9485
  visitor.visit_implicit_rest_node(self)
8829
9486
  end
8830
9487
 
8831
- # def child_nodes: () -> Array[nil | Node]
9488
+ # def child_nodes: () -> Array[Node?]
8832
9489
  def child_nodes
8833
9490
  []
8834
9491
  end
8835
9492
 
9493
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
9494
+ def each_child_node
9495
+ return to_enum(:each_child_node) unless block_given?
9496
+
9497
+ end
9498
+
8836
9499
  # def compact_child_nodes: () -> Array[Node]
8837
9500
  def compact_child_nodes
8838
9501
  []
@@ -8848,7 +9511,7 @@ module Prism
8848
9511
  ImplicitRestNode.new(source, node_id, location, flags)
8849
9512
  end
8850
9513
 
8851
- # def deconstruct: () -> Array[nil | Node]
9514
+ # def deconstruct: () -> Array[Node?]
8852
9515
  alias deconstruct child_nodes
8853
9516
 
8854
9517
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location }
@@ -8900,11 +9563,19 @@ module Prism
8900
9563
  visitor.visit_in_node(self)
8901
9564
  end
8902
9565
 
8903
- # def child_nodes: () -> Array[nil | Node]
9566
+ # def child_nodes: () -> Array[Node?]
8904
9567
  def child_nodes
8905
9568
  [pattern, statements]
8906
9569
  end
8907
9570
 
9571
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
9572
+ def each_child_node
9573
+ return to_enum(:each_child_node) unless block_given?
9574
+
9575
+ yield pattern
9576
+ yield statements if statements
9577
+ end
9578
+
8908
9579
  # def compact_child_nodes: () -> Array[Node]
8909
9580
  def compact_child_nodes
8910
9581
  compact = [] #: Array[Prism::node]
@@ -8923,7 +9594,7 @@ module Prism
8923
9594
  InNode.new(source, node_id, location, flags, pattern, statements, in_loc, then_loc)
8924
9595
  end
8925
9596
 
8926
- # def deconstruct: () -> Array[nil | Node]
9597
+ # def deconstruct: () -> Array[Node?]
8927
9598
  alias deconstruct child_nodes
8928
9599
 
8929
9600
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, pattern: Prism::node, statements: StatementsNode?, in_loc: Location, then_loc: Location? }
@@ -9031,11 +9702,21 @@ module Prism
9031
9702
  visitor.visit_index_and_write_node(self)
9032
9703
  end
9033
9704
 
9034
- # def child_nodes: () -> Array[nil | Node]
9705
+ # def child_nodes: () -> Array[Node?]
9035
9706
  def child_nodes
9036
9707
  [receiver, arguments, block, value]
9037
9708
  end
9038
9709
 
9710
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
9711
+ def each_child_node
9712
+ return to_enum(:each_child_node) unless block_given?
9713
+
9714
+ yield receiver if receiver
9715
+ yield arguments if arguments
9716
+ yield block if block
9717
+ yield value
9718
+ end
9719
+
9039
9720
  # def compact_child_nodes: () -> Array[Node]
9040
9721
  def compact_child_nodes
9041
9722
  compact = [] #: Array[Prism::node]
@@ -9056,7 +9737,7 @@ module Prism
9056
9737
  IndexAndWriteNode.new(source, node_id, location, flags, receiver, call_operator_loc, opening_loc, arguments, closing_loc, block, operator_loc, value)
9057
9738
  end
9058
9739
 
9059
- # def deconstruct: () -> Array[nil | Node]
9740
+ # def deconstruct: () -> Array[Node?]
9060
9741
  alias deconstruct child_nodes
9061
9742
 
9062
9743
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, receiver: Prism::node?, call_operator_loc: Location?, opening_loc: Location, arguments: ArgumentsNode?, closing_loc: Location, block: BlockArgumentNode?, operator_loc: Location, value: Prism::node }
@@ -9232,11 +9913,21 @@ module Prism
9232
9913
  visitor.visit_index_operator_write_node(self)
9233
9914
  end
9234
9915
 
9235
- # def child_nodes: () -> Array[nil | Node]
9916
+ # def child_nodes: () -> Array[Node?]
9236
9917
  def child_nodes
9237
9918
  [receiver, arguments, block, value]
9238
9919
  end
9239
9920
 
9921
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
9922
+ def each_child_node
9923
+ return to_enum(:each_child_node) unless block_given?
9924
+
9925
+ yield receiver if receiver
9926
+ yield arguments if arguments
9927
+ yield block if block
9928
+ yield value
9929
+ end
9930
+
9240
9931
  # def compact_child_nodes: () -> Array[Node]
9241
9932
  def compact_child_nodes
9242
9933
  compact = [] #: Array[Prism::node]
@@ -9257,7 +9948,7 @@ module Prism
9257
9948
  IndexOperatorWriteNode.new(source, node_id, location, flags, receiver, call_operator_loc, opening_loc, arguments, closing_loc, block, binary_operator, binary_operator_loc, value)
9258
9949
  end
9259
9950
 
9260
- # def deconstruct: () -> Array[nil | Node]
9951
+ # def deconstruct: () -> Array[Node?]
9261
9952
  alias deconstruct child_nodes
9262
9953
 
9263
9954
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, receiver: Prism::node?, call_operator_loc: Location?, opening_loc: Location, arguments: ArgumentsNode?, closing_loc: Location, block: BlockArgumentNode?, binary_operator: Symbol, binary_operator_loc: Location, value: Prism::node }
@@ -9431,11 +10122,21 @@ module Prism
9431
10122
  visitor.visit_index_or_write_node(self)
9432
10123
  end
9433
10124
 
9434
- # def child_nodes: () -> Array[nil | Node]
10125
+ # def child_nodes: () -> Array[Node?]
9435
10126
  def child_nodes
9436
10127
  [receiver, arguments, block, value]
9437
10128
  end
9438
10129
 
10130
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
10131
+ def each_child_node
10132
+ return to_enum(:each_child_node) unless block_given?
10133
+
10134
+ yield receiver if receiver
10135
+ yield arguments if arguments
10136
+ yield block if block
10137
+ yield value
10138
+ end
10139
+
9439
10140
  # def compact_child_nodes: () -> Array[Node]
9440
10141
  def compact_child_nodes
9441
10142
  compact = [] #: Array[Prism::node]
@@ -9456,7 +10157,7 @@ module Prism
9456
10157
  IndexOrWriteNode.new(source, node_id, location, flags, receiver, call_operator_loc, opening_loc, arguments, closing_loc, block, operator_loc, value)
9457
10158
  end
9458
10159
 
9459
- # def deconstruct: () -> Array[nil | Node]
10160
+ # def deconstruct: () -> Array[Node?]
9460
10161
  alias deconstruct child_nodes
9461
10162
 
9462
10163
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, receiver: Prism::node?, call_operator_loc: Location?, opening_loc: Location, arguments: ArgumentsNode?, closing_loc: Location, block: BlockArgumentNode?, operator_loc: Location, value: Prism::node }
@@ -9636,11 +10337,20 @@ module Prism
9636
10337
  visitor.visit_index_target_node(self)
9637
10338
  end
9638
10339
 
9639
- # def child_nodes: () -> Array[nil | Node]
10340
+ # def child_nodes: () -> Array[Node?]
9640
10341
  def child_nodes
9641
10342
  [receiver, arguments, block]
9642
10343
  end
9643
10344
 
10345
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
10346
+ def each_child_node
10347
+ return to_enum(:each_child_node) unless block_given?
10348
+
10349
+ yield receiver
10350
+ yield arguments if arguments
10351
+ yield block if block
10352
+ end
10353
+
9644
10354
  # def compact_child_nodes: () -> Array[Node]
9645
10355
  def compact_child_nodes
9646
10356
  compact = [] #: Array[Prism::node]
@@ -9660,7 +10370,7 @@ module Prism
9660
10370
  IndexTargetNode.new(source, node_id, location, flags, receiver, opening_loc, arguments, closing_loc, block)
9661
10371
  end
9662
10372
 
9663
- # def deconstruct: () -> Array[nil | Node]
10373
+ # def deconstruct: () -> Array[Node?]
9664
10374
  alias deconstruct child_nodes
9665
10375
 
9666
10376
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, receiver: Prism::node, opening_loc: Location, arguments: ArgumentsNode?, closing_loc: Location, block: BlockArgumentNode? }
@@ -9783,11 +10493,18 @@ module Prism
9783
10493
  visitor.visit_instance_variable_and_write_node(self)
9784
10494
  end
9785
10495
 
9786
- # def child_nodes: () -> Array[nil | Node]
10496
+ # def child_nodes: () -> Array[Node?]
9787
10497
  def child_nodes
9788
10498
  [value]
9789
10499
  end
9790
10500
 
10501
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
10502
+ def each_child_node
10503
+ return to_enum(:each_child_node) unless block_given?
10504
+
10505
+ yield value
10506
+ end
10507
+
9791
10508
  # def compact_child_nodes: () -> Array[Node]
9792
10509
  def compact_child_nodes
9793
10510
  [value]
@@ -9803,7 +10520,7 @@ module Prism
9803
10520
  InstanceVariableAndWriteNode.new(source, node_id, location, flags, name, name_loc, operator_loc, value)
9804
10521
  end
9805
10522
 
9806
- # def deconstruct: () -> Array[nil | Node]
10523
+ # def deconstruct: () -> Array[Node?]
9807
10524
  alias deconstruct child_nodes
9808
10525
 
9809
10526
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol, name_loc: Location, operator_loc: Location, value: Prism::node }
@@ -9897,11 +10614,18 @@ module Prism
9897
10614
  visitor.visit_instance_variable_operator_write_node(self)
9898
10615
  end
9899
10616
 
9900
- # def child_nodes: () -> Array[nil | Node]
10617
+ # def child_nodes: () -> Array[Node?]
9901
10618
  def child_nodes
9902
10619
  [value]
9903
10620
  end
9904
10621
 
10622
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
10623
+ def each_child_node
10624
+ return to_enum(:each_child_node) unless block_given?
10625
+
10626
+ yield value
10627
+ end
10628
+
9905
10629
  # def compact_child_nodes: () -> Array[Node]
9906
10630
  def compact_child_nodes
9907
10631
  [value]
@@ -9917,7 +10641,7 @@ module Prism
9917
10641
  InstanceVariableOperatorWriteNode.new(source, node_id, location, flags, name, name_loc, binary_operator_loc, value, binary_operator)
9918
10642
  end
9919
10643
 
9920
- # def deconstruct: () -> Array[nil | Node]
10644
+ # def deconstruct: () -> Array[Node?]
9921
10645
  alias deconstruct child_nodes
9922
10646
 
9923
10647
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol, name_loc: Location, binary_operator_loc: Location, value: Prism::node, binary_operator: Symbol }
@@ -10009,11 +10733,18 @@ module Prism
10009
10733
  visitor.visit_instance_variable_or_write_node(self)
10010
10734
  end
10011
10735
 
10012
- # def child_nodes: () -> Array[nil | Node]
10736
+ # def child_nodes: () -> Array[Node?]
10013
10737
  def child_nodes
10014
10738
  [value]
10015
10739
  end
10016
10740
 
10741
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
10742
+ def each_child_node
10743
+ return to_enum(:each_child_node) unless block_given?
10744
+
10745
+ yield value
10746
+ end
10747
+
10017
10748
  # def compact_child_nodes: () -> Array[Node]
10018
10749
  def compact_child_nodes
10019
10750
  [value]
@@ -10029,7 +10760,7 @@ module Prism
10029
10760
  InstanceVariableOrWriteNode.new(source, node_id, location, flags, name, name_loc, operator_loc, value)
10030
10761
  end
10031
10762
 
10032
- # def deconstruct: () -> Array[nil | Node]
10763
+ # def deconstruct: () -> Array[Node?]
10033
10764
  alias deconstruct child_nodes
10034
10765
 
10035
10766
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol, name_loc: Location, operator_loc: Location, value: Prism::node }
@@ -10119,11 +10850,17 @@ module Prism
10119
10850
  visitor.visit_instance_variable_read_node(self)
10120
10851
  end
10121
10852
 
10122
- # def child_nodes: () -> Array[nil | Node]
10853
+ # def child_nodes: () -> Array[Node?]
10123
10854
  def child_nodes
10124
10855
  []
10125
10856
  end
10126
10857
 
10858
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
10859
+ def each_child_node
10860
+ return to_enum(:each_child_node) unless block_given?
10861
+
10862
+ end
10863
+
10127
10864
  # def compact_child_nodes: () -> Array[Node]
10128
10865
  def compact_child_nodes
10129
10866
  []
@@ -10139,7 +10876,7 @@ module Prism
10139
10876
  InstanceVariableReadNode.new(source, node_id, location, flags, name)
10140
10877
  end
10141
10878
 
10142
- # def deconstruct: () -> Array[nil | Node]
10879
+ # def deconstruct: () -> Array[Node?]
10143
10880
  alias deconstruct child_nodes
10144
10881
 
10145
10882
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol }
@@ -10196,11 +10933,17 @@ module Prism
10196
10933
  visitor.visit_instance_variable_target_node(self)
10197
10934
  end
10198
10935
 
10199
- # def child_nodes: () -> Array[nil | Node]
10936
+ # def child_nodes: () -> Array[Node?]
10200
10937
  def child_nodes
10201
10938
  []
10202
10939
  end
10203
10940
 
10941
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
10942
+ def each_child_node
10943
+ return to_enum(:each_child_node) unless block_given?
10944
+
10945
+ end
10946
+
10204
10947
  # def compact_child_nodes: () -> Array[Node]
10205
10948
  def compact_child_nodes
10206
10949
  []
@@ -10216,7 +10959,7 @@ module Prism
10216
10959
  InstanceVariableTargetNode.new(source, node_id, location, flags, name)
10217
10960
  end
10218
10961
 
10219
- # def deconstruct: () -> Array[nil | Node]
10962
+ # def deconstruct: () -> Array[Node?]
10220
10963
  alias deconstruct child_nodes
10221
10964
 
10222
10965
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol }
@@ -10272,11 +11015,18 @@ module Prism
10272
11015
  visitor.visit_instance_variable_write_node(self)
10273
11016
  end
10274
11017
 
10275
- # def child_nodes: () -> Array[nil | Node]
11018
+ # def child_nodes: () -> Array[Node?]
10276
11019
  def child_nodes
10277
11020
  [value]
10278
11021
  end
10279
11022
 
11023
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
11024
+ def each_child_node
11025
+ return to_enum(:each_child_node) unless block_given?
11026
+
11027
+ yield value
11028
+ end
11029
+
10280
11030
  # def compact_child_nodes: () -> Array[Node]
10281
11031
  def compact_child_nodes
10282
11032
  [value]
@@ -10292,7 +11042,7 @@ module Prism
10292
11042
  InstanceVariableWriteNode.new(source, node_id, location, flags, name, name_loc, value, operator_loc)
10293
11043
  end
10294
11044
 
10295
- # def deconstruct: () -> Array[nil | Node]
11045
+ # def deconstruct: () -> Array[Node?]
10296
11046
  alias deconstruct child_nodes
10297
11047
 
10298
11048
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol, name_loc: Location, value: Prism::node, operator_loc: Location }
@@ -10398,11 +11148,17 @@ module Prism
10398
11148
  visitor.visit_integer_node(self)
10399
11149
  end
10400
11150
 
10401
- # def child_nodes: () -> Array[nil | Node]
11151
+ # def child_nodes: () -> Array[Node?]
10402
11152
  def child_nodes
10403
11153
  []
10404
11154
  end
10405
11155
 
11156
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
11157
+ def each_child_node
11158
+ return to_enum(:each_child_node) unless block_given?
11159
+
11160
+ end
11161
+
10406
11162
  # def compact_child_nodes: () -> Array[Node]
10407
11163
  def compact_child_nodes
10408
11164
  []
@@ -10418,7 +11174,7 @@ module Prism
10418
11174
  IntegerNode.new(source, node_id, location, flags, value)
10419
11175
  end
10420
11176
 
10421
- # def deconstruct: () -> Array[nil | Node]
11177
+ # def deconstruct: () -> Array[Node?]
10422
11178
  alias deconstruct child_nodes
10423
11179
 
10424
11180
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, value: Integer }
@@ -10494,11 +11250,18 @@ module Prism
10494
11250
  visitor.visit_interpolated_match_last_line_node(self)
10495
11251
  end
10496
11252
 
10497
- # def child_nodes: () -> Array[nil | Node]
11253
+ # def child_nodes: () -> Array[Node?]
10498
11254
  def child_nodes
10499
11255
  [*parts]
10500
11256
  end
10501
11257
 
11258
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
11259
+ def each_child_node
11260
+ return to_enum(:each_child_node) unless block_given?
11261
+
11262
+ parts.each { |node| yield node }
11263
+ end
11264
+
10502
11265
  # def compact_child_nodes: () -> Array[Node]
10503
11266
  def compact_child_nodes
10504
11267
  [*parts]
@@ -10514,7 +11277,7 @@ module Prism
10514
11277
  InterpolatedMatchLastLineNode.new(source, node_id, location, flags, opening_loc, parts, closing_loc)
10515
11278
  end
10516
11279
 
10517
- # def deconstruct: () -> Array[nil | Node]
11280
+ # def deconstruct: () -> Array[Node?]
10518
11281
  alias deconstruct child_nodes
10519
11282
 
10520
11283
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, opening_loc: Location, parts: Array[StringNode | EmbeddedStatementsNode | EmbeddedVariableNode], closing_loc: Location }
@@ -10664,11 +11427,18 @@ module Prism
10664
11427
  visitor.visit_interpolated_regular_expression_node(self)
10665
11428
  end
10666
11429
 
10667
- # def child_nodes: () -> Array[nil | Node]
11430
+ # def child_nodes: () -> Array[Node?]
10668
11431
  def child_nodes
10669
11432
  [*parts]
10670
11433
  end
10671
11434
 
11435
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
11436
+ def each_child_node
11437
+ return to_enum(:each_child_node) unless block_given?
11438
+
11439
+ parts.each { |node| yield node }
11440
+ end
11441
+
10672
11442
  # def compact_child_nodes: () -> Array[Node]
10673
11443
  def compact_child_nodes
10674
11444
  [*parts]
@@ -10684,7 +11454,7 @@ module Prism
10684
11454
  InterpolatedRegularExpressionNode.new(source, node_id, location, flags, opening_loc, parts, closing_loc)
10685
11455
  end
10686
11456
 
10687
- # def deconstruct: () -> Array[nil | Node]
11457
+ # def deconstruct: () -> Array[Node?]
10688
11458
  alias deconstruct child_nodes
10689
11459
 
10690
11460
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, opening_loc: Location, parts: Array[StringNode | EmbeddedStatementsNode | EmbeddedVariableNode], closing_loc: Location }
@@ -10834,11 +11604,18 @@ module Prism
10834
11604
  visitor.visit_interpolated_string_node(self)
10835
11605
  end
10836
11606
 
10837
- # def child_nodes: () -> Array[nil | Node]
11607
+ # def child_nodes: () -> Array[Node?]
10838
11608
  def child_nodes
10839
11609
  [*parts]
10840
11610
  end
10841
11611
 
11612
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
11613
+ def each_child_node
11614
+ return to_enum(:each_child_node) unless block_given?
11615
+
11616
+ parts.each { |node| yield node }
11617
+ end
11618
+
10842
11619
  # def compact_child_nodes: () -> Array[Node]
10843
11620
  def compact_child_nodes
10844
11621
  [*parts]
@@ -10849,15 +11626,15 @@ module Prism
10849
11626
  [*opening_loc, *parts, *closing_loc] #: Array[Prism::node | Location]
10850
11627
  end
10851
11628
 
10852
- # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?opening_loc: Location?, ?parts: Array[StringNode | EmbeddedStatementsNode | EmbeddedVariableNode | InterpolatedStringNode | XStringNode], ?closing_loc: Location?) -> InterpolatedStringNode
11629
+ # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?opening_loc: Location?, ?parts: Array[StringNode | EmbeddedStatementsNode | EmbeddedVariableNode | InterpolatedStringNode | XStringNode | InterpolatedXStringNode | SymbolNode | InterpolatedSymbolNode], ?closing_loc: Location?) -> InterpolatedStringNode
10853
11630
  def copy(node_id: self.node_id, location: self.location, flags: self.flags, opening_loc: self.opening_loc, parts: self.parts, closing_loc: self.closing_loc)
10854
11631
  InterpolatedStringNode.new(source, node_id, location, flags, opening_loc, parts, closing_loc)
10855
11632
  end
10856
11633
 
10857
- # def deconstruct: () -> Array[nil | Node]
11634
+ # def deconstruct: () -> Array[Node?]
10858
11635
  alias deconstruct child_nodes
10859
11636
 
10860
- # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, opening_loc: Location?, parts: Array[StringNode | EmbeddedStatementsNode | EmbeddedVariableNode | InterpolatedStringNode | XStringNode], closing_loc: Location? }
11637
+ # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, opening_loc: Location?, parts: Array[StringNode | EmbeddedStatementsNode | EmbeddedVariableNode | InterpolatedStringNode | XStringNode | InterpolatedXStringNode | SymbolNode | InterpolatedSymbolNode], closing_loc: Location? }
10861
11638
  def deconstruct_keys(keys)
10862
11639
  { node_id: node_id, location: location, opening_loc: opening_loc, parts: parts, closing_loc: closing_loc }
10863
11640
  end
@@ -10891,7 +11668,7 @@ module Prism
10891
11668
  repository.enter(node_id, :opening_loc) unless @opening_loc.nil?
10892
11669
  end
10893
11670
 
10894
- # attr_reader parts: Array[StringNode | EmbeddedStatementsNode | EmbeddedVariableNode | InterpolatedStringNode | XStringNode]
11671
+ # attr_reader parts: Array[StringNode | EmbeddedStatementsNode | EmbeddedVariableNode | InterpolatedStringNode | XStringNode | InterpolatedXStringNode | SymbolNode | InterpolatedSymbolNode]
10895
11672
  attr_reader :parts
10896
11673
 
10897
11674
  # attr_reader closing_loc: Location?
@@ -10971,11 +11748,18 @@ module Prism
10971
11748
  visitor.visit_interpolated_symbol_node(self)
10972
11749
  end
10973
11750
 
10974
- # def child_nodes: () -> Array[nil | Node]
11751
+ # def child_nodes: () -> Array[Node?]
10975
11752
  def child_nodes
10976
11753
  [*parts]
10977
11754
  end
10978
11755
 
11756
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
11757
+ def each_child_node
11758
+ return to_enum(:each_child_node) unless block_given?
11759
+
11760
+ parts.each { |node| yield node }
11761
+ end
11762
+
10979
11763
  # def compact_child_nodes: () -> Array[Node]
10980
11764
  def compact_child_nodes
10981
11765
  [*parts]
@@ -10991,7 +11775,7 @@ module Prism
10991
11775
  InterpolatedSymbolNode.new(source, node_id, location, flags, opening_loc, parts, closing_loc)
10992
11776
  end
10993
11777
 
10994
- # def deconstruct: () -> Array[nil | Node]
11778
+ # def deconstruct: () -> Array[Node?]
10995
11779
  alias deconstruct child_nodes
10996
11780
 
10997
11781
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, opening_loc: Location?, parts: Array[StringNode | EmbeddedStatementsNode | EmbeddedVariableNode], closing_loc: Location? }
@@ -11097,11 +11881,18 @@ module Prism
11097
11881
  visitor.visit_interpolated_x_string_node(self)
11098
11882
  end
11099
11883
 
11100
- # def child_nodes: () -> Array[nil | Node]
11884
+ # def child_nodes: () -> Array[Node?]
11101
11885
  def child_nodes
11102
11886
  [*parts]
11103
11887
  end
11104
11888
 
11889
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
11890
+ def each_child_node
11891
+ return to_enum(:each_child_node) unless block_given?
11892
+
11893
+ parts.each { |node| yield node }
11894
+ end
11895
+
11105
11896
  # def compact_child_nodes: () -> Array[Node]
11106
11897
  def compact_child_nodes
11107
11898
  [*parts]
@@ -11117,7 +11908,7 @@ module Prism
11117
11908
  InterpolatedXStringNode.new(source, node_id, location, flags, opening_loc, parts, closing_loc)
11118
11909
  end
11119
11910
 
11120
- # def deconstruct: () -> Array[nil | Node]
11911
+ # def deconstruct: () -> Array[Node?]
11121
11912
  alias deconstruct child_nodes
11122
11913
 
11123
11914
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, opening_loc: Location, parts: Array[StringNode | EmbeddedStatementsNode | EmbeddedVariableNode], closing_loc: Location }
@@ -11208,11 +11999,17 @@ module Prism
11208
11999
  visitor.visit_it_local_variable_read_node(self)
11209
12000
  end
11210
12001
 
11211
- # def child_nodes: () -> Array[nil | Node]
12002
+ # def child_nodes: () -> Array[Node?]
11212
12003
  def child_nodes
11213
12004
  []
11214
12005
  end
11215
12006
 
12007
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
12008
+ def each_child_node
12009
+ return to_enum(:each_child_node) unless block_given?
12010
+
12011
+ end
12012
+
11216
12013
  # def compact_child_nodes: () -> Array[Node]
11217
12014
  def compact_child_nodes
11218
12015
  []
@@ -11228,7 +12025,7 @@ module Prism
11228
12025
  ItLocalVariableReadNode.new(source, node_id, location, flags)
11229
12026
  end
11230
12027
 
11231
- # def deconstruct: () -> Array[nil | Node]
12028
+ # def deconstruct: () -> Array[Node?]
11232
12029
  alias deconstruct child_nodes
11233
12030
 
11234
12031
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location }
@@ -11276,11 +12073,17 @@ module Prism
11276
12073
  visitor.visit_it_parameters_node(self)
11277
12074
  end
11278
12075
 
11279
- # def child_nodes: () -> Array[nil | Node]
12076
+ # def child_nodes: () -> Array[Node?]
11280
12077
  def child_nodes
11281
12078
  []
11282
12079
  end
11283
12080
 
12081
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
12082
+ def each_child_node
12083
+ return to_enum(:each_child_node) unless block_given?
12084
+
12085
+ end
12086
+
11284
12087
  # def compact_child_nodes: () -> Array[Node]
11285
12088
  def compact_child_nodes
11286
12089
  []
@@ -11296,7 +12099,7 @@ module Prism
11296
12099
  ItParametersNode.new(source, node_id, location, flags)
11297
12100
  end
11298
12101
 
11299
- # def deconstruct: () -> Array[nil | Node]
12102
+ # def deconstruct: () -> Array[Node?]
11300
12103
  alias deconstruct child_nodes
11301
12104
 
11302
12105
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location }
@@ -11345,11 +12148,18 @@ module Prism
11345
12148
  visitor.visit_keyword_hash_node(self)
11346
12149
  end
11347
12150
 
11348
- # def child_nodes: () -> Array[nil | Node]
12151
+ # def child_nodes: () -> Array[Node?]
11349
12152
  def child_nodes
11350
12153
  [*elements]
11351
12154
  end
11352
12155
 
12156
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
12157
+ def each_child_node
12158
+ return to_enum(:each_child_node) unless block_given?
12159
+
12160
+ elements.each { |node| yield node }
12161
+ end
12162
+
11353
12163
  # def compact_child_nodes: () -> Array[Node]
11354
12164
  def compact_child_nodes
11355
12165
  [*elements]
@@ -11365,7 +12175,7 @@ module Prism
11365
12175
  KeywordHashNode.new(source, node_id, location, flags, elements)
11366
12176
  end
11367
12177
 
11368
- # def deconstruct: () -> Array[nil | Node]
12178
+ # def deconstruct: () -> Array[Node?]
11369
12179
  alias deconstruct child_nodes
11370
12180
 
11371
12181
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, elements: Array[AssocNode | AssocSplatNode] }
@@ -11428,11 +12238,17 @@ module Prism
11428
12238
  visitor.visit_keyword_rest_parameter_node(self)
11429
12239
  end
11430
12240
 
11431
- # def child_nodes: () -> Array[nil | Node]
12241
+ # def child_nodes: () -> Array[Node?]
11432
12242
  def child_nodes
11433
12243
  []
11434
12244
  end
11435
12245
 
12246
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
12247
+ def each_child_node
12248
+ return to_enum(:each_child_node) unless block_given?
12249
+
12250
+ end
12251
+
11436
12252
  # def compact_child_nodes: () -> Array[Node]
11437
12253
  def compact_child_nodes
11438
12254
  []
@@ -11448,7 +12264,7 @@ module Prism
11448
12264
  KeywordRestParameterNode.new(source, node_id, location, flags, name, name_loc, operator_loc)
11449
12265
  end
11450
12266
 
11451
- # def deconstruct: () -> Array[nil | Node]
12267
+ # def deconstruct: () -> Array[Node?]
11452
12268
  alias deconstruct child_nodes
11453
12269
 
11454
12270
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol?, name_loc: Location?, operator_loc: Location }
@@ -11551,11 +12367,19 @@ module Prism
11551
12367
  visitor.visit_lambda_node(self)
11552
12368
  end
11553
12369
 
11554
- # def child_nodes: () -> Array[nil | Node]
12370
+ # def child_nodes: () -> Array[Node?]
11555
12371
  def child_nodes
11556
12372
  [parameters, body]
11557
12373
  end
11558
12374
 
12375
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
12376
+ def each_child_node
12377
+ return to_enum(:each_child_node) unless block_given?
12378
+
12379
+ yield parameters if parameters
12380
+ yield body if body
12381
+ end
12382
+
11559
12383
  # def compact_child_nodes: () -> Array[Node]
11560
12384
  def compact_child_nodes
11561
12385
  compact = [] #: Array[Prism::node]
@@ -11574,7 +12398,7 @@ module Prism
11574
12398
  LambdaNode.new(source, node_id, location, flags, locals, operator_loc, opening_loc, closing_loc, parameters, body)
11575
12399
  end
11576
12400
 
11577
- # def deconstruct: () -> Array[nil | Node]
12401
+ # def deconstruct: () -> Array[Node?]
11578
12402
  alias deconstruct child_nodes
11579
12403
 
11580
12404
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, locals: Array[Symbol], operator_loc: Location, opening_loc: Location, closing_loc: Location, parameters: BlockParametersNode | NumberedParametersNode | ItParametersNode | nil, body: StatementsNode | BeginNode | nil }
@@ -11697,11 +12521,18 @@ module Prism
11697
12521
  visitor.visit_local_variable_and_write_node(self)
11698
12522
  end
11699
12523
 
11700
- # def child_nodes: () -> Array[nil | Node]
12524
+ # def child_nodes: () -> Array[Node?]
11701
12525
  def child_nodes
11702
12526
  [value]
11703
12527
  end
11704
12528
 
12529
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
12530
+ def each_child_node
12531
+ return to_enum(:each_child_node) unless block_given?
12532
+
12533
+ yield value
12534
+ end
12535
+
11705
12536
  # def compact_child_nodes: () -> Array[Node]
11706
12537
  def compact_child_nodes
11707
12538
  [value]
@@ -11717,7 +12548,7 @@ module Prism
11717
12548
  LocalVariableAndWriteNode.new(source, node_id, location, flags, name_loc, operator_loc, value, name, depth)
11718
12549
  end
11719
12550
 
11720
- # def deconstruct: () -> Array[nil | Node]
12551
+ # def deconstruct: () -> Array[Node?]
11721
12552
  alias deconstruct child_nodes
11722
12553
 
11723
12554
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name_loc: Location, operator_loc: Location, value: Prism::node, name: Symbol, depth: Integer }
@@ -11816,11 +12647,18 @@ module Prism
11816
12647
  visitor.visit_local_variable_operator_write_node(self)
11817
12648
  end
11818
12649
 
11819
- # def child_nodes: () -> Array[nil | Node]
12650
+ # def child_nodes: () -> Array[Node?]
11820
12651
  def child_nodes
11821
12652
  [value]
11822
12653
  end
11823
12654
 
12655
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
12656
+ def each_child_node
12657
+ return to_enum(:each_child_node) unless block_given?
12658
+
12659
+ yield value
12660
+ end
12661
+
11824
12662
  # def compact_child_nodes: () -> Array[Node]
11825
12663
  def compact_child_nodes
11826
12664
  [value]
@@ -11836,7 +12674,7 @@ module Prism
11836
12674
  LocalVariableOperatorWriteNode.new(source, node_id, location, flags, name_loc, binary_operator_loc, value, name, binary_operator, depth)
11837
12675
  end
11838
12676
 
11839
- # def deconstruct: () -> Array[nil | Node]
12677
+ # def deconstruct: () -> Array[Node?]
11840
12678
  alias deconstruct child_nodes
11841
12679
 
11842
12680
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name_loc: Location, binary_operator_loc: Location, value: Prism::node, name: Symbol, binary_operator: Symbol, depth: Integer }
@@ -11933,11 +12771,18 @@ module Prism
11933
12771
  visitor.visit_local_variable_or_write_node(self)
11934
12772
  end
11935
12773
 
11936
- # def child_nodes: () -> Array[nil | Node]
12774
+ # def child_nodes: () -> Array[Node?]
11937
12775
  def child_nodes
11938
12776
  [value]
11939
12777
  end
11940
12778
 
12779
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
12780
+ def each_child_node
12781
+ return to_enum(:each_child_node) unless block_given?
12782
+
12783
+ yield value
12784
+ end
12785
+
11941
12786
  # def compact_child_nodes: () -> Array[Node]
11942
12787
  def compact_child_nodes
11943
12788
  [value]
@@ -11953,7 +12798,7 @@ module Prism
11953
12798
  LocalVariableOrWriteNode.new(source, node_id, location, flags, name_loc, operator_loc, value, name, depth)
11954
12799
  end
11955
12800
 
11956
- # def deconstruct: () -> Array[nil | Node]
12801
+ # def deconstruct: () -> Array[Node?]
11957
12802
  alias deconstruct child_nodes
11958
12803
 
11959
12804
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name_loc: Location, operator_loc: Location, value: Prism::node, name: Symbol, depth: Integer }
@@ -12048,11 +12893,17 @@ module Prism
12048
12893
  visitor.visit_local_variable_read_node(self)
12049
12894
  end
12050
12895
 
12051
- # def child_nodes: () -> Array[nil | Node]
12896
+ # def child_nodes: () -> Array[Node?]
12052
12897
  def child_nodes
12053
12898
  []
12054
12899
  end
12055
12900
 
12901
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
12902
+ def each_child_node
12903
+ return to_enum(:each_child_node) unless block_given?
12904
+
12905
+ end
12906
+
12056
12907
  # def compact_child_nodes: () -> Array[Node]
12057
12908
  def compact_child_nodes
12058
12909
  []
@@ -12068,7 +12919,7 @@ module Prism
12068
12919
  LocalVariableReadNode.new(source, node_id, location, flags, name, depth)
12069
12920
  end
12070
12921
 
12071
- # def deconstruct: () -> Array[nil | Node]
12922
+ # def deconstruct: () -> Array[Node?]
12072
12923
  alias deconstruct child_nodes
12073
12924
 
12074
12925
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol, depth: Integer }
@@ -12124,6 +12975,9 @@ module Prism
12124
12975
  #
12125
12976
  # foo, bar = baz
12126
12977
  # ^^^ ^^^
12978
+ #
12979
+ # foo => baz
12980
+ # ^^^
12127
12981
  class LocalVariableTargetNode < Node
12128
12982
  # Initialize a new LocalVariableTargetNode node.
12129
12983
  def initialize(source, node_id, location, flags, name, depth)
@@ -12140,11 +12994,17 @@ module Prism
12140
12994
  visitor.visit_local_variable_target_node(self)
12141
12995
  end
12142
12996
 
12143
- # def child_nodes: () -> Array[nil | Node]
12997
+ # def child_nodes: () -> Array[Node?]
12144
12998
  def child_nodes
12145
12999
  []
12146
13000
  end
12147
13001
 
13002
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
13003
+ def each_child_node
13004
+ return to_enum(:each_child_node) unless block_given?
13005
+
13006
+ end
13007
+
12148
13008
  # def compact_child_nodes: () -> Array[Node]
12149
13009
  def compact_child_nodes
12150
13010
  []
@@ -12160,7 +13020,7 @@ module Prism
12160
13020
  LocalVariableTargetNode.new(source, node_id, location, flags, name, depth)
12161
13021
  end
12162
13022
 
12163
- # def deconstruct: () -> Array[nil | Node]
13023
+ # def deconstruct: () -> Array[Node?]
12164
13024
  alias deconstruct child_nodes
12165
13025
 
12166
13026
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol, depth: Integer }
@@ -12221,11 +13081,18 @@ module Prism
12221
13081
  visitor.visit_local_variable_write_node(self)
12222
13082
  end
12223
13083
 
12224
- # def child_nodes: () -> Array[nil | Node]
13084
+ # def child_nodes: () -> Array[Node?]
12225
13085
  def child_nodes
12226
13086
  [value]
12227
13087
  end
12228
13088
 
13089
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
13090
+ def each_child_node
13091
+ return to_enum(:each_child_node) unless block_given?
13092
+
13093
+ yield value
13094
+ end
13095
+
12229
13096
  # def compact_child_nodes: () -> Array[Node]
12230
13097
  def compact_child_nodes
12231
13098
  [value]
@@ -12241,7 +13108,7 @@ module Prism
12241
13108
  LocalVariableWriteNode.new(source, node_id, location, flags, name, depth, name_loc, value, operator_loc)
12242
13109
  end
12243
13110
 
12244
- # def deconstruct: () -> Array[nil | Node]
13111
+ # def deconstruct: () -> Array[Node?]
12245
13112
  alias deconstruct child_nodes
12246
13113
 
12247
13114
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol, depth: Integer, name_loc: Location, value: Prism::node, operator_loc: Location }
@@ -12364,11 +13231,17 @@ module Prism
12364
13231
  visitor.visit_match_last_line_node(self)
12365
13232
  end
12366
13233
 
12367
- # def child_nodes: () -> Array[nil | Node]
13234
+ # def child_nodes: () -> Array[Node?]
12368
13235
  def child_nodes
12369
13236
  []
12370
13237
  end
12371
13238
 
13239
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
13240
+ def each_child_node
13241
+ return to_enum(:each_child_node) unless block_given?
13242
+
13243
+ end
13244
+
12372
13245
  # def compact_child_nodes: () -> Array[Node]
12373
13246
  def compact_child_nodes
12374
13247
  []
@@ -12384,7 +13257,7 @@ module Prism
12384
13257
  MatchLastLineNode.new(source, node_id, location, flags, opening_loc, content_loc, closing_loc, unescaped)
12385
13258
  end
12386
13259
 
12387
- # def deconstruct: () -> Array[nil | Node]
13260
+ # def deconstruct: () -> Array[Node?]
12388
13261
  alias deconstruct child_nodes
12389
13262
 
12390
13263
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, opening_loc: Location, content_loc: Location, closing_loc: Location, unescaped: String }
@@ -12552,11 +13425,19 @@ module Prism
12552
13425
  visitor.visit_match_predicate_node(self)
12553
13426
  end
12554
13427
 
12555
- # def child_nodes: () -> Array[nil | Node]
13428
+ # def child_nodes: () -> Array[Node?]
12556
13429
  def child_nodes
12557
13430
  [value, pattern]
12558
13431
  end
12559
13432
 
13433
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
13434
+ def each_child_node
13435
+ return to_enum(:each_child_node) unless block_given?
13436
+
13437
+ yield value
13438
+ yield pattern
13439
+ end
13440
+
12560
13441
  # def compact_child_nodes: () -> Array[Node]
12561
13442
  def compact_child_nodes
12562
13443
  [value, pattern]
@@ -12572,7 +13453,7 @@ module Prism
12572
13453
  MatchPredicateNode.new(source, node_id, location, flags, value, pattern, operator_loc)
12573
13454
  end
12574
13455
 
12575
- # def deconstruct: () -> Array[nil | Node]
13456
+ # def deconstruct: () -> Array[Node?]
12576
13457
  alias deconstruct child_nodes
12577
13458
 
12578
13459
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, value: Prism::node, pattern: Prism::node, operator_loc: Location }
@@ -12650,11 +13531,19 @@ module Prism
12650
13531
  visitor.visit_match_required_node(self)
12651
13532
  end
12652
13533
 
12653
- # def child_nodes: () -> Array[nil | Node]
13534
+ # def child_nodes: () -> Array[Node?]
12654
13535
  def child_nodes
12655
13536
  [value, pattern]
12656
13537
  end
12657
13538
 
13539
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
13540
+ def each_child_node
13541
+ return to_enum(:each_child_node) unless block_given?
13542
+
13543
+ yield value
13544
+ yield pattern
13545
+ end
13546
+
12658
13547
  # def compact_child_nodes: () -> Array[Node]
12659
13548
  def compact_child_nodes
12660
13549
  [value, pattern]
@@ -12670,7 +13559,7 @@ module Prism
12670
13559
  MatchRequiredNode.new(source, node_id, location, flags, value, pattern, operator_loc)
12671
13560
  end
12672
13561
 
12673
- # def deconstruct: () -> Array[nil | Node]
13562
+ # def deconstruct: () -> Array[Node?]
12674
13563
  alias deconstruct child_nodes
12675
13564
 
12676
13565
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, value: Prism::node, pattern: Prism::node, operator_loc: Location }
@@ -12678,13 +13567,61 @@ module Prism
12678
13567
  { node_id: node_id, location: location, value: value, pattern: pattern, operator_loc: operator_loc }
12679
13568
  end
12680
13569
 
12681
- # attr_reader value: Prism::node
13570
+ # Represents the left-hand side of the operator.
13571
+ #
13572
+ # foo => bar
13573
+ # ^^^
12682
13574
  attr_reader :value
12683
13575
 
12684
- # attr_reader pattern: Prism::node
13576
+ # Represents the right-hand side of the operator. The type of the node depends on the expression.
13577
+ #
13578
+ # Anything that looks like a local variable name (including `_`) will result in a `LocalVariableTargetNode`.
13579
+ #
13580
+ # foo => a # This is equivalent to writing `a = foo`
13581
+ # ^
13582
+ #
13583
+ # Using an explicit `Array` or combining expressions with `,` will result in a `ArrayPatternNode`. This can be preceded by a constant.
13584
+ #
13585
+ # foo => [a]
13586
+ # ^^^
13587
+ #
13588
+ # foo => a, b
13589
+ # ^^^^
13590
+ #
13591
+ # foo => Bar[a, b]
13592
+ # ^^^^^^^^^
13593
+ #
13594
+ # If the array pattern contains at least two wildcard matches, a `FindPatternNode` is created instead.
13595
+ #
13596
+ # foo => *, 1, *a
13597
+ # ^^^^^
13598
+ #
13599
+ # Using an explicit `Hash` or a constant with square brackets and hash keys in the square brackets will result in a `HashPatternNode`.
13600
+ #
13601
+ # foo => { a: 1, b: }
13602
+ #
13603
+ # foo => Bar[a: 1, b:]
13604
+ #
13605
+ # foo => Bar[**]
13606
+ #
13607
+ # To use any variable that needs run time evaluation, pinning is required. This results in a `PinnedVariableNode`
13608
+ #
13609
+ # foo => ^a
13610
+ # ^^
13611
+ #
13612
+ # Similar, any expression can be used with pinning. This results in a `PinnedExpressionNode`.
13613
+ #
13614
+ # foo => ^(a + 1)
13615
+ #
13616
+ # Anything else will result in the regular node for that expression, for example a `ConstantReadNode`.
13617
+ #
13618
+ # foo => CONST
12685
13619
  attr_reader :pattern
12686
13620
 
12687
- # attr_reader operator_loc: Location
13621
+ # The location of the operator.
13622
+ #
13623
+ # foo => bar
13624
+ # ^^
12688
13625
  def operator_loc
12689
13626
  location = @operator_loc
12690
13627
  return location if location.is_a?(Location)
@@ -12747,11 +13684,19 @@ module Prism
12747
13684
  visitor.visit_match_write_node(self)
12748
13685
  end
12749
13686
 
12750
- # def child_nodes: () -> Array[nil | Node]
13687
+ # def child_nodes: () -> Array[Node?]
12751
13688
  def child_nodes
12752
13689
  [call, *targets]
12753
13690
  end
12754
13691
 
13692
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
13693
+ def each_child_node
13694
+ return to_enum(:each_child_node) unless block_given?
13695
+
13696
+ yield call
13697
+ targets.each { |node| yield node }
13698
+ end
13699
+
12755
13700
  # def compact_child_nodes: () -> Array[Node]
12756
13701
  def compact_child_nodes
12757
13702
  [call, *targets]
@@ -12767,7 +13712,7 @@ module Prism
12767
13712
  MatchWriteNode.new(source, node_id, location, flags, call, targets)
12768
13713
  end
12769
13714
 
12770
- # def deconstruct: () -> Array[nil | Node]
13715
+ # def deconstruct: () -> Array[Node?]
12771
13716
  alias deconstruct child_nodes
12772
13717
 
12773
13718
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, call: CallNode, targets: Array[LocalVariableTargetNode] }
@@ -12821,11 +13766,17 @@ module Prism
12821
13766
  visitor.visit_missing_node(self)
12822
13767
  end
12823
13768
 
12824
- # def child_nodes: () -> Array[nil | Node]
13769
+ # def child_nodes: () -> Array[Node?]
12825
13770
  def child_nodes
12826
13771
  []
12827
13772
  end
12828
13773
 
13774
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
13775
+ def each_child_node
13776
+ return to_enum(:each_child_node) unless block_given?
13777
+
13778
+ end
13779
+
12829
13780
  # def compact_child_nodes: () -> Array[Node]
12830
13781
  def compact_child_nodes
12831
13782
  []
@@ -12841,7 +13792,7 @@ module Prism
12841
13792
  MissingNode.new(source, node_id, location, flags)
12842
13793
  end
12843
13794
 
12844
- # def deconstruct: () -> Array[nil | Node]
13795
+ # def deconstruct: () -> Array[Node?]
12845
13796
  alias deconstruct child_nodes
12846
13797
 
12847
13798
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location }
@@ -12895,11 +13846,19 @@ module Prism
12895
13846
  visitor.visit_module_node(self)
12896
13847
  end
12897
13848
 
12898
- # def child_nodes: () -> Array[nil | Node]
13849
+ # def child_nodes: () -> Array[Node?]
12899
13850
  def child_nodes
12900
13851
  [constant_path, body]
12901
13852
  end
12902
13853
 
13854
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
13855
+ def each_child_node
13856
+ return to_enum(:each_child_node) unless block_given?
13857
+
13858
+ yield constant_path
13859
+ yield body if body
13860
+ end
13861
+
12903
13862
  # def compact_child_nodes: () -> Array[Node]
12904
13863
  def compact_child_nodes
12905
13864
  compact = [] #: Array[Prism::node]
@@ -12918,7 +13877,7 @@ module Prism
12918
13877
  ModuleNode.new(source, node_id, location, flags, locals, module_keyword_loc, constant_path, body, end_keyword_loc, name)
12919
13878
  end
12920
13879
 
12921
- # def deconstruct: () -> Array[nil | Node]
13880
+ # def deconstruct: () -> Array[Node?]
12922
13881
  alias deconstruct child_nodes
12923
13882
 
12924
13883
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, locals: Array[Symbol], module_keyword_loc: Location, constant_path: ConstantReadNode | ConstantPathNode | MissingNode, body: StatementsNode | BeginNode | nil, end_keyword_loc: Location, name: Symbol }
@@ -13031,11 +13990,20 @@ module Prism
13031
13990
  visitor.visit_multi_target_node(self)
13032
13991
  end
13033
13992
 
13034
- # def child_nodes: () -> Array[nil | Node]
13993
+ # def child_nodes: () -> Array[Node?]
13035
13994
  def child_nodes
13036
13995
  [*lefts, rest, *rights]
13037
13996
  end
13038
13997
 
13998
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
13999
+ def each_child_node
14000
+ return to_enum(:each_child_node) unless block_given?
14001
+
14002
+ lefts.each { |node| yield node }
14003
+ yield rest if rest
14004
+ rights.each { |node| yield node }
14005
+ end
14006
+
13039
14007
  # def compact_child_nodes: () -> Array[Node]
13040
14008
  def compact_child_nodes
13041
14009
  compact = [] #: Array[Prism::node]
@@ -13055,7 +14023,7 @@ module Prism
13055
14023
  MultiTargetNode.new(source, node_id, location, flags, lefts, rest, rights, lparen_loc, rparen_loc)
13056
14024
  end
13057
14025
 
13058
- # def deconstruct: () -> Array[nil | Node]
14026
+ # def deconstruct: () -> Array[Node?]
13059
14027
  alias deconstruct child_nodes
13060
14028
 
13061
14029
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, lefts: Array[LocalVariableTargetNode | InstanceVariableTargetNode | ClassVariableTargetNode | GlobalVariableTargetNode | ConstantTargetNode | ConstantPathTargetNode | CallTargetNode | IndexTargetNode | MultiTargetNode | RequiredParameterNode | BackReferenceReadNode | NumberedReferenceReadNode], rest: ImplicitRestNode | SplatNode | nil, rights: Array[LocalVariableTargetNode | InstanceVariableTargetNode | ClassVariableTargetNode | GlobalVariableTargetNode | ConstantTargetNode | ConstantPathTargetNode | CallTargetNode | IndexTargetNode | MultiTargetNode | RequiredParameterNode | BackReferenceReadNode | NumberedReferenceReadNode], lparen_loc: Location?, rparen_loc: Location? }
@@ -13204,11 +14172,21 @@ module Prism
13204
14172
  visitor.visit_multi_write_node(self)
13205
14173
  end
13206
14174
 
13207
- # def child_nodes: () -> Array[nil | Node]
14175
+ # def child_nodes: () -> Array[Node?]
13208
14176
  def child_nodes
13209
14177
  [*lefts, rest, *rights, value]
13210
14178
  end
13211
14179
 
14180
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
14181
+ def each_child_node
14182
+ return to_enum(:each_child_node) unless block_given?
14183
+
14184
+ lefts.each { |node| yield node }
14185
+ yield rest if rest
14186
+ rights.each { |node| yield node }
14187
+ yield value
14188
+ end
14189
+
13212
14190
  # def compact_child_nodes: () -> Array[Node]
13213
14191
  def compact_child_nodes
13214
14192
  compact = [] #: Array[Prism::node]
@@ -13229,7 +14207,7 @@ module Prism
13229
14207
  MultiWriteNode.new(source, node_id, location, flags, lefts, rest, rights, lparen_loc, rparen_loc, operator_loc, value)
13230
14208
  end
13231
14209
 
13232
- # def deconstruct: () -> Array[nil | Node]
14210
+ # def deconstruct: () -> Array[Node?]
13233
14211
  alias deconstruct child_nodes
13234
14212
 
13235
14213
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, lefts: Array[LocalVariableTargetNode | InstanceVariableTargetNode | ClassVariableTargetNode | GlobalVariableTargetNode | ConstantTargetNode | ConstantPathTargetNode | CallTargetNode | IndexTargetNode | MultiTargetNode | BackReferenceReadNode | NumberedReferenceReadNode], rest: ImplicitRestNode | SplatNode | nil, rights: Array[LocalVariableTargetNode | InstanceVariableTargetNode | ClassVariableTargetNode | GlobalVariableTargetNode | ConstantTargetNode | ConstantPathTargetNode | CallTargetNode | IndexTargetNode | MultiTargetNode | BackReferenceReadNode | NumberedReferenceReadNode], lparen_loc: Location?, rparen_loc: Location?, operator_loc: Location, value: Prism::node }
@@ -13402,11 +14380,18 @@ module Prism
13402
14380
  visitor.visit_next_node(self)
13403
14381
  end
13404
14382
 
13405
- # def child_nodes: () -> Array[nil | Node]
14383
+ # def child_nodes: () -> Array[Node?]
13406
14384
  def child_nodes
13407
14385
  [arguments]
13408
14386
  end
13409
14387
 
14388
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
14389
+ def each_child_node
14390
+ return to_enum(:each_child_node) unless block_given?
14391
+
14392
+ yield arguments if arguments
14393
+ end
14394
+
13410
14395
  # def compact_child_nodes: () -> Array[Node]
13411
14396
  def compact_child_nodes
13412
14397
  compact = [] #: Array[Prism::node]
@@ -13424,7 +14409,7 @@ module Prism
13424
14409
  NextNode.new(source, node_id, location, flags, arguments, keyword_loc)
13425
14410
  end
13426
14411
 
13427
- # def deconstruct: () -> Array[nil | Node]
14412
+ # def deconstruct: () -> Array[Node?]
13428
14413
  alias deconstruct child_nodes
13429
14414
 
13430
14415
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, arguments: ArgumentsNode?, keyword_loc: Location }
@@ -13495,11 +14480,17 @@ module Prism
13495
14480
  visitor.visit_nil_node(self)
13496
14481
  end
13497
14482
 
13498
- # def child_nodes: () -> Array[nil | Node]
14483
+ # def child_nodes: () -> Array[Node?]
13499
14484
  def child_nodes
13500
14485
  []
13501
14486
  end
13502
14487
 
14488
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
14489
+ def each_child_node
14490
+ return to_enum(:each_child_node) unless block_given?
14491
+
14492
+ end
14493
+
13503
14494
  # def compact_child_nodes: () -> Array[Node]
13504
14495
  def compact_child_nodes
13505
14496
  []
@@ -13515,7 +14506,7 @@ module Prism
13515
14506
  NilNode.new(source, node_id, location, flags)
13516
14507
  end
13517
14508
 
13518
- # def deconstruct: () -> Array[nil | Node]
14509
+ # def deconstruct: () -> Array[Node?]
13519
14510
  alias deconstruct child_nodes
13520
14511
 
13521
14512
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location }
@@ -13566,11 +14557,17 @@ module Prism
13566
14557
  visitor.visit_no_keywords_parameter_node(self)
13567
14558
  end
13568
14559
 
13569
- # def child_nodes: () -> Array[nil | Node]
14560
+ # def child_nodes: () -> Array[Node?]
13570
14561
  def child_nodes
13571
14562
  []
13572
14563
  end
13573
14564
 
14565
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
14566
+ def each_child_node
14567
+ return to_enum(:each_child_node) unless block_given?
14568
+
14569
+ end
14570
+
13574
14571
  # def compact_child_nodes: () -> Array[Node]
13575
14572
  def compact_child_nodes
13576
14573
  []
@@ -13586,7 +14583,7 @@ module Prism
13586
14583
  NoKeywordsParameterNode.new(source, node_id, location, flags, operator_loc, keyword_loc)
13587
14584
  end
13588
14585
 
13589
- # def deconstruct: () -> Array[nil | Node]
14586
+ # def deconstruct: () -> Array[Node?]
13590
14587
  alias deconstruct child_nodes
13591
14588
 
13592
14589
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, operator_loc: Location, keyword_loc: Location }
@@ -13673,11 +14670,17 @@ module Prism
13673
14670
  visitor.visit_numbered_parameters_node(self)
13674
14671
  end
13675
14672
 
13676
- # def child_nodes: () -> Array[nil | Node]
14673
+ # def child_nodes: () -> Array[Node?]
13677
14674
  def child_nodes
13678
14675
  []
13679
14676
  end
13680
14677
 
14678
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
14679
+ def each_child_node
14680
+ return to_enum(:each_child_node) unless block_given?
14681
+
14682
+ end
14683
+
13681
14684
  # def compact_child_nodes: () -> Array[Node]
13682
14685
  def compact_child_nodes
13683
14686
  []
@@ -13693,7 +14696,7 @@ module Prism
13693
14696
  NumberedParametersNode.new(source, node_id, location, flags, maximum)
13694
14697
  end
13695
14698
 
13696
- # def deconstruct: () -> Array[nil | Node]
14699
+ # def deconstruct: () -> Array[Node?]
13697
14700
  alias deconstruct child_nodes
13698
14701
 
13699
14702
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, maximum: Integer }
@@ -13746,11 +14749,17 @@ module Prism
13746
14749
  visitor.visit_numbered_reference_read_node(self)
13747
14750
  end
13748
14751
 
13749
- # def child_nodes: () -> Array[nil | Node]
14752
+ # def child_nodes: () -> Array[Node?]
13750
14753
  def child_nodes
13751
14754
  []
13752
14755
  end
13753
14756
 
14757
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
14758
+ def each_child_node
14759
+ return to_enum(:each_child_node) unless block_given?
14760
+
14761
+ end
14762
+
13754
14763
  # def compact_child_nodes: () -> Array[Node]
13755
14764
  def compact_child_nodes
13756
14765
  []
@@ -13766,7 +14775,7 @@ module Prism
13766
14775
  NumberedReferenceReadNode.new(source, node_id, location, flags, number)
13767
14776
  end
13768
14777
 
13769
- # def deconstruct: () -> Array[nil | Node]
14778
+ # def deconstruct: () -> Array[Node?]
13770
14779
  alias deconstruct child_nodes
13771
14780
 
13772
14781
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, number: Integer }
@@ -13828,11 +14837,18 @@ module Prism
13828
14837
  visitor.visit_optional_keyword_parameter_node(self)
13829
14838
  end
13830
14839
 
13831
- # def child_nodes: () -> Array[nil | Node]
14840
+ # def child_nodes: () -> Array[Node?]
13832
14841
  def child_nodes
13833
14842
  [value]
13834
14843
  end
13835
14844
 
14845
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
14846
+ def each_child_node
14847
+ return to_enum(:each_child_node) unless block_given?
14848
+
14849
+ yield value
14850
+ end
14851
+
13836
14852
  # def compact_child_nodes: () -> Array[Node]
13837
14853
  def compact_child_nodes
13838
14854
  [value]
@@ -13848,7 +14864,7 @@ module Prism
13848
14864
  OptionalKeywordParameterNode.new(source, node_id, location, flags, name, name_loc, value)
13849
14865
  end
13850
14866
 
13851
- # def deconstruct: () -> Array[nil | Node]
14867
+ # def deconstruct: () -> Array[Node?]
13852
14868
  alias deconstruct child_nodes
13853
14869
 
13854
14870
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol, name_loc: Location, value: Prism::node }
@@ -13929,11 +14945,18 @@ module Prism
13929
14945
  visitor.visit_optional_parameter_node(self)
13930
14946
  end
13931
14947
 
13932
- # def child_nodes: () -> Array[nil | Node]
14948
+ # def child_nodes: () -> Array[Node?]
13933
14949
  def child_nodes
13934
14950
  [value]
13935
14951
  end
13936
14952
 
14953
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
14954
+ def each_child_node
14955
+ return to_enum(:each_child_node) unless block_given?
14956
+
14957
+ yield value
14958
+ end
14959
+
13937
14960
  # def compact_child_nodes: () -> Array[Node]
13938
14961
  def compact_child_nodes
13939
14962
  [value]
@@ -13949,7 +14972,7 @@ module Prism
13949
14972
  OptionalParameterNode.new(source, node_id, location, flags, name, name_loc, operator_loc, value)
13950
14973
  end
13951
14974
 
13952
- # def deconstruct: () -> Array[nil | Node]
14975
+ # def deconstruct: () -> Array[Node?]
13953
14976
  alias deconstruct child_nodes
13954
14977
 
13955
14978
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol, name_loc: Location, operator_loc: Location, value: Prism::node }
@@ -14047,11 +15070,19 @@ module Prism
14047
15070
  visitor.visit_or_node(self)
14048
15071
  end
14049
15072
 
14050
- # def child_nodes: () -> Array[nil | Node]
15073
+ # def child_nodes: () -> Array[Node?]
14051
15074
  def child_nodes
14052
15075
  [left, right]
14053
15076
  end
14054
15077
 
15078
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
15079
+ def each_child_node
15080
+ return to_enum(:each_child_node) unless block_given?
15081
+
15082
+ yield left
15083
+ yield right
15084
+ end
15085
+
14055
15086
  # def compact_child_nodes: () -> Array[Node]
14056
15087
  def compact_child_nodes
14057
15088
  [left, right]
@@ -14067,7 +15098,7 @@ module Prism
14067
15098
  OrNode.new(source, node_id, location, flags, left, right, operator_loc)
14068
15099
  end
14069
15100
 
14070
- # def deconstruct: () -> Array[nil | Node]
15101
+ # def deconstruct: () -> Array[Node?]
14071
15102
  alias deconstruct child_nodes
14072
15103
 
14073
15104
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, left: Prism::node, right: Prism::node, operator_loc: Location }
@@ -14165,11 +15196,24 @@ module Prism
14165
15196
  visitor.visit_parameters_node(self)
14166
15197
  end
14167
15198
 
14168
- # def child_nodes: () -> Array[nil | Node]
15199
+ # def child_nodes: () -> Array[Node?]
14169
15200
  def child_nodes
14170
15201
  [*requireds, *optionals, rest, *posts, *keywords, keyword_rest, block]
14171
15202
  end
14172
15203
 
15204
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
15205
+ def each_child_node
15206
+ return to_enum(:each_child_node) unless block_given?
15207
+
15208
+ requireds.each { |node| yield node }
15209
+ optionals.each { |node| yield node }
15210
+ yield rest if rest
15211
+ posts.each { |node| yield node }
15212
+ keywords.each { |node| yield node }
15213
+ yield keyword_rest if keyword_rest
15214
+ yield block if block
15215
+ end
15216
+
14173
15217
  # def compact_child_nodes: () -> Array[Node]
14174
15218
  def compact_child_nodes
14175
15219
  compact = [] #: Array[Prism::node]
@@ -14193,7 +15237,7 @@ module Prism
14193
15237
  ParametersNode.new(source, node_id, location, flags, requireds, optionals, rest, posts, keywords, keyword_rest, block)
14194
15238
  end
14195
15239
 
14196
- # def deconstruct: () -> Array[nil | Node]
15240
+ # def deconstruct: () -> Array[Node?]
14197
15241
  alias deconstruct child_nodes
14198
15242
 
14199
15243
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, requireds: Array[RequiredParameterNode | MultiTargetNode], optionals: Array[OptionalParameterNode], rest: RestParameterNode | ImplicitRestNode | nil, posts: Array[RequiredParameterNode | MultiTargetNode | KeywordRestParameterNode | NoKeywordsParameterNode | ForwardingParameterNode], keywords: Array[RequiredKeywordParameterNode | OptionalKeywordParameterNode], keyword_rest: KeywordRestParameterNode | ForwardingParameterNode | NoKeywordsParameterNode | nil, block: BlockParameterNode? }
@@ -14276,11 +15320,18 @@ module Prism
14276
15320
  visitor.visit_parentheses_node(self)
14277
15321
  end
14278
15322
 
14279
- # def child_nodes: () -> Array[nil | Node]
15323
+ # def child_nodes: () -> Array[Node?]
14280
15324
  def child_nodes
14281
15325
  [body]
14282
15326
  end
14283
15327
 
15328
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
15329
+ def each_child_node
15330
+ return to_enum(:each_child_node) unless block_given?
15331
+
15332
+ yield body if body
15333
+ end
15334
+
14284
15335
  # def compact_child_nodes: () -> Array[Node]
14285
15336
  def compact_child_nodes
14286
15337
  compact = [] #: Array[Prism::node]
@@ -14298,7 +15349,7 @@ module Prism
14298
15349
  ParenthesesNode.new(source, node_id, location, flags, body, opening_loc, closing_loc)
14299
15350
  end
14300
15351
 
14301
- # def deconstruct: () -> Array[nil | Node]
15352
+ # def deconstruct: () -> Array[Node?]
14302
15353
  alias deconstruct child_nodes
14303
15354
 
14304
15355
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, body: Prism::node?, opening_loc: Location, closing_loc: Location }
@@ -14398,11 +15449,18 @@ module Prism
14398
15449
  visitor.visit_pinned_expression_node(self)
14399
15450
  end
14400
15451
 
14401
- # def child_nodes: () -> Array[nil | Node]
15452
+ # def child_nodes: () -> Array[Node?]
14402
15453
  def child_nodes
14403
15454
  [expression]
14404
15455
  end
14405
15456
 
15457
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
15458
+ def each_child_node
15459
+ return to_enum(:each_child_node) unless block_given?
15460
+
15461
+ yield expression
15462
+ end
15463
+
14406
15464
  # def compact_child_nodes: () -> Array[Node]
14407
15465
  def compact_child_nodes
14408
15466
  [expression]
@@ -14418,7 +15476,7 @@ module Prism
14418
15476
  PinnedExpressionNode.new(source, node_id, location, flags, expression, operator_loc, lparen_loc, rparen_loc)
14419
15477
  end
14420
15478
 
14421
- # def deconstruct: () -> Array[nil | Node]
15479
+ # def deconstruct: () -> Array[Node?]
14422
15480
  alias deconstruct child_nodes
14423
15481
 
14424
15482
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, expression: Prism::node, operator_loc: Location, lparen_loc: Location, rparen_loc: Location }
@@ -14426,10 +15484,16 @@ module Prism
14426
15484
  { node_id: node_id, location: location, expression: expression, operator_loc: operator_loc, lparen_loc: lparen_loc, rparen_loc: rparen_loc }
14427
15485
  end
14428
15486
 
14429
- # attr_reader expression: Prism::node
15487
+ # The expression used in the pinned expression
15488
+ #
15489
+ # foo in ^(bar)
15490
+ # ^^^
14430
15491
  attr_reader :expression
14431
15492
 
14432
- # attr_reader operator_loc: Location
15493
+ # The location of the `^` operator
15494
+ #
15495
+ # foo in ^(bar)
15496
+ # ^
14433
15497
  def operator_loc
14434
15498
  location = @operator_loc
14435
15499
  return location if location.is_a?(Location)
@@ -14442,7 +15506,10 @@ module Prism
14442
15506
  repository.enter(node_id, :operator_loc)
14443
15507
  end
14444
15508
 
14445
- # attr_reader lparen_loc: Location
15509
+ # The location of the opening parenthesis.
15510
+ #
15511
+ # foo in ^(bar)
15512
+ # ^
14446
15513
  def lparen_loc
14447
15514
  location = @lparen_loc
14448
15515
  return location if location.is_a?(Location)
@@ -14455,7 +15522,10 @@ module Prism
14455
15522
  repository.enter(node_id, :lparen_loc)
14456
15523
  end
14457
15524
 
14458
- # attr_reader rparen_loc: Location
15525
+ # The location of the closing parenthesis.
15526
+ #
15527
+ # foo in ^(bar)
15528
+ # ^
14459
15529
  def rparen_loc
14460
15530
  location = @rparen_loc
14461
15531
  return location if location.is_a?(Location)
@@ -14529,11 +15599,18 @@ module Prism
14529
15599
  visitor.visit_pinned_variable_node(self)
14530
15600
  end
14531
15601
 
14532
- # def child_nodes: () -> Array[nil | Node]
15602
+ # def child_nodes: () -> Array[Node?]
14533
15603
  def child_nodes
14534
15604
  [variable]
14535
15605
  end
14536
15606
 
15607
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
15608
+ def each_child_node
15609
+ return to_enum(:each_child_node) unless block_given?
15610
+
15611
+ yield variable
15612
+ end
15613
+
14537
15614
  # def compact_child_nodes: () -> Array[Node]
14538
15615
  def compact_child_nodes
14539
15616
  [variable]
@@ -14549,7 +15626,7 @@ module Prism
14549
15626
  PinnedVariableNode.new(source, node_id, location, flags, variable, operator_loc)
14550
15627
  end
14551
15628
 
14552
- # def deconstruct: () -> Array[nil | Node]
15629
+ # def deconstruct: () -> Array[Node?]
14553
15630
  alias deconstruct child_nodes
14554
15631
 
14555
15632
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, variable: LocalVariableReadNode | InstanceVariableReadNode | ClassVariableReadNode | GlobalVariableReadNode | BackReferenceReadNode | NumberedReferenceReadNode | ItLocalVariableReadNode | MissingNode, operator_loc: Location }
@@ -14557,10 +15634,16 @@ module Prism
14557
15634
  { node_id: node_id, location: location, variable: variable, operator_loc: operator_loc }
14558
15635
  end
14559
15636
 
14560
- # attr_reader variable: LocalVariableReadNode | InstanceVariableReadNode | ClassVariableReadNode | GlobalVariableReadNode | BackReferenceReadNode | NumberedReferenceReadNode | ItLocalVariableReadNode | MissingNode
15637
+ # The variable used in the pinned expression
15638
+ #
15639
+ # foo in ^bar
15640
+ # ^^^
14561
15641
  attr_reader :variable
14562
15642
 
14563
- # attr_reader operator_loc: Location
15643
+ # The location of the `^` operator
15644
+ #
15645
+ # foo in ^bar
15646
+ # ^
14564
15647
  def operator_loc
14565
15648
  location = @operator_loc
14566
15649
  return location if location.is_a?(Location)
@@ -14624,11 +15707,18 @@ module Prism
14624
15707
  visitor.visit_post_execution_node(self)
14625
15708
  end
14626
15709
 
14627
- # def child_nodes: () -> Array[nil | Node]
15710
+ # def child_nodes: () -> Array[Node?]
14628
15711
  def child_nodes
14629
15712
  [statements]
14630
15713
  end
14631
15714
 
15715
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
15716
+ def each_child_node
15717
+ return to_enum(:each_child_node) unless block_given?
15718
+
15719
+ yield statements if statements
15720
+ end
15721
+
14632
15722
  # def compact_child_nodes: () -> Array[Node]
14633
15723
  def compact_child_nodes
14634
15724
  compact = [] #: Array[Prism::node]
@@ -14646,7 +15736,7 @@ module Prism
14646
15736
  PostExecutionNode.new(source, node_id, location, flags, statements, keyword_loc, opening_loc, closing_loc)
14647
15737
  end
14648
15738
 
14649
- # def deconstruct: () -> Array[nil | Node]
15739
+ # def deconstruct: () -> Array[Node?]
14650
15740
  alias deconstruct child_nodes
14651
15741
 
14652
15742
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, statements: StatementsNode?, keyword_loc: Location, opening_loc: Location, closing_loc: Location }
@@ -14759,11 +15849,18 @@ module Prism
14759
15849
  visitor.visit_pre_execution_node(self)
14760
15850
  end
14761
15851
 
14762
- # def child_nodes: () -> Array[nil | Node]
15852
+ # def child_nodes: () -> Array[Node?]
14763
15853
  def child_nodes
14764
15854
  [statements]
14765
15855
  end
14766
15856
 
15857
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
15858
+ def each_child_node
15859
+ return to_enum(:each_child_node) unless block_given?
15860
+
15861
+ yield statements if statements
15862
+ end
15863
+
14767
15864
  # def compact_child_nodes: () -> Array[Node]
14768
15865
  def compact_child_nodes
14769
15866
  compact = [] #: Array[Prism::node]
@@ -14781,7 +15878,7 @@ module Prism
14781
15878
  PreExecutionNode.new(source, node_id, location, flags, statements, keyword_loc, opening_loc, closing_loc)
14782
15879
  end
14783
15880
 
14784
- # def deconstruct: () -> Array[nil | Node]
15881
+ # def deconstruct: () -> Array[Node?]
14785
15882
  alias deconstruct child_nodes
14786
15883
 
14787
15884
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, statements: StatementsNode?, keyword_loc: Location, opening_loc: Location, closing_loc: Location }
@@ -14889,11 +15986,18 @@ module Prism
14889
15986
  visitor.visit_program_node(self)
14890
15987
  end
14891
15988
 
14892
- # def child_nodes: () -> Array[nil | Node]
15989
+ # def child_nodes: () -> Array[Node?]
14893
15990
  def child_nodes
14894
15991
  [statements]
14895
15992
  end
14896
15993
 
15994
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
15995
+ def each_child_node
15996
+ return to_enum(:each_child_node) unless block_given?
15997
+
15998
+ yield statements
15999
+ end
16000
+
14897
16001
  # def compact_child_nodes: () -> Array[Node]
14898
16002
  def compact_child_nodes
14899
16003
  [statements]
@@ -14909,7 +16013,7 @@ module Prism
14909
16013
  ProgramNode.new(source, node_id, location, flags, locals, statements)
14910
16014
  end
14911
16015
 
14912
- # def deconstruct: () -> Array[nil | Node]
16016
+ # def deconstruct: () -> Array[Node?]
14913
16017
  alias deconstruct child_nodes
14914
16018
 
14915
16019
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, locals: Array[Symbol], statements: StatementsNode }
@@ -14972,11 +16076,19 @@ module Prism
14972
16076
  visitor.visit_range_node(self)
14973
16077
  end
14974
16078
 
14975
- # def child_nodes: () -> Array[nil | Node]
16079
+ # def child_nodes: () -> Array[Node?]
14976
16080
  def child_nodes
14977
16081
  [left, right]
14978
16082
  end
14979
16083
 
16084
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
16085
+ def each_child_node
16086
+ return to_enum(:each_child_node) unless block_given?
16087
+
16088
+ yield left if left
16089
+ yield right if right
16090
+ end
16091
+
14980
16092
  # def compact_child_nodes: () -> Array[Node]
14981
16093
  def compact_child_nodes
14982
16094
  compact = [] #: Array[Prism::node]
@@ -14995,7 +16107,7 @@ module Prism
14995
16107
  RangeNode.new(source, node_id, location, flags, left, right, operator_loc)
14996
16108
  end
14997
16109
 
14998
- # def deconstruct: () -> Array[nil | Node]
16110
+ # def deconstruct: () -> Array[Node?]
14999
16111
  alias deconstruct child_nodes
15000
16112
 
15001
16113
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, left: Prism::node?, right: Prism::node?, operator_loc: Location }
@@ -15091,11 +16203,17 @@ module Prism
15091
16203
  visitor.visit_rational_node(self)
15092
16204
  end
15093
16205
 
15094
- # def child_nodes: () -> Array[nil | Node]
16206
+ # def child_nodes: () -> Array[Node?]
15095
16207
  def child_nodes
15096
16208
  []
15097
16209
  end
15098
16210
 
16211
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
16212
+ def each_child_node
16213
+ return to_enum(:each_child_node) unless block_given?
16214
+
16215
+ end
16216
+
15099
16217
  # def compact_child_nodes: () -> Array[Node]
15100
16218
  def compact_child_nodes
15101
16219
  []
@@ -15111,7 +16229,7 @@ module Prism
15111
16229
  RationalNode.new(source, node_id, location, flags, numerator, denominator)
15112
16230
  end
15113
16231
 
15114
- # def deconstruct: () -> Array[nil | Node]
16232
+ # def deconstruct: () -> Array[Node?]
15115
16233
  alias deconstruct child_nodes
15116
16234
 
15117
16235
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, numerator: Integer, denominator: Integer }
@@ -15192,11 +16310,17 @@ module Prism
15192
16310
  visitor.visit_redo_node(self)
15193
16311
  end
15194
16312
 
15195
- # def child_nodes: () -> Array[nil | Node]
16313
+ # def child_nodes: () -> Array[Node?]
15196
16314
  def child_nodes
15197
16315
  []
15198
16316
  end
15199
16317
 
16318
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
16319
+ def each_child_node
16320
+ return to_enum(:each_child_node) unless block_given?
16321
+
16322
+ end
16323
+
15200
16324
  # def compact_child_nodes: () -> Array[Node]
15201
16325
  def compact_child_nodes
15202
16326
  []
@@ -15212,7 +16336,7 @@ module Prism
15212
16336
  RedoNode.new(source, node_id, location, flags)
15213
16337
  end
15214
16338
 
15215
- # def deconstruct: () -> Array[nil | Node]
16339
+ # def deconstruct: () -> Array[Node?]
15216
16340
  alias deconstruct child_nodes
15217
16341
 
15218
16342
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location }
@@ -15264,11 +16388,17 @@ module Prism
15264
16388
  visitor.visit_regular_expression_node(self)
15265
16389
  end
15266
16390
 
15267
- # def child_nodes: () -> Array[nil | Node]
16391
+ # def child_nodes: () -> Array[Node?]
15268
16392
  def child_nodes
15269
16393
  []
15270
16394
  end
15271
16395
 
16396
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
16397
+ def each_child_node
16398
+ return to_enum(:each_child_node) unless block_given?
16399
+
16400
+ end
16401
+
15272
16402
  # def compact_child_nodes: () -> Array[Node]
15273
16403
  def compact_child_nodes
15274
16404
  []
@@ -15284,7 +16414,7 @@ module Prism
15284
16414
  RegularExpressionNode.new(source, node_id, location, flags, opening_loc, content_loc, closing_loc, unescaped)
15285
16415
  end
15286
16416
 
15287
- # def deconstruct: () -> Array[nil | Node]
16417
+ # def deconstruct: () -> Array[Node?]
15288
16418
  alias deconstruct child_nodes
15289
16419
 
15290
16420
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, opening_loc: Location, content_loc: Location, closing_loc: Location, unescaped: String }
@@ -15452,11 +16582,17 @@ module Prism
15452
16582
  visitor.visit_required_keyword_parameter_node(self)
15453
16583
  end
15454
16584
 
15455
- # def child_nodes: () -> Array[nil | Node]
16585
+ # def child_nodes: () -> Array[Node?]
15456
16586
  def child_nodes
15457
16587
  []
15458
16588
  end
15459
16589
 
16590
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
16591
+ def each_child_node
16592
+ return to_enum(:each_child_node) unless block_given?
16593
+
16594
+ end
16595
+
15460
16596
  # def compact_child_nodes: () -> Array[Node]
15461
16597
  def compact_child_nodes
15462
16598
  []
@@ -15472,7 +16608,7 @@ module Prism
15472
16608
  RequiredKeywordParameterNode.new(source, node_id, location, flags, name, name_loc)
15473
16609
  end
15474
16610
 
15475
- # def deconstruct: () -> Array[nil | Node]
16611
+ # def deconstruct: () -> Array[Node?]
15476
16612
  alias deconstruct child_nodes
15477
16613
 
15478
16614
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol, name_loc: Location }
@@ -15546,11 +16682,17 @@ module Prism
15546
16682
  visitor.visit_required_parameter_node(self)
15547
16683
  end
15548
16684
 
15549
- # def child_nodes: () -> Array[nil | Node]
16685
+ # def child_nodes: () -> Array[Node?]
15550
16686
  def child_nodes
15551
16687
  []
15552
16688
  end
15553
16689
 
16690
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
16691
+ def each_child_node
16692
+ return to_enum(:each_child_node) unless block_given?
16693
+
16694
+ end
16695
+
15554
16696
  # def compact_child_nodes: () -> Array[Node]
15555
16697
  def compact_child_nodes
15556
16698
  []
@@ -15566,7 +16708,7 @@ module Prism
15566
16708
  RequiredParameterNode.new(source, node_id, location, flags, name)
15567
16709
  end
15568
16710
 
15569
- # def deconstruct: () -> Array[nil | Node]
16711
+ # def deconstruct: () -> Array[Node?]
15570
16712
  alias deconstruct child_nodes
15571
16713
 
15572
16714
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol }
@@ -15627,11 +16769,19 @@ module Prism
15627
16769
  visitor.visit_rescue_modifier_node(self)
15628
16770
  end
15629
16771
 
15630
- # def child_nodes: () -> Array[nil | Node]
16772
+ # def child_nodes: () -> Array[Node?]
15631
16773
  def child_nodes
15632
16774
  [expression, rescue_expression]
15633
16775
  end
15634
16776
 
16777
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
16778
+ def each_child_node
16779
+ return to_enum(:each_child_node) unless block_given?
16780
+
16781
+ yield expression
16782
+ yield rescue_expression
16783
+ end
16784
+
15635
16785
  # def compact_child_nodes: () -> Array[Node]
15636
16786
  def compact_child_nodes
15637
16787
  [expression, rescue_expression]
@@ -15647,7 +16797,7 @@ module Prism
15647
16797
  RescueModifierNode.new(source, node_id, location, flags, expression, keyword_loc, rescue_expression)
15648
16798
  end
15649
16799
 
15650
- # def deconstruct: () -> Array[nil | Node]
16800
+ # def deconstruct: () -> Array[Node?]
15651
16801
  alias deconstruct child_nodes
15652
16802
 
15653
16803
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, expression: Prism::node, keyword_loc: Location, rescue_expression: Prism::node }
@@ -15734,11 +16884,21 @@ module Prism
15734
16884
  visitor.visit_rescue_node(self)
15735
16885
  end
15736
16886
 
15737
- # def child_nodes: () -> Array[nil | Node]
16887
+ # def child_nodes: () -> Array[Node?]
15738
16888
  def child_nodes
15739
16889
  [*exceptions, reference, statements, subsequent]
15740
16890
  end
15741
16891
 
16892
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
16893
+ def each_child_node
16894
+ return to_enum(:each_child_node) unless block_given?
16895
+
16896
+ exceptions.each { |node| yield node }
16897
+ yield reference if reference
16898
+ yield statements if statements
16899
+ yield subsequent if subsequent
16900
+ end
16901
+
15742
16902
  # def compact_child_nodes: () -> Array[Node]
15743
16903
  def compact_child_nodes
15744
16904
  compact = [] #: Array[Prism::node]
@@ -15759,7 +16919,7 @@ module Prism
15759
16919
  RescueNode.new(source, node_id, location, flags, keyword_loc, exceptions, operator_loc, reference, then_keyword_loc, statements, subsequent)
15760
16920
  end
15761
16921
 
15762
- # def deconstruct: () -> Array[nil | Node]
16922
+ # def deconstruct: () -> Array[Node?]
15763
16923
  alias deconstruct child_nodes
15764
16924
 
15765
16925
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, keyword_loc: Location, exceptions: Array[Prism::node], operator_loc: Location?, reference: LocalVariableTargetNode | InstanceVariableTargetNode | ClassVariableTargetNode | GlobalVariableTargetNode | ConstantTargetNode | ConstantPathTargetNode | CallTargetNode | IndexTargetNode | BackReferenceReadNode | NumberedReferenceReadNode | MissingNode | nil, then_keyword_loc: Location?, statements: StatementsNode?, subsequent: RescueNode? }
@@ -15897,11 +17057,17 @@ module Prism
15897
17057
  visitor.visit_rest_parameter_node(self)
15898
17058
  end
15899
17059
 
15900
- # def child_nodes: () -> Array[nil | Node]
17060
+ # def child_nodes: () -> Array[Node?]
15901
17061
  def child_nodes
15902
17062
  []
15903
17063
  end
15904
17064
 
17065
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
17066
+ def each_child_node
17067
+ return to_enum(:each_child_node) unless block_given?
17068
+
17069
+ end
17070
+
15905
17071
  # def compact_child_nodes: () -> Array[Node]
15906
17072
  def compact_child_nodes
15907
17073
  []
@@ -15917,7 +17083,7 @@ module Prism
15917
17083
  RestParameterNode.new(source, node_id, location, flags, name, name_loc, operator_loc)
15918
17084
  end
15919
17085
 
15920
- # def deconstruct: () -> Array[nil | Node]
17086
+ # def deconstruct: () -> Array[Node?]
15921
17087
  alias deconstruct child_nodes
15922
17088
 
15923
17089
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol?, name_loc: Location?, operator_loc: Location }
@@ -16014,11 +17180,17 @@ module Prism
16014
17180
  visitor.visit_retry_node(self)
16015
17181
  end
16016
17182
 
16017
- # def child_nodes: () -> Array[nil | Node]
17183
+ # def child_nodes: () -> Array[Node?]
16018
17184
  def child_nodes
16019
17185
  []
16020
17186
  end
16021
17187
 
17188
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
17189
+ def each_child_node
17190
+ return to_enum(:each_child_node) unless block_given?
17191
+
17192
+ end
17193
+
16022
17194
  # def compact_child_nodes: () -> Array[Node]
16023
17195
  def compact_child_nodes
16024
17196
  []
@@ -16034,7 +17206,7 @@ module Prism
16034
17206
  RetryNode.new(source, node_id, location, flags)
16035
17207
  end
16036
17208
 
16037
- # def deconstruct: () -> Array[nil | Node]
17209
+ # def deconstruct: () -> Array[Node?]
16038
17210
  alias deconstruct child_nodes
16039
17211
 
16040
17212
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location }
@@ -16084,11 +17256,18 @@ module Prism
16084
17256
  visitor.visit_return_node(self)
16085
17257
  end
16086
17258
 
16087
- # def child_nodes: () -> Array[nil | Node]
17259
+ # def child_nodes: () -> Array[Node?]
16088
17260
  def child_nodes
16089
17261
  [arguments]
16090
17262
  end
16091
17263
 
17264
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
17265
+ def each_child_node
17266
+ return to_enum(:each_child_node) unless block_given?
17267
+
17268
+ yield arguments if arguments
17269
+ end
17270
+
16092
17271
  # def compact_child_nodes: () -> Array[Node]
16093
17272
  def compact_child_nodes
16094
17273
  compact = [] #: Array[Prism::node]
@@ -16106,7 +17285,7 @@ module Prism
16106
17285
  ReturnNode.new(source, node_id, location, flags, keyword_loc, arguments)
16107
17286
  end
16108
17287
 
16109
- # def deconstruct: () -> Array[nil | Node]
17288
+ # def deconstruct: () -> Array[Node?]
16110
17289
  alias deconstruct child_nodes
16111
17290
 
16112
17291
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, keyword_loc: Location, arguments: ArgumentsNode? }
@@ -16177,11 +17356,17 @@ module Prism
16177
17356
  visitor.visit_self_node(self)
16178
17357
  end
16179
17358
 
16180
- # def child_nodes: () -> Array[nil | Node]
17359
+ # def child_nodes: () -> Array[Node?]
16181
17360
  def child_nodes
16182
17361
  []
16183
17362
  end
16184
17363
 
17364
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
17365
+ def each_child_node
17366
+ return to_enum(:each_child_node) unless block_given?
17367
+
17368
+ end
17369
+
16185
17370
  # def compact_child_nodes: () -> Array[Node]
16186
17371
  def compact_child_nodes
16187
17372
  []
@@ -16197,7 +17382,7 @@ module Prism
16197
17382
  SelfNode.new(source, node_id, location, flags)
16198
17383
  end
16199
17384
 
16200
- # def deconstruct: () -> Array[nil | Node]
17385
+ # def deconstruct: () -> Array[Node?]
16201
17386
  alias deconstruct child_nodes
16202
17387
 
16203
17388
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location }
@@ -16247,11 +17432,18 @@ module Prism
16247
17432
  visitor.visit_shareable_constant_node(self)
16248
17433
  end
16249
17434
 
16250
- # def child_nodes: () -> Array[nil | Node]
17435
+ # def child_nodes: () -> Array[Node?]
16251
17436
  def child_nodes
16252
17437
  [write]
16253
17438
  end
16254
17439
 
17440
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
17441
+ def each_child_node
17442
+ return to_enum(:each_child_node) unless block_given?
17443
+
17444
+ yield write
17445
+ end
17446
+
16255
17447
  # def compact_child_nodes: () -> Array[Node]
16256
17448
  def compact_child_nodes
16257
17449
  [write]
@@ -16267,7 +17459,7 @@ module Prism
16267
17459
  ShareableConstantNode.new(source, node_id, location, flags, write)
16268
17460
  end
16269
17461
 
16270
- # def deconstruct: () -> Array[nil | Node]
17462
+ # def deconstruct: () -> Array[Node?]
16271
17463
  alias deconstruct child_nodes
16272
17464
 
16273
17465
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, write: ConstantWriteNode | ConstantAndWriteNode | ConstantOrWriteNode | ConstantOperatorWriteNode | ConstantPathWriteNode | ConstantPathAndWriteNode | ConstantPathOrWriteNode | ConstantPathOperatorWriteNode }
@@ -16341,11 +17533,19 @@ module Prism
16341
17533
  visitor.visit_singleton_class_node(self)
16342
17534
  end
16343
17535
 
16344
- # def child_nodes: () -> Array[nil | Node]
17536
+ # def child_nodes: () -> Array[Node?]
16345
17537
  def child_nodes
16346
17538
  [expression, body]
16347
17539
  end
16348
17540
 
17541
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
17542
+ def each_child_node
17543
+ return to_enum(:each_child_node) unless block_given?
17544
+
17545
+ yield expression
17546
+ yield body if body
17547
+ end
17548
+
16349
17549
  # def compact_child_nodes: () -> Array[Node]
16350
17550
  def compact_child_nodes
16351
17551
  compact = [] #: Array[Prism::node]
@@ -16364,7 +17564,7 @@ module Prism
16364
17564
  SingletonClassNode.new(source, node_id, location, flags, locals, class_keyword_loc, operator_loc, expression, body, end_keyword_loc)
16365
17565
  end
16366
17566
 
16367
- # def deconstruct: () -> Array[nil | Node]
17567
+ # def deconstruct: () -> Array[Node?]
16368
17568
  alias deconstruct child_nodes
16369
17569
 
16370
17570
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, locals: Array[Symbol], class_keyword_loc: Location, operator_loc: Location, expression: Prism::node, body: StatementsNode | BeginNode | nil, end_keyword_loc: Location }
@@ -16482,11 +17682,17 @@ module Prism
16482
17682
  visitor.visit_source_encoding_node(self)
16483
17683
  end
16484
17684
 
16485
- # def child_nodes: () -> Array[nil | Node]
17685
+ # def child_nodes: () -> Array[Node?]
16486
17686
  def child_nodes
16487
17687
  []
16488
17688
  end
16489
17689
 
17690
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
17691
+ def each_child_node
17692
+ return to_enum(:each_child_node) unless block_given?
17693
+
17694
+ end
17695
+
16490
17696
  # def compact_child_nodes: () -> Array[Node]
16491
17697
  def compact_child_nodes
16492
17698
  []
@@ -16502,7 +17708,7 @@ module Prism
16502
17708
  SourceEncodingNode.new(source, node_id, location, flags)
16503
17709
  end
16504
17710
 
16505
- # def deconstruct: () -> Array[nil | Node]
17711
+ # def deconstruct: () -> Array[Node?]
16506
17712
  alias deconstruct child_nodes
16507
17713
 
16508
17714
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location }
@@ -16551,11 +17757,17 @@ module Prism
16551
17757
  visitor.visit_source_file_node(self)
16552
17758
  end
16553
17759
 
16554
- # def child_nodes: () -> Array[nil | Node]
17760
+ # def child_nodes: () -> Array[Node?]
16555
17761
  def child_nodes
16556
17762
  []
16557
17763
  end
16558
17764
 
17765
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
17766
+ def each_child_node
17767
+ return to_enum(:each_child_node) unless block_given?
17768
+
17769
+ end
17770
+
16559
17771
  # def compact_child_nodes: () -> Array[Node]
16560
17772
  def compact_child_nodes
16561
17773
  []
@@ -16571,7 +17783,7 @@ module Prism
16571
17783
  SourceFileNode.new(source, node_id, location, flags, filepath)
16572
17784
  end
16573
17785
 
16574
- # def deconstruct: () -> Array[nil | Node]
17786
+ # def deconstruct: () -> Array[Node?]
16575
17787
  alias deconstruct child_nodes
16576
17788
 
16577
17789
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, filepath: String }
@@ -16644,11 +17856,17 @@ module Prism
16644
17856
  visitor.visit_source_line_node(self)
16645
17857
  end
16646
17858
 
16647
- # def child_nodes: () -> Array[nil | Node]
17859
+ # def child_nodes: () -> Array[Node?]
16648
17860
  def child_nodes
16649
17861
  []
16650
17862
  end
16651
17863
 
17864
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
17865
+ def each_child_node
17866
+ return to_enum(:each_child_node) unless block_given?
17867
+
17868
+ end
17869
+
16652
17870
  # def compact_child_nodes: () -> Array[Node]
16653
17871
  def compact_child_nodes
16654
17872
  []
@@ -16664,7 +17882,7 @@ module Prism
16664
17882
  SourceLineNode.new(source, node_id, location, flags)
16665
17883
  end
16666
17884
 
16667
- # def deconstruct: () -> Array[nil | Node]
17885
+ # def deconstruct: () -> Array[Node?]
16668
17886
  alias deconstruct child_nodes
16669
17887
 
16670
17888
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location }
@@ -16714,11 +17932,18 @@ module Prism
16714
17932
  visitor.visit_splat_node(self)
16715
17933
  end
16716
17934
 
16717
- # def child_nodes: () -> Array[nil | Node]
17935
+ # def child_nodes: () -> Array[Node?]
16718
17936
  def child_nodes
16719
17937
  [expression]
16720
17938
  end
16721
17939
 
17940
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
17941
+ def each_child_node
17942
+ return to_enum(:each_child_node) unless block_given?
17943
+
17944
+ yield expression if expression
17945
+ end
17946
+
16722
17947
  # def compact_child_nodes: () -> Array[Node]
16723
17948
  def compact_child_nodes
16724
17949
  compact = [] #: Array[Prism::node]
@@ -16736,7 +17961,7 @@ module Prism
16736
17961
  SplatNode.new(source, node_id, location, flags, operator_loc, expression)
16737
17962
  end
16738
17963
 
16739
- # def deconstruct: () -> Array[nil | Node]
17964
+ # def deconstruct: () -> Array[Node?]
16740
17965
  alias deconstruct child_nodes
16741
17966
 
16742
17967
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, operator_loc: Location, expression: Prism::node? }
@@ -16808,11 +18033,18 @@ module Prism
16808
18033
  visitor.visit_statements_node(self)
16809
18034
  end
16810
18035
 
16811
- # def child_nodes: () -> Array[nil | Node]
18036
+ # def child_nodes: () -> Array[Node?]
16812
18037
  def child_nodes
16813
18038
  [*body]
16814
18039
  end
16815
18040
 
18041
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
18042
+ def each_child_node
18043
+ return to_enum(:each_child_node) unless block_given?
18044
+
18045
+ body.each { |node| yield node }
18046
+ end
18047
+
16816
18048
  # def compact_child_nodes: () -> Array[Node]
16817
18049
  def compact_child_nodes
16818
18050
  [*body]
@@ -16828,7 +18060,7 @@ module Prism
16828
18060
  StatementsNode.new(source, node_id, location, flags, body)
16829
18061
  end
16830
18062
 
16831
- # def deconstruct: () -> Array[nil | Node]
18063
+ # def deconstruct: () -> Array[Node?]
16832
18064
  alias deconstruct child_nodes
16833
18065
 
16834
18066
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, body: Array[Prism::node] }
@@ -16891,11 +18123,17 @@ module Prism
16891
18123
  visitor.visit_string_node(self)
16892
18124
  end
16893
18125
 
16894
- # def child_nodes: () -> Array[nil | Node]
18126
+ # def child_nodes: () -> Array[Node?]
16895
18127
  def child_nodes
16896
18128
  []
16897
18129
  end
16898
18130
 
18131
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
18132
+ def each_child_node
18133
+ return to_enum(:each_child_node) unless block_given?
18134
+
18135
+ end
18136
+
16899
18137
  # def compact_child_nodes: () -> Array[Node]
16900
18138
  def compact_child_nodes
16901
18139
  []
@@ -16911,7 +18149,7 @@ module Prism
16911
18149
  StringNode.new(source, node_id, location, flags, opening_loc, content_loc, closing_loc, unescaped)
16912
18150
  end
16913
18151
 
16914
- # def deconstruct: () -> Array[nil | Node]
18152
+ # def deconstruct: () -> Array[Node?]
16915
18153
  alias deconstruct child_nodes
16916
18154
 
16917
18155
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, opening_loc: Location?, content_loc: Location, closing_loc: Location?, unescaped: String }
@@ -17042,6 +18280,8 @@ module Prism
17042
18280
  #
17043
18281
  # super foo, bar
17044
18282
  # ^^^^^^^^^^^^^^
18283
+ #
18284
+ # If no arguments are provided (except for a block), it would be a `ForwardingSuperNode` instead.
17045
18285
  class SuperNode < Node
17046
18286
  # Initialize a new SuperNode node.
17047
18287
  def initialize(source, node_id, location, flags, keyword_loc, lparen_loc, arguments, rparen_loc, block)
@@ -17061,11 +18301,19 @@ module Prism
17061
18301
  visitor.visit_super_node(self)
17062
18302
  end
17063
18303
 
17064
- # def child_nodes: () -> Array[nil | Node]
18304
+ # def child_nodes: () -> Array[Node?]
17065
18305
  def child_nodes
17066
18306
  [arguments, block]
17067
18307
  end
17068
18308
 
18309
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
18310
+ def each_child_node
18311
+ return to_enum(:each_child_node) unless block_given?
18312
+
18313
+ yield arguments if arguments
18314
+ yield block if block
18315
+ end
18316
+
17069
18317
  # def compact_child_nodes: () -> Array[Node]
17070
18318
  def compact_child_nodes
17071
18319
  compact = [] #: Array[Prism::node]
@@ -17084,7 +18332,7 @@ module Prism
17084
18332
  SuperNode.new(source, node_id, location, flags, keyword_loc, lparen_loc, arguments, rparen_loc, block)
17085
18333
  end
17086
18334
 
17087
- # def deconstruct: () -> Array[nil | Node]
18335
+ # def deconstruct: () -> Array[Node?]
17088
18336
  alias deconstruct child_nodes
17089
18337
 
17090
18338
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, keyword_loc: Location, lparen_loc: Location?, arguments: ArgumentsNode?, rparen_loc: Location?, block: BlockNode | BlockArgumentNode | nil }
@@ -17124,7 +18372,7 @@ module Prism
17124
18372
  repository.enter(node_id, :lparen_loc) unless @lparen_loc.nil?
17125
18373
  end
17126
18374
 
17127
- # attr_reader arguments: ArgumentsNode?
18375
+ # Can be only `nil` when there are empty parentheses, like `super()`.
17128
18376
  attr_reader :arguments
17129
18377
 
17130
18378
  # attr_reader rparen_loc: Location?
@@ -17216,11 +18464,17 @@ module Prism
17216
18464
  visitor.visit_symbol_node(self)
17217
18465
  end
17218
18466
 
17219
- # def child_nodes: () -> Array[nil | Node]
18467
+ # def child_nodes: () -> Array[Node?]
17220
18468
  def child_nodes
17221
18469
  []
17222
18470
  end
17223
18471
 
18472
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
18473
+ def each_child_node
18474
+ return to_enum(:each_child_node) unless block_given?
18475
+
18476
+ end
18477
+
17224
18478
  # def compact_child_nodes: () -> Array[Node]
17225
18479
  def compact_child_nodes
17226
18480
  []
@@ -17236,7 +18490,7 @@ module Prism
17236
18490
  SymbolNode.new(source, node_id, location, flags, opening_loc, value_loc, closing_loc, unescaped)
17237
18491
  end
17238
18492
 
17239
- # def deconstruct: () -> Array[nil | Node]
18493
+ # def deconstruct: () -> Array[Node?]
17240
18494
  alias deconstruct child_nodes
17241
18495
 
17242
18496
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, opening_loc: Location?, value_loc: Location?, closing_loc: Location?, unescaped: String }
@@ -17379,11 +18633,17 @@ module Prism
17379
18633
  visitor.visit_true_node(self)
17380
18634
  end
17381
18635
 
17382
- # def child_nodes: () -> Array[nil | Node]
18636
+ # def child_nodes: () -> Array[Node?]
17383
18637
  def child_nodes
17384
18638
  []
17385
18639
  end
17386
18640
 
18641
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
18642
+ def each_child_node
18643
+ return to_enum(:each_child_node) unless block_given?
18644
+
18645
+ end
18646
+
17387
18647
  # def compact_child_nodes: () -> Array[Node]
17388
18648
  def compact_child_nodes
17389
18649
  []
@@ -17399,7 +18659,7 @@ module Prism
17399
18659
  TrueNode.new(source, node_id, location, flags)
17400
18660
  end
17401
18661
 
17402
- # def deconstruct: () -> Array[nil | Node]
18662
+ # def deconstruct: () -> Array[Node?]
17403
18663
  alias deconstruct child_nodes
17404
18664
 
17405
18665
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location }
@@ -17449,11 +18709,18 @@ module Prism
17449
18709
  visitor.visit_undef_node(self)
17450
18710
  end
17451
18711
 
17452
- # def child_nodes: () -> Array[nil | Node]
18712
+ # def child_nodes: () -> Array[Node?]
17453
18713
  def child_nodes
17454
18714
  [*names]
17455
18715
  end
17456
18716
 
18717
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
18718
+ def each_child_node
18719
+ return to_enum(:each_child_node) unless block_given?
18720
+
18721
+ names.each { |node| yield node }
18722
+ end
18723
+
17457
18724
  # def compact_child_nodes: () -> Array[Node]
17458
18725
  def compact_child_nodes
17459
18726
  [*names]
@@ -17469,7 +18736,7 @@ module Prism
17469
18736
  UndefNode.new(source, node_id, location, flags, names, keyword_loc)
17470
18737
  end
17471
18738
 
17472
- # def deconstruct: () -> Array[nil | Node]
18739
+ # def deconstruct: () -> Array[Node?]
17473
18740
  alias deconstruct child_nodes
17474
18741
 
17475
18742
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, names: Array[SymbolNode | InterpolatedSymbolNode], keyword_loc: Location }
@@ -17550,11 +18817,20 @@ module Prism
17550
18817
  visitor.visit_unless_node(self)
17551
18818
  end
17552
18819
 
17553
- # def child_nodes: () -> Array[nil | Node]
18820
+ # def child_nodes: () -> Array[Node?]
17554
18821
  def child_nodes
17555
18822
  [predicate, statements, else_clause]
17556
18823
  end
17557
18824
 
18825
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
18826
+ def each_child_node
18827
+ return to_enum(:each_child_node) unless block_given?
18828
+
18829
+ yield predicate
18830
+ yield statements if statements
18831
+ yield else_clause if else_clause
18832
+ end
18833
+
17558
18834
  # def compact_child_nodes: () -> Array[Node]
17559
18835
  def compact_child_nodes
17560
18836
  compact = [] #: Array[Prism::node]
@@ -17574,7 +18850,7 @@ module Prism
17574
18850
  UnlessNode.new(source, node_id, location, flags, keyword_loc, predicate, then_keyword_loc, statements, else_clause, end_keyword_loc)
17575
18851
  end
17576
18852
 
17577
- # def deconstruct: () -> Array[nil | Node]
18853
+ # def deconstruct: () -> Array[Node?]
17578
18854
  alias deconstruct child_nodes
17579
18855
 
17580
18856
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, keyword_loc: Location, predicate: Prism::node, then_keyword_loc: Location?, statements: StatementsNode?, else_clause: ElseNode?, end_keyword_loc: Location? }
@@ -17736,11 +19012,19 @@ module Prism
17736
19012
  visitor.visit_until_node(self)
17737
19013
  end
17738
19014
 
17739
- # def child_nodes: () -> Array[nil | Node]
19015
+ # def child_nodes: () -> Array[Node?]
17740
19016
  def child_nodes
17741
19017
  [predicate, statements]
17742
19018
  end
17743
19019
 
19020
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
19021
+ def each_child_node
19022
+ return to_enum(:each_child_node) unless block_given?
19023
+
19024
+ yield predicate
19025
+ yield statements if statements
19026
+ end
19027
+
17744
19028
  # def compact_child_nodes: () -> Array[Node]
17745
19029
  def compact_child_nodes
17746
19030
  compact = [] #: Array[Prism::node]
@@ -17759,7 +19043,7 @@ module Prism
17759
19043
  UntilNode.new(source, node_id, location, flags, keyword_loc, do_keyword_loc, closing_loc, predicate, statements)
17760
19044
  end
17761
19045
 
17762
- # def deconstruct: () -> Array[nil | Node]
19046
+ # def deconstruct: () -> Array[Node?]
17763
19047
  alias deconstruct child_nodes
17764
19048
 
17765
19049
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, keyword_loc: Location, do_keyword_loc: Location?, closing_loc: Location?, predicate: Prism::node, statements: StatementsNode? }
@@ -17896,11 +19180,19 @@ module Prism
17896
19180
  visitor.visit_when_node(self)
17897
19181
  end
17898
19182
 
17899
- # def child_nodes: () -> Array[nil | Node]
19183
+ # def child_nodes: () -> Array[Node?]
17900
19184
  def child_nodes
17901
19185
  [*conditions, statements]
17902
19186
  end
17903
19187
 
19188
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
19189
+ def each_child_node
19190
+ return to_enum(:each_child_node) unless block_given?
19191
+
19192
+ conditions.each { |node| yield node }
19193
+ yield statements if statements
19194
+ end
19195
+
17904
19196
  # def compact_child_nodes: () -> Array[Node]
17905
19197
  def compact_child_nodes
17906
19198
  compact = [] #: Array[Prism::node]
@@ -17919,7 +19211,7 @@ module Prism
17919
19211
  WhenNode.new(source, node_id, location, flags, keyword_loc, conditions, then_keyword_loc, statements)
17920
19212
  end
17921
19213
 
17922
- # def deconstruct: () -> Array[nil | Node]
19214
+ # def deconstruct: () -> Array[Node?]
17923
19215
  alias deconstruct child_nodes
17924
19216
 
17925
19217
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, keyword_loc: Location, conditions: Array[Prism::node], then_keyword_loc: Location?, statements: StatementsNode? }
@@ -18028,11 +19320,19 @@ module Prism
18028
19320
  visitor.visit_while_node(self)
18029
19321
  end
18030
19322
 
18031
- # def child_nodes: () -> Array[nil | Node]
19323
+ # def child_nodes: () -> Array[Node?]
18032
19324
  def child_nodes
18033
19325
  [predicate, statements]
18034
19326
  end
18035
19327
 
19328
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
19329
+ def each_child_node
19330
+ return to_enum(:each_child_node) unless block_given?
19331
+
19332
+ yield predicate
19333
+ yield statements if statements
19334
+ end
19335
+
18036
19336
  # def compact_child_nodes: () -> Array[Node]
18037
19337
  def compact_child_nodes
18038
19338
  compact = [] #: Array[Prism::node]
@@ -18051,7 +19351,7 @@ module Prism
18051
19351
  WhileNode.new(source, node_id, location, flags, keyword_loc, do_keyword_loc, closing_loc, predicate, statements)
18052
19352
  end
18053
19353
 
18054
- # def deconstruct: () -> Array[nil | Node]
19354
+ # def deconstruct: () -> Array[Node?]
18055
19355
  alias deconstruct child_nodes
18056
19356
 
18057
19357
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, keyword_loc: Location, do_keyword_loc: Location?, closing_loc: Location?, predicate: Prism::node, statements: StatementsNode? }
@@ -18186,11 +19486,17 @@ module Prism
18186
19486
  visitor.visit_x_string_node(self)
18187
19487
  end
18188
19488
 
18189
- # def child_nodes: () -> Array[nil | Node]
19489
+ # def child_nodes: () -> Array[Node?]
18190
19490
  def child_nodes
18191
19491
  []
18192
19492
  end
18193
19493
 
19494
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
19495
+ def each_child_node
19496
+ return to_enum(:each_child_node) unless block_given?
19497
+
19498
+ end
19499
+
18194
19500
  # def compact_child_nodes: () -> Array[Node]
18195
19501
  def compact_child_nodes
18196
19502
  []
@@ -18206,7 +19512,7 @@ module Prism
18206
19512
  XStringNode.new(source, node_id, location, flags, opening_loc, content_loc, closing_loc, unescaped)
18207
19513
  end
18208
19514
 
18209
- # def deconstruct: () -> Array[nil | Node]
19515
+ # def deconstruct: () -> Array[Node?]
18210
19516
  alias deconstruct child_nodes
18211
19517
 
18212
19518
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, opening_loc: Location, content_loc: Location, closing_loc: Location, unescaped: String }
@@ -18330,11 +19636,18 @@ module Prism
18330
19636
  visitor.visit_yield_node(self)
18331
19637
  end
18332
19638
 
18333
- # def child_nodes: () -> Array[nil | Node]
19639
+ # def child_nodes: () -> Array[Node?]
18334
19640
  def child_nodes
18335
19641
  [arguments]
18336
19642
  end
18337
19643
 
19644
+ # def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator[Prism::node]
19645
+ def each_child_node
19646
+ return to_enum(:each_child_node) unless block_given?
19647
+
19648
+ yield arguments if arguments
19649
+ end
19650
+
18338
19651
  # def compact_child_nodes: () -> Array[Node]
18339
19652
  def compact_child_nodes
18340
19653
  compact = [] #: Array[Prism::node]
@@ -18352,7 +19665,7 @@ module Prism
18352
19665
  YieldNode.new(source, node_id, location, flags, keyword_loc, lparen_loc, arguments, rparen_loc)
18353
19666
  end
18354
19667
 
18355
- # def deconstruct: () -> Array[nil | Node]
19668
+ # def deconstruct: () -> Array[Node?]
18356
19669
  alias deconstruct child_nodes
18357
19670
 
18358
19671
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, keyword_loc: Location, lparen_loc: Location?, arguments: ArgumentsNode?, rparen_loc: Location? }