prism 1.4.0 → 1.5.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 (75) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +23 -1
  3. data/Makefile +2 -1
  4. data/README.md +1 -0
  5. data/config.yml +264 -37
  6. data/docs/parser_translation.md +8 -23
  7. data/docs/ripper_translation.md +1 -1
  8. data/ext/prism/api_node.c +2 -0
  9. data/ext/prism/extension.c +14 -1
  10. data/ext/prism/extension.h +1 -1
  11. data/include/prism/ast.h +275 -49
  12. data/include/prism/diagnostic.h +4 -0
  13. data/include/prism/options.h +43 -3
  14. data/include/prism/regexp.h +2 -2
  15. data/include/prism/util/pm_buffer.h +8 -0
  16. data/include/prism/util/pm_integer.h +4 -0
  17. data/include/prism/util/pm_list.h +6 -0
  18. data/include/prism/util/pm_string.h +12 -2
  19. data/include/prism/version.h +2 -2
  20. data/include/prism.h +39 -14
  21. data/lib/prism/compiler.rb +456 -151
  22. data/lib/prism/desugar_compiler.rb +1 -0
  23. data/lib/prism/dispatcher.rb +16 -0
  24. data/lib/prism/dot_visitor.rb +5 -1
  25. data/lib/prism/dsl.rb +3 -0
  26. data/lib/prism/ffi.rb +17 -7
  27. data/lib/prism/inspect_visitor.rb +3 -0
  28. data/lib/prism/lex_compat.rb +1 -0
  29. data/lib/prism/mutation_compiler.rb +3 -0
  30. data/lib/prism/node.rb +506 -335
  31. data/lib/prism/node_ext.rb +4 -1
  32. data/lib/prism/pack.rb +2 -0
  33. data/lib/prism/parse_result/comments.rb +1 -0
  34. data/lib/prism/parse_result/errors.rb +1 -0
  35. data/lib/prism/parse_result/newlines.rb +1 -0
  36. data/lib/prism/parse_result.rb +1 -0
  37. data/lib/prism/pattern.rb +1 -0
  38. data/lib/prism/polyfill/scan_byte.rb +14 -0
  39. data/lib/prism/polyfill/warn.rb +42 -0
  40. data/lib/prism/reflection.rb +3 -0
  41. data/lib/prism/relocation.rb +1 -0
  42. data/lib/prism/serialize.rb +24 -19
  43. data/lib/prism/string_query.rb +1 -0
  44. data/lib/prism/translation/parser/builder.rb +1 -0
  45. data/lib/prism/translation/parser/compiler.rb +47 -25
  46. data/lib/prism/translation/parser/lexer.rb +29 -21
  47. data/lib/prism/translation/parser.rb +13 -1
  48. data/lib/prism/translation/parser33.rb +1 -0
  49. data/lib/prism/translation/parser34.rb +1 -0
  50. data/lib/prism/translation/parser35.rb +1 -0
  51. data/lib/prism/translation/parser_current.rb +24 -0
  52. data/lib/prism/translation/ripper/sexp.rb +1 -0
  53. data/lib/prism/translation/ripper.rb +17 -1
  54. data/lib/prism/translation/ruby_parser.rb +286 -3
  55. data/lib/prism/translation.rb +2 -0
  56. data/lib/prism/visitor.rb +457 -152
  57. data/lib/prism.rb +2 -0
  58. data/prism.gemspec +5 -1
  59. data/rbi/prism/dsl.rbi +3 -3
  60. data/rbi/prism/node.rbi +21 -9
  61. data/sig/prism/dispatcher.rbs +3 -0
  62. data/sig/prism/dsl.rbs +3 -3
  63. data/sig/prism/node.rbs +444 -30
  64. data/sig/prism/node_ext.rbs +84 -17
  65. data/sig/prism/parse_result/comments.rbs +38 -0
  66. data/sig/prism/parse_result.rbs +4 -0
  67. data/sig/prism/reflection.rbs +1 -1
  68. data/src/diagnostic.c +7 -1
  69. data/src/node.c +2 -0
  70. data/src/options.c +2 -2
  71. data/src/prettyprint.c +2 -0
  72. data/src/prism.c +252 -130
  73. data/src/serialize.c +2 -0
  74. data/src/token_type.c +36 -34
  75. metadata +6 -2
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
@@ -330,7 +333,7 @@ module Prism
330
333
  visitor.visit_alias_global_variable_node(self)
331
334
  end
332
335
 
333
- # def child_nodes: () -> Array[nil | Node]
336
+ # def child_nodes: () -> Array[Node?]
334
337
  def child_nodes
335
338
  [new_name, old_name]
336
339
  end
@@ -350,7 +353,7 @@ module Prism
350
353
  AliasGlobalVariableNode.new(source, node_id, location, flags, new_name, old_name, keyword_loc)
351
354
  end
352
355
 
353
- # def deconstruct: () -> Array[nil | Node]
356
+ # def deconstruct: () -> Array[Node?]
354
357
  alias deconstruct child_nodes
355
358
 
356
359
  # 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,7 +440,7 @@ module Prism
437
440
  visitor.visit_alias_method_node(self)
438
441
  end
439
442
 
440
- # def child_nodes: () -> Array[nil | Node]
443
+ # def child_nodes: () -> Array[Node?]
441
444
  def child_nodes
442
445
  [new_name, old_name]
443
446
  end
@@ -457,7 +460,7 @@ module Prism
457
460
  AliasMethodNode.new(source, node_id, location, flags, new_name, old_name, keyword_loc)
458
461
  end
459
462
 
460
- # def deconstruct: () -> Array[nil | Node]
463
+ # def deconstruct: () -> Array[Node?]
461
464
  alias deconstruct child_nodes
462
465
 
463
466
  # 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,7 +559,7 @@ module Prism
556
559
  visitor.visit_alternation_pattern_node(self)
557
560
  end
558
561
 
559
- # def child_nodes: () -> Array[nil | Node]
562
+ # def child_nodes: () -> Array[Node?]
560
563
  def child_nodes
561
564
  [left, right]
562
565
  end
@@ -576,7 +579,7 @@ module Prism
576
579
  AlternationPatternNode.new(source, node_id, location, flags, left, right, operator_loc)
577
580
  end
578
581
 
579
- # def deconstruct: () -> Array[nil | Node]
582
+ # def deconstruct: () -> Array[Node?]
580
583
  alias deconstruct child_nodes
581
584
 
582
585
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, left: Prism::node, right: Prism::node, operator_loc: Location }
@@ -663,7 +666,7 @@ module Prism
663
666
  visitor.visit_and_node(self)
664
667
  end
665
668
 
666
- # def child_nodes: () -> Array[nil | Node]
669
+ # def child_nodes: () -> Array[Node?]
667
670
  def child_nodes
668
671
  [left, right]
669
672
  end
@@ -683,7 +686,7 @@ module Prism
683
686
  AndNode.new(source, node_id, location, flags, left, right, operator_loc)
684
687
  end
685
688
 
686
- # def deconstruct: () -> Array[nil | Node]
689
+ # def deconstruct: () -> Array[Node?]
687
690
  alias deconstruct child_nodes
688
691
 
689
692
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, left: Prism::node, right: Prism::node, operator_loc: Location }
@@ -774,7 +777,7 @@ module Prism
774
777
  visitor.visit_arguments_node(self)
775
778
  end
776
779
 
777
- # def child_nodes: () -> Array[nil | Node]
780
+ # def child_nodes: () -> Array[Node?]
778
781
  def child_nodes
779
782
  [*arguments]
780
783
  end
@@ -794,7 +797,7 @@ module Prism
794
797
  ArgumentsNode.new(source, node_id, location, flags, arguments)
795
798
  end
796
799
 
797
- # def deconstruct: () -> Array[nil | Node]
800
+ # def deconstruct: () -> Array[Node?]
798
801
  alias deconstruct child_nodes
799
802
 
800
803
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, arguments: Array[Prism::node] }
@@ -879,7 +882,7 @@ module Prism
879
882
  visitor.visit_array_node(self)
880
883
  end
881
884
 
882
- # def child_nodes: () -> Array[nil | Node]
885
+ # def child_nodes: () -> Array[Node?]
883
886
  def child_nodes
884
887
  [*elements]
885
888
  end
@@ -899,7 +902,7 @@ module Prism
899
902
  ArrayNode.new(source, node_id, location, flags, elements, opening_loc, closing_loc)
900
903
  end
901
904
 
902
- # def deconstruct: () -> Array[nil | Node]
905
+ # def deconstruct: () -> Array[Node?]
903
906
  alias deconstruct child_nodes
904
907
 
905
908
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, elements: Array[Prism::node], opening_loc: Location?, closing_loc: Location? }
@@ -1036,7 +1039,7 @@ module Prism
1036
1039
  visitor.visit_array_pattern_node(self)
1037
1040
  end
1038
1041
 
1039
- # def child_nodes: () -> Array[nil | Node]
1042
+ # def child_nodes: () -> Array[Node?]
1040
1043
  def child_nodes
1041
1044
  [constant, *requireds, rest, *posts]
1042
1045
  end
@@ -1056,20 +1059,29 @@ module Prism
1056
1059
  [*constant, *requireds, *rest, *posts, *opening_loc, *closing_loc] #: Array[Prism::node | Location]
1057
1060
  end
1058
1061
 
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
1062
+ # 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
1063
  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
1064
  ArrayPatternNode.new(source, node_id, location, flags, constant, requireds, rest, posts, opening_loc, closing_loc)
1062
1065
  end
1063
1066
 
1064
- # def deconstruct: () -> Array[nil | Node]
1067
+ # def deconstruct: () -> Array[Node?]
1065
1068
  alias deconstruct child_nodes
1066
1069
 
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? }
1070
+ # 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
1071
  def deconstruct_keys(keys)
1069
1072
  { node_id: node_id, location: location, constant: constant, requireds: requireds, rest: rest, posts: posts, opening_loc: opening_loc, closing_loc: closing_loc }
1070
1073
  end
1071
1074
 
1072
- # attr_reader constant: ConstantReadNode | ConstantPathNode | nil
1075
+ # Represents the optional constant preceding the Array
1076
+ #
1077
+ # foo in Bar[]
1078
+ # ^^^
1079
+ #
1080
+ # foo in Bar[1, 2, 3]
1081
+ # ^^^
1082
+ #
1083
+ # foo in Bar::Baz[1, 2, 3]
1084
+ # ^^^^^^^^
1073
1085
  attr_reader :constant
1074
1086
 
1075
1087
  # Represents the required elements of the array pattern.
@@ -1195,7 +1207,7 @@ module Prism
1195
1207
  visitor.visit_assoc_node(self)
1196
1208
  end
1197
1209
 
1198
- # def child_nodes: () -> Array[nil | Node]
1210
+ # def child_nodes: () -> Array[Node?]
1199
1211
  def child_nodes
1200
1212
  [key, value]
1201
1213
  end
@@ -1215,7 +1227,7 @@ module Prism
1215
1227
  AssocNode.new(source, node_id, location, flags, key, value, operator_loc)
1216
1228
  end
1217
1229
 
1218
- # def deconstruct: () -> Array[nil | Node]
1230
+ # def deconstruct: () -> Array[Node?]
1219
1231
  alias deconstruct child_nodes
1220
1232
 
1221
1233
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, key: Prism::node, value: Prism::node, operator_loc: Location? }
@@ -1316,7 +1328,7 @@ module Prism
1316
1328
  visitor.visit_assoc_splat_node(self)
1317
1329
  end
1318
1330
 
1319
- # def child_nodes: () -> Array[nil | Node]
1331
+ # def child_nodes: () -> Array[Node?]
1320
1332
  def child_nodes
1321
1333
  [value]
1322
1334
  end
@@ -1338,7 +1350,7 @@ module Prism
1338
1350
  AssocSplatNode.new(source, node_id, location, flags, value, operator_loc)
1339
1351
  end
1340
1352
 
1341
- # def deconstruct: () -> Array[nil | Node]
1353
+ # def deconstruct: () -> Array[Node?]
1342
1354
  alias deconstruct child_nodes
1343
1355
 
1344
1356
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, value: Prism::node?, operator_loc: Location }
@@ -1416,7 +1428,7 @@ module Prism
1416
1428
  visitor.visit_back_reference_read_node(self)
1417
1429
  end
1418
1430
 
1419
- # def child_nodes: () -> Array[nil | Node]
1431
+ # def child_nodes: () -> Array[Node?]
1420
1432
  def child_nodes
1421
1433
  []
1422
1434
  end
@@ -1436,7 +1448,7 @@ module Prism
1436
1448
  BackReferenceReadNode.new(source, node_id, location, flags, name)
1437
1449
  end
1438
1450
 
1439
- # def deconstruct: () -> Array[nil | Node]
1451
+ # def deconstruct: () -> Array[Node?]
1440
1452
  alias deconstruct child_nodes
1441
1453
 
1442
1454
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol }
@@ -1500,7 +1512,7 @@ module Prism
1500
1512
  visitor.visit_begin_node(self)
1501
1513
  end
1502
1514
 
1503
- # def child_nodes: () -> Array[nil | Node]
1515
+ # def child_nodes: () -> Array[Node?]
1504
1516
  def child_nodes
1505
1517
  [statements, rescue_clause, else_clause, ensure_clause]
1506
1518
  end
@@ -1525,7 +1537,7 @@ module Prism
1525
1537
  BeginNode.new(source, node_id, location, flags, begin_keyword_loc, statements, rescue_clause, else_clause, ensure_clause, end_keyword_loc)
1526
1538
  end
1527
1539
 
1528
- # def deconstruct: () -> Array[nil | Node]
1540
+ # def deconstruct: () -> Array[Node?]
1529
1541
  alias deconstruct child_nodes
1530
1542
 
1531
1543
  # 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,7 +1671,7 @@ module Prism
1659
1671
  visitor.visit_block_argument_node(self)
1660
1672
  end
1661
1673
 
1662
- # def child_nodes: () -> Array[nil | Node]
1674
+ # def child_nodes: () -> Array[Node?]
1663
1675
  def child_nodes
1664
1676
  [expression]
1665
1677
  end
@@ -1681,7 +1693,7 @@ module Prism
1681
1693
  BlockArgumentNode.new(source, node_id, location, flags, expression, operator_loc)
1682
1694
  end
1683
1695
 
1684
- # def deconstruct: () -> Array[nil | Node]
1696
+ # def deconstruct: () -> Array[Node?]
1685
1697
  alias deconstruct child_nodes
1686
1698
 
1687
1699
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, expression: Prism::node?, operator_loc: Location }
@@ -1759,7 +1771,7 @@ module Prism
1759
1771
  visitor.visit_block_local_variable_node(self)
1760
1772
  end
1761
1773
 
1762
- # def child_nodes: () -> Array[nil | Node]
1774
+ # def child_nodes: () -> Array[Node?]
1763
1775
  def child_nodes
1764
1776
  []
1765
1777
  end
@@ -1779,7 +1791,7 @@ module Prism
1779
1791
  BlockLocalVariableNode.new(source, node_id, location, flags, name)
1780
1792
  end
1781
1793
 
1782
- # def deconstruct: () -> Array[nil | Node]
1794
+ # def deconstruct: () -> Array[Node?]
1783
1795
  alias deconstruct child_nodes
1784
1796
 
1785
1797
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol }
@@ -1845,7 +1857,7 @@ module Prism
1845
1857
  visitor.visit_block_node(self)
1846
1858
  end
1847
1859
 
1848
- # def child_nodes: () -> Array[nil | Node]
1860
+ # def child_nodes: () -> Array[Node?]
1849
1861
  def child_nodes
1850
1862
  [parameters, body]
1851
1863
  end
@@ -1868,7 +1880,7 @@ module Prism
1868
1880
  BlockNode.new(source, node_id, location, flags, locals, parameters, body, opening_loc, closing_loc)
1869
1881
  end
1870
1882
 
1871
- # def deconstruct: () -> Array[nil | Node]
1883
+ # def deconstruct: () -> Array[Node?]
1872
1884
  alias deconstruct child_nodes
1873
1885
 
1874
1886
  # 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,7 +2002,7 @@ module Prism
1990
2002
  visitor.visit_block_parameter_node(self)
1991
2003
  end
1992
2004
 
1993
- # def child_nodes: () -> Array[nil | Node]
2005
+ # def child_nodes: () -> Array[Node?]
1994
2006
  def child_nodes
1995
2007
  []
1996
2008
  end
@@ -2010,7 +2022,7 @@ module Prism
2010
2022
  BlockParameterNode.new(source, node_id, location, flags, name, name_loc, operator_loc)
2011
2023
  end
2012
2024
 
2013
- # def deconstruct: () -> Array[nil | Node]
2025
+ # def deconstruct: () -> Array[Node?]
2014
2026
  alias deconstruct child_nodes
2015
2027
 
2016
2028
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol?, name_loc: Location?, operator_loc: Location }
@@ -2126,7 +2138,7 @@ module Prism
2126
2138
  visitor.visit_block_parameters_node(self)
2127
2139
  end
2128
2140
 
2129
- # def child_nodes: () -> Array[nil | Node]
2141
+ # def child_nodes: () -> Array[Node?]
2130
2142
  def child_nodes
2131
2143
  [parameters, *locals]
2132
2144
  end
@@ -2149,7 +2161,7 @@ module Prism
2149
2161
  BlockParametersNode.new(source, node_id, location, flags, parameters, locals, opening_loc, closing_loc)
2150
2162
  end
2151
2163
 
2152
- # def deconstruct: () -> Array[nil | Node]
2164
+ # def deconstruct: () -> Array[Node?]
2153
2165
  alias deconstruct child_nodes
2154
2166
 
2155
2167
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, parameters: ParametersNode?, locals: Array[BlockLocalVariableNode], opening_loc: Location?, closing_loc: Location? }
@@ -2286,7 +2298,7 @@ module Prism
2286
2298
  visitor.visit_break_node(self)
2287
2299
  end
2288
2300
 
2289
- # def child_nodes: () -> Array[nil | Node]
2301
+ # def child_nodes: () -> Array[Node?]
2290
2302
  def child_nodes
2291
2303
  [arguments]
2292
2304
  end
@@ -2308,7 +2320,7 @@ module Prism
2308
2320
  BreakNode.new(source, node_id, location, flags, arguments, keyword_loc)
2309
2321
  end
2310
2322
 
2311
- # def deconstruct: () -> Array[nil | Node]
2323
+ # def deconstruct: () -> Array[Node?]
2312
2324
  alias deconstruct child_nodes
2313
2325
 
2314
2326
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, arguments: ArgumentsNode?, keyword_loc: Location }
@@ -2392,7 +2404,7 @@ module Prism
2392
2404
  visitor.visit_call_and_write_node(self)
2393
2405
  end
2394
2406
 
2395
- # def child_nodes: () -> Array[nil | Node]
2407
+ # def child_nodes: () -> Array[Node?]
2396
2408
  def child_nodes
2397
2409
  [receiver, value]
2398
2410
  end
@@ -2415,7 +2427,7 @@ module Prism
2415
2427
  CallAndWriteNode.new(source, node_id, location, flags, receiver, call_operator_loc, message_loc, read_name, write_name, operator_loc, value)
2416
2428
  end
2417
2429
 
2418
- # def deconstruct: () -> Array[nil | Node]
2430
+ # def deconstruct: () -> Array[Node?]
2419
2431
  alias deconstruct child_nodes
2420
2432
 
2421
2433
  # 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 }
@@ -2613,7 +2625,7 @@ module Prism
2613
2625
  visitor.visit_call_node(self)
2614
2626
  end
2615
2627
 
2616
- # def child_nodes: () -> Array[nil | Node]
2628
+ # def child_nodes: () -> Array[Node?]
2617
2629
  def child_nodes
2618
2630
  [receiver, arguments, block]
2619
2631
  end
@@ -2637,7 +2649,7 @@ module Prism
2637
2649
  CallNode.new(source, node_id, location, flags, receiver, call_operator_loc, name, message_loc, opening_loc, arguments, closing_loc, block)
2638
2650
  end
2639
2651
 
2640
- # def deconstruct: () -> Array[nil | Node]
2652
+ # def deconstruct: () -> Array[Node?]
2641
2653
  alias deconstruct child_nodes
2642
2654
 
2643
2655
  # 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 }
@@ -2862,7 +2874,7 @@ module Prism
2862
2874
  visitor.visit_call_operator_write_node(self)
2863
2875
  end
2864
2876
 
2865
- # def child_nodes: () -> Array[nil | Node]
2877
+ # def child_nodes: () -> Array[Node?]
2866
2878
  def child_nodes
2867
2879
  [receiver, value]
2868
2880
  end
@@ -2885,7 +2897,7 @@ module Prism
2885
2897
  CallOperatorWriteNode.new(source, node_id, location, flags, receiver, call_operator_loc, message_loc, read_name, write_name, binary_operator, binary_operator_loc, value)
2886
2898
  end
2887
2899
 
2888
- # def deconstruct: () -> Array[nil | Node]
2900
+ # def deconstruct: () -> Array[Node?]
2889
2901
  alias deconstruct child_nodes
2890
2902
 
2891
2903
  # 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,7 +3081,7 @@ module Prism
3069
3081
  visitor.visit_call_or_write_node(self)
3070
3082
  end
3071
3083
 
3072
- # def child_nodes: () -> Array[nil | Node]
3084
+ # def child_nodes: () -> Array[Node?]
3073
3085
  def child_nodes
3074
3086
  [receiver, value]
3075
3087
  end
@@ -3092,7 +3104,7 @@ module Prism
3092
3104
  CallOrWriteNode.new(source, node_id, location, flags, receiver, call_operator_loc, message_loc, read_name, write_name, operator_loc, value)
3093
3105
  end
3094
3106
 
3095
- # def deconstruct: () -> Array[nil | Node]
3107
+ # def deconstruct: () -> Array[Node?]
3096
3108
  alias deconstruct child_nodes
3097
3109
 
3098
3110
  # 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,7 +3291,7 @@ module Prism
3279
3291
  visitor.visit_call_target_node(self)
3280
3292
  end
3281
3293
 
3282
- # def child_nodes: () -> Array[nil | Node]
3294
+ # def child_nodes: () -> Array[Node?]
3283
3295
  def child_nodes
3284
3296
  [receiver]
3285
3297
  end
@@ -3299,7 +3311,7 @@ module Prism
3299
3311
  CallTargetNode.new(source, node_id, location, flags, receiver, call_operator_loc, name, message_loc)
3300
3312
  end
3301
3313
 
3302
- # def deconstruct: () -> Array[nil | Node]
3314
+ # def deconstruct: () -> Array[Node?]
3303
3315
  alias deconstruct child_nodes
3304
3316
 
3305
3317
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, receiver: Prism::node, call_operator_loc: Location, name: Symbol, message_loc: Location }
@@ -3429,7 +3441,7 @@ module Prism
3429
3441
  visitor.visit_capture_pattern_node(self)
3430
3442
  end
3431
3443
 
3432
- # def child_nodes: () -> Array[nil | Node]
3444
+ # def child_nodes: () -> Array[Node?]
3433
3445
  def child_nodes
3434
3446
  [value, target]
3435
3447
  end
@@ -3449,7 +3461,7 @@ module Prism
3449
3461
  CapturePatternNode.new(source, node_id, location, flags, value, target, operator_loc)
3450
3462
  end
3451
3463
 
3452
- # def deconstruct: () -> Array[nil | Node]
3464
+ # def deconstruct: () -> Array[Node?]
3453
3465
  alias deconstruct child_nodes
3454
3466
 
3455
3467
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, value: Prism::node, target: LocalVariableTargetNode, operator_loc: Location }
@@ -3540,7 +3552,7 @@ module Prism
3540
3552
  visitor.visit_case_match_node(self)
3541
3553
  end
3542
3554
 
3543
- # def child_nodes: () -> Array[nil | Node]
3555
+ # def child_nodes: () -> Array[Node?]
3544
3556
  def child_nodes
3545
3557
  [predicate, *conditions, else_clause]
3546
3558
  end
@@ -3564,7 +3576,7 @@ module Prism
3564
3576
  CaseMatchNode.new(source, node_id, location, flags, predicate, conditions, else_clause, case_keyword_loc, end_keyword_loc)
3565
3577
  end
3566
3578
 
3567
- # def deconstruct: () -> Array[nil | Node]
3579
+ # def deconstruct: () -> Array[Node?]
3568
3580
  alias deconstruct child_nodes
3569
3581
 
3570
3582
  # 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,7 +3697,7 @@ module Prism
3685
3697
  visitor.visit_case_node(self)
3686
3698
  end
3687
3699
 
3688
- # def child_nodes: () -> Array[nil | Node]
3700
+ # def child_nodes: () -> Array[Node?]
3689
3701
  def child_nodes
3690
3702
  [predicate, *conditions, else_clause]
3691
3703
  end
@@ -3709,7 +3721,7 @@ module Prism
3709
3721
  CaseNode.new(source, node_id, location, flags, predicate, conditions, else_clause, case_keyword_loc, end_keyword_loc)
3710
3722
  end
3711
3723
 
3712
- # def deconstruct: () -> Array[nil | Node]
3724
+ # def deconstruct: () -> Array[Node?]
3713
3725
  alias deconstruct child_nodes
3714
3726
 
3715
3727
  # 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 }
@@ -3831,7 +3843,7 @@ module Prism
3831
3843
  visitor.visit_class_node(self)
3832
3844
  end
3833
3845
 
3834
- # def child_nodes: () -> Array[nil | Node]
3846
+ # def child_nodes: () -> Array[Node?]
3835
3847
  def child_nodes
3836
3848
  [constant_path, superclass, body]
3837
3849
  end
@@ -3855,7 +3867,7 @@ module Prism
3855
3867
  ClassNode.new(source, node_id, location, flags, locals, class_keyword_loc, constant_path, inheritance_operator_loc, superclass, body, end_keyword_loc, name)
3856
3868
  end
3857
3869
 
3858
- # def deconstruct: () -> Array[nil | Node]
3870
+ # def deconstruct: () -> Array[Node?]
3859
3871
  alias deconstruct child_nodes
3860
3872
 
3861
3873
  # 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 +3878,10 @@ module Prism
3866
3878
  # attr_reader locals: Array[Symbol]
3867
3879
  attr_reader :locals
3868
3880
 
3869
- # attr_reader class_keyword_loc: Location
3881
+ # Represents the location of the `class` keyword.
3882
+ #
3883
+ # class Foo end
3884
+ # ^^^^^
3870
3885
  def class_keyword_loc
3871
3886
  location = @class_keyword_loc
3872
3887
  return location if location.is_a?(Location)
@@ -3882,7 +3897,10 @@ module Prism
3882
3897
  # attr_reader constant_path: ConstantReadNode | ConstantPathNode | CallNode
3883
3898
  attr_reader :constant_path
3884
3899
 
3885
- # attr_reader inheritance_operator_loc: Location?
3900
+ # Represents the location of the `<` operator.
3901
+ #
3902
+ # class Foo < Bar
3903
+ # ^
3886
3904
  def inheritance_operator_loc
3887
3905
  location = @inheritance_operator_loc
3888
3906
  case location
@@ -3901,13 +3919,23 @@ module Prism
3901
3919
  repository.enter(node_id, :inheritance_operator_loc) unless @inheritance_operator_loc.nil?
3902
3920
  end
3903
3921
 
3904
- # attr_reader superclass: Prism::node?
3922
+ # Represents the superclass of the class.
3923
+ #
3924
+ # class Foo < Bar
3925
+ # ^^^
3905
3926
  attr_reader :superclass
3906
3927
 
3907
- # attr_reader body: StatementsNode | BeginNode | nil
3928
+ # Represents the body of the class.
3929
+ #
3930
+ # class Foo
3931
+ # foo
3932
+ # ^^^
3908
3933
  attr_reader :body
3909
3934
 
3910
- # attr_reader end_keyword_loc: Location
3935
+ # Represents the location of the `end` keyword.
3936
+ #
3937
+ # class Foo end
3938
+ # ^^^
3911
3939
  def end_keyword_loc
3912
3940
  location = @end_keyword_loc
3913
3941
  return location if location.is_a?(Location)
@@ -3920,7 +3948,9 @@ module Prism
3920
3948
  repository.enter(node_id, :end_keyword_loc)
3921
3949
  end
3922
3950
 
3923
- # attr_reader name: Symbol
3951
+ # The name of the class.
3952
+ #
3953
+ # class Foo end # name `:Foo`
3924
3954
  attr_reader :name
3925
3955
 
3926
3956
  # def class_keyword: () -> String
@@ -3991,7 +4021,7 @@ module Prism
3991
4021
  visitor.visit_class_variable_and_write_node(self)
3992
4022
  end
3993
4023
 
3994
- # def child_nodes: () -> Array[nil | Node]
4024
+ # def child_nodes: () -> Array[Node?]
3995
4025
  def child_nodes
3996
4026
  [value]
3997
4027
  end
@@ -4011,7 +4041,7 @@ module Prism
4011
4041
  ClassVariableAndWriteNode.new(source, node_id, location, flags, name, name_loc, operator_loc, value)
4012
4042
  end
4013
4043
 
4014
- # def deconstruct: () -> Array[nil | Node]
4044
+ # def deconstruct: () -> Array[Node?]
4015
4045
  alias deconstruct child_nodes
4016
4046
 
4017
4047
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol, name_loc: Location, operator_loc: Location, value: Prism::node }
@@ -4117,7 +4147,7 @@ module Prism
4117
4147
  visitor.visit_class_variable_operator_write_node(self)
4118
4148
  end
4119
4149
 
4120
- # def child_nodes: () -> Array[nil | Node]
4150
+ # def child_nodes: () -> Array[Node?]
4121
4151
  def child_nodes
4122
4152
  [value]
4123
4153
  end
@@ -4137,7 +4167,7 @@ module Prism
4137
4167
  ClassVariableOperatorWriteNode.new(source, node_id, location, flags, name, name_loc, binary_operator_loc, value, binary_operator)
4138
4168
  end
4139
4169
 
4140
- # def deconstruct: () -> Array[nil | Node]
4170
+ # def deconstruct: () -> Array[Node?]
4141
4171
  alias deconstruct child_nodes
4142
4172
 
4143
4173
  # 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,7 +4259,7 @@ module Prism
4229
4259
  visitor.visit_class_variable_or_write_node(self)
4230
4260
  end
4231
4261
 
4232
- # def child_nodes: () -> Array[nil | Node]
4262
+ # def child_nodes: () -> Array[Node?]
4233
4263
  def child_nodes
4234
4264
  [value]
4235
4265
  end
@@ -4249,7 +4279,7 @@ module Prism
4249
4279
  ClassVariableOrWriteNode.new(source, node_id, location, flags, name, name_loc, operator_loc, value)
4250
4280
  end
4251
4281
 
4252
- # def deconstruct: () -> Array[nil | Node]
4282
+ # def deconstruct: () -> Array[Node?]
4253
4283
  alias deconstruct child_nodes
4254
4284
 
4255
4285
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol, name_loc: Location, operator_loc: Location, value: Prism::node }
@@ -4339,7 +4369,7 @@ module Prism
4339
4369
  visitor.visit_class_variable_read_node(self)
4340
4370
  end
4341
4371
 
4342
- # def child_nodes: () -> Array[nil | Node]
4372
+ # def child_nodes: () -> Array[Node?]
4343
4373
  def child_nodes
4344
4374
  []
4345
4375
  end
@@ -4359,7 +4389,7 @@ module Prism
4359
4389
  ClassVariableReadNode.new(source, node_id, location, flags, name)
4360
4390
  end
4361
4391
 
4362
- # def deconstruct: () -> Array[nil | Node]
4392
+ # def deconstruct: () -> Array[Node?]
4363
4393
  alias deconstruct child_nodes
4364
4394
 
4365
4395
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol }
@@ -4416,7 +4446,7 @@ module Prism
4416
4446
  visitor.visit_class_variable_target_node(self)
4417
4447
  end
4418
4448
 
4419
- # def child_nodes: () -> Array[nil | Node]
4449
+ # def child_nodes: () -> Array[Node?]
4420
4450
  def child_nodes
4421
4451
  []
4422
4452
  end
@@ -4436,7 +4466,7 @@ module Prism
4436
4466
  ClassVariableTargetNode.new(source, node_id, location, flags, name)
4437
4467
  end
4438
4468
 
4439
- # def deconstruct: () -> Array[nil | Node]
4469
+ # def deconstruct: () -> Array[Node?]
4440
4470
  alias deconstruct child_nodes
4441
4471
 
4442
4472
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol }
@@ -4492,7 +4522,7 @@ module Prism
4492
4522
  visitor.visit_class_variable_write_node(self)
4493
4523
  end
4494
4524
 
4495
- # def child_nodes: () -> Array[nil | Node]
4525
+ # def child_nodes: () -> Array[Node?]
4496
4526
  def child_nodes
4497
4527
  [value]
4498
4528
  end
@@ -4512,7 +4542,7 @@ module Prism
4512
4542
  ClassVariableWriteNode.new(source, node_id, location, flags, name, name_loc, value, operator_loc)
4513
4543
  end
4514
4544
 
4515
- # def deconstruct: () -> Array[nil | Node]
4545
+ # def deconstruct: () -> Array[Node?]
4516
4546
  alias deconstruct child_nodes
4517
4547
 
4518
4548
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol, name_loc: Location, value: Prism::node, operator_loc: Location }
@@ -4621,7 +4651,7 @@ module Prism
4621
4651
  visitor.visit_constant_and_write_node(self)
4622
4652
  end
4623
4653
 
4624
- # def child_nodes: () -> Array[nil | Node]
4654
+ # def child_nodes: () -> Array[Node?]
4625
4655
  def child_nodes
4626
4656
  [value]
4627
4657
  end
@@ -4641,7 +4671,7 @@ module Prism
4641
4671
  ConstantAndWriteNode.new(source, node_id, location, flags, name, name_loc, operator_loc, value)
4642
4672
  end
4643
4673
 
4644
- # def deconstruct: () -> Array[nil | Node]
4674
+ # def deconstruct: () -> Array[Node?]
4645
4675
  alias deconstruct child_nodes
4646
4676
 
4647
4677
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol, name_loc: Location, operator_loc: Location, value: Prism::node }
@@ -4735,7 +4765,7 @@ module Prism
4735
4765
  visitor.visit_constant_operator_write_node(self)
4736
4766
  end
4737
4767
 
4738
- # def child_nodes: () -> Array[nil | Node]
4768
+ # def child_nodes: () -> Array[Node?]
4739
4769
  def child_nodes
4740
4770
  [value]
4741
4771
  end
@@ -4755,7 +4785,7 @@ module Prism
4755
4785
  ConstantOperatorWriteNode.new(source, node_id, location, flags, name, name_loc, binary_operator_loc, value, binary_operator)
4756
4786
  end
4757
4787
 
4758
- # def deconstruct: () -> Array[nil | Node]
4788
+ # def deconstruct: () -> Array[Node?]
4759
4789
  alias deconstruct child_nodes
4760
4790
 
4761
4791
  # 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,7 +4877,7 @@ module Prism
4847
4877
  visitor.visit_constant_or_write_node(self)
4848
4878
  end
4849
4879
 
4850
- # def child_nodes: () -> Array[nil | Node]
4880
+ # def child_nodes: () -> Array[Node?]
4851
4881
  def child_nodes
4852
4882
  [value]
4853
4883
  end
@@ -4867,7 +4897,7 @@ module Prism
4867
4897
  ConstantOrWriteNode.new(source, node_id, location, flags, name, name_loc, operator_loc, value)
4868
4898
  end
4869
4899
 
4870
- # def deconstruct: () -> Array[nil | Node]
4900
+ # def deconstruct: () -> Array[Node?]
4871
4901
  alias deconstruct child_nodes
4872
4902
 
4873
4903
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol, name_loc: Location, operator_loc: Location, value: Prism::node }
@@ -4959,7 +4989,7 @@ module Prism
4959
4989
  visitor.visit_constant_path_and_write_node(self)
4960
4990
  end
4961
4991
 
4962
- # def child_nodes: () -> Array[nil | Node]
4992
+ # def child_nodes: () -> Array[Node?]
4963
4993
  def child_nodes
4964
4994
  [target, value]
4965
4995
  end
@@ -4979,7 +5009,7 @@ module Prism
4979
5009
  ConstantPathAndWriteNode.new(source, node_id, location, flags, target, operator_loc, value)
4980
5010
  end
4981
5011
 
4982
- # def deconstruct: () -> Array[nil | Node]
5012
+ # def deconstruct: () -> Array[Node?]
4983
5013
  alias deconstruct child_nodes
4984
5014
 
4985
5015
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, target: ConstantPathNode, operator_loc: Location, value: Prism::node }
@@ -5058,7 +5088,7 @@ module Prism
5058
5088
  visitor.visit_constant_path_node(self)
5059
5089
  end
5060
5090
 
5061
- # def child_nodes: () -> Array[nil | Node]
5091
+ # def child_nodes: () -> Array[Node?]
5062
5092
  def child_nodes
5063
5093
  [parent]
5064
5094
  end
@@ -5080,7 +5110,7 @@ module Prism
5080
5110
  ConstantPathNode.new(source, node_id, location, flags, parent, name, delimiter_loc, name_loc)
5081
5111
  end
5082
5112
 
5083
- # def deconstruct: () -> Array[nil | Node]
5113
+ # def deconstruct: () -> Array[Node?]
5084
5114
  alias deconstruct child_nodes
5085
5115
 
5086
5116
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, parent: Prism::node?, name: Symbol?, delimiter_loc: Location, name_loc: Location }
@@ -5194,7 +5224,7 @@ module Prism
5194
5224
  visitor.visit_constant_path_operator_write_node(self)
5195
5225
  end
5196
5226
 
5197
- # def child_nodes: () -> Array[nil | Node]
5227
+ # def child_nodes: () -> Array[Node?]
5198
5228
  def child_nodes
5199
5229
  [target, value]
5200
5230
  end
@@ -5214,7 +5244,7 @@ module Prism
5214
5244
  ConstantPathOperatorWriteNode.new(source, node_id, location, flags, target, binary_operator_loc, value, binary_operator)
5215
5245
  end
5216
5246
 
5217
- # def deconstruct: () -> Array[nil | Node]
5247
+ # def deconstruct: () -> Array[Node?]
5218
5248
  alias deconstruct child_nodes
5219
5249
 
5220
5250
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, target: ConstantPathNode, binary_operator_loc: Location, value: Prism::node, binary_operator: Symbol }
@@ -5291,7 +5321,7 @@ module Prism
5291
5321
  visitor.visit_constant_path_or_write_node(self)
5292
5322
  end
5293
5323
 
5294
- # def child_nodes: () -> Array[nil | Node]
5324
+ # def child_nodes: () -> Array[Node?]
5295
5325
  def child_nodes
5296
5326
  [target, value]
5297
5327
  end
@@ -5311,7 +5341,7 @@ module Prism
5311
5341
  ConstantPathOrWriteNode.new(source, node_id, location, flags, target, operator_loc, value)
5312
5342
  end
5313
5343
 
5314
- # def deconstruct: () -> Array[nil | Node]
5344
+ # def deconstruct: () -> Array[Node?]
5315
5345
  alias deconstruct child_nodes
5316
5346
 
5317
5347
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, target: ConstantPathNode, operator_loc: Location, value: Prism::node }
@@ -5390,7 +5420,7 @@ module Prism
5390
5420
  visitor.visit_constant_path_target_node(self)
5391
5421
  end
5392
5422
 
5393
- # def child_nodes: () -> Array[nil | Node]
5423
+ # def child_nodes: () -> Array[Node?]
5394
5424
  def child_nodes
5395
5425
  [parent]
5396
5426
  end
@@ -5412,7 +5442,7 @@ module Prism
5412
5442
  ConstantPathTargetNode.new(source, node_id, location, flags, parent, name, delimiter_loc, name_loc)
5413
5443
  end
5414
5444
 
5415
- # def deconstruct: () -> Array[nil | Node]
5445
+ # def deconstruct: () -> Array[Node?]
5416
5446
  alias deconstruct child_nodes
5417
5447
 
5418
5448
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, parent: Prism::node?, name: Symbol?, delimiter_loc: Location, name_loc: Location }
@@ -5510,7 +5540,7 @@ module Prism
5510
5540
  visitor.visit_constant_path_write_node(self)
5511
5541
  end
5512
5542
 
5513
- # def child_nodes: () -> Array[nil | Node]
5543
+ # def child_nodes: () -> Array[Node?]
5514
5544
  def child_nodes
5515
5545
  [target, value]
5516
5546
  end
@@ -5530,7 +5560,7 @@ module Prism
5530
5560
  ConstantPathWriteNode.new(source, node_id, location, flags, target, operator_loc, value)
5531
5561
  end
5532
5562
 
5533
- # def deconstruct: () -> Array[nil | Node]
5563
+ # def deconstruct: () -> Array[Node?]
5534
5564
  alias deconstruct child_nodes
5535
5565
 
5536
5566
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, target: ConstantPathNode, operator_loc: Location, value: Prism::node }
@@ -5618,7 +5648,7 @@ module Prism
5618
5648
  visitor.visit_constant_read_node(self)
5619
5649
  end
5620
5650
 
5621
- # def child_nodes: () -> Array[nil | Node]
5651
+ # def child_nodes: () -> Array[Node?]
5622
5652
  def child_nodes
5623
5653
  []
5624
5654
  end
@@ -5638,7 +5668,7 @@ module Prism
5638
5668
  ConstantReadNode.new(source, node_id, location, flags, name)
5639
5669
  end
5640
5670
 
5641
- # def deconstruct: () -> Array[nil | Node]
5671
+ # def deconstruct: () -> Array[Node?]
5642
5672
  alias deconstruct child_nodes
5643
5673
 
5644
5674
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol }
@@ -5695,7 +5725,7 @@ module Prism
5695
5725
  visitor.visit_constant_target_node(self)
5696
5726
  end
5697
5727
 
5698
- # def child_nodes: () -> Array[nil | Node]
5728
+ # def child_nodes: () -> Array[Node?]
5699
5729
  def child_nodes
5700
5730
  []
5701
5731
  end
@@ -5715,7 +5745,7 @@ module Prism
5715
5745
  ConstantTargetNode.new(source, node_id, location, flags, name)
5716
5746
  end
5717
5747
 
5718
- # def deconstruct: () -> Array[nil | Node]
5748
+ # def deconstruct: () -> Array[Node?]
5719
5749
  alias deconstruct child_nodes
5720
5750
 
5721
5751
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol }
@@ -5771,7 +5801,7 @@ module Prism
5771
5801
  visitor.visit_constant_write_node(self)
5772
5802
  end
5773
5803
 
5774
- # def child_nodes: () -> Array[nil | Node]
5804
+ # def child_nodes: () -> Array[Node?]
5775
5805
  def child_nodes
5776
5806
  [value]
5777
5807
  end
@@ -5791,7 +5821,7 @@ module Prism
5791
5821
  ConstantWriteNode.new(source, node_id, location, flags, name, name_loc, value, operator_loc)
5792
5822
  end
5793
5823
 
5794
- # def deconstruct: () -> Array[nil | Node]
5824
+ # def deconstruct: () -> Array[Node?]
5795
5825
  alias deconstruct child_nodes
5796
5826
 
5797
5827
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol, name_loc: Location, value: Prism::node, operator_loc: Location }
@@ -5909,7 +5939,7 @@ module Prism
5909
5939
  visitor.visit_def_node(self)
5910
5940
  end
5911
5941
 
5912
- # def child_nodes: () -> Array[nil | Node]
5942
+ # def child_nodes: () -> Array[Node?]
5913
5943
  def child_nodes
5914
5944
  [receiver, parameters, body]
5915
5945
  end
@@ -5933,7 +5963,7 @@ module Prism
5933
5963
  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
5964
  end
5935
5965
 
5936
- # def deconstruct: () -> Array[nil | Node]
5966
+ # def deconstruct: () -> Array[Node?]
5937
5967
  alias deconstruct child_nodes
5938
5968
 
5939
5969
  # 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,7 +6194,7 @@ module Prism
6164
6194
  visitor.visit_defined_node(self)
6165
6195
  end
6166
6196
 
6167
- # def child_nodes: () -> Array[nil | Node]
6197
+ # def child_nodes: () -> Array[Node?]
6168
6198
  def child_nodes
6169
6199
  [value]
6170
6200
  end
@@ -6184,7 +6214,7 @@ module Prism
6184
6214
  DefinedNode.new(source, node_id, location, flags, lparen_loc, value, rparen_loc, keyword_loc)
6185
6215
  end
6186
6216
 
6187
- # def deconstruct: () -> Array[nil | Node]
6217
+ # def deconstruct: () -> Array[Node?]
6188
6218
  alias deconstruct child_nodes
6189
6219
 
6190
6220
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, lparen_loc: Location?, value: Prism::node, rparen_loc: Location?, keyword_loc: Location }
@@ -6308,7 +6338,7 @@ module Prism
6308
6338
  visitor.visit_else_node(self)
6309
6339
  end
6310
6340
 
6311
- # def child_nodes: () -> Array[nil | Node]
6341
+ # def child_nodes: () -> Array[Node?]
6312
6342
  def child_nodes
6313
6343
  [statements]
6314
6344
  end
@@ -6330,7 +6360,7 @@ module Prism
6330
6360
  ElseNode.new(source, node_id, location, flags, else_keyword_loc, statements, end_keyword_loc)
6331
6361
  end
6332
6362
 
6333
- # def deconstruct: () -> Array[nil | Node]
6363
+ # def deconstruct: () -> Array[Node?]
6334
6364
  alias deconstruct child_nodes
6335
6365
 
6336
6366
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, else_keyword_loc: Location, statements: StatementsNode?, end_keyword_loc: Location? }
@@ -6429,7 +6459,7 @@ module Prism
6429
6459
  visitor.visit_embedded_statements_node(self)
6430
6460
  end
6431
6461
 
6432
- # def child_nodes: () -> Array[nil | Node]
6462
+ # def child_nodes: () -> Array[Node?]
6433
6463
  def child_nodes
6434
6464
  [statements]
6435
6465
  end
@@ -6451,7 +6481,7 @@ module Prism
6451
6481
  EmbeddedStatementsNode.new(source, node_id, location, flags, opening_loc, statements, closing_loc)
6452
6482
  end
6453
6483
 
6454
- # def deconstruct: () -> Array[nil | Node]
6484
+ # def deconstruct: () -> Array[Node?]
6455
6485
  alias deconstruct child_nodes
6456
6486
 
6457
6487
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, opening_loc: Location, statements: StatementsNode?, closing_loc: Location }
@@ -6543,7 +6573,7 @@ module Prism
6543
6573
  visitor.visit_embedded_variable_node(self)
6544
6574
  end
6545
6575
 
6546
- # def child_nodes: () -> Array[nil | Node]
6576
+ # def child_nodes: () -> Array[Node?]
6547
6577
  def child_nodes
6548
6578
  [variable]
6549
6579
  end
@@ -6563,7 +6593,7 @@ module Prism
6563
6593
  EmbeddedVariableNode.new(source, node_id, location, flags, operator_loc, variable)
6564
6594
  end
6565
6595
 
6566
- # def deconstruct: () -> Array[nil | Node]
6596
+ # def deconstruct: () -> Array[Node?]
6567
6597
  alias deconstruct child_nodes
6568
6598
 
6569
6599
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, operator_loc: Location, variable: InstanceVariableReadNode | ClassVariableReadNode | GlobalVariableReadNode | BackReferenceReadNode | NumberedReferenceReadNode }
@@ -6641,7 +6671,7 @@ module Prism
6641
6671
  visitor.visit_ensure_node(self)
6642
6672
  end
6643
6673
 
6644
- # def child_nodes: () -> Array[nil | Node]
6674
+ # def child_nodes: () -> Array[Node?]
6645
6675
  def child_nodes
6646
6676
  [statements]
6647
6677
  end
@@ -6663,7 +6693,7 @@ module Prism
6663
6693
  EnsureNode.new(source, node_id, location, flags, ensure_keyword_loc, statements, end_keyword_loc)
6664
6694
  end
6665
6695
 
6666
- # def deconstruct: () -> Array[nil | Node]
6696
+ # def deconstruct: () -> Array[Node?]
6667
6697
  alias deconstruct child_nodes
6668
6698
 
6669
6699
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, ensure_keyword_loc: Location, statements: StatementsNode?, end_keyword_loc: Location }
@@ -6753,7 +6783,7 @@ module Prism
6753
6783
  visitor.visit_false_node(self)
6754
6784
  end
6755
6785
 
6756
- # def child_nodes: () -> Array[nil | Node]
6786
+ # def child_nodes: () -> Array[Node?]
6757
6787
  def child_nodes
6758
6788
  []
6759
6789
  end
@@ -6773,7 +6803,7 @@ module Prism
6773
6803
  FalseNode.new(source, node_id, location, flags)
6774
6804
  end
6775
6805
 
6776
- # def deconstruct: () -> Array[nil | Node]
6806
+ # def deconstruct: () -> Array[Node?]
6777
6807
  alias deconstruct child_nodes
6778
6808
 
6779
6809
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location }
@@ -6813,6 +6843,9 @@ module Prism
6813
6843
  #
6814
6844
  # foo in Foo(*bar, baz, *qux)
6815
6845
  # ^^^^^^^^^^^^^^^^^^^^
6846
+ #
6847
+ # foo => *bar, baz, *qux
6848
+ # ^^^^^^^^^^^^^^^
6816
6849
  class FindPatternNode < Node
6817
6850
  # Initialize a new FindPatternNode node.
6818
6851
  def initialize(source, node_id, location, flags, constant, left, requireds, right, opening_loc, closing_loc)
@@ -6833,7 +6866,7 @@ module Prism
6833
6866
  visitor.visit_find_pattern_node(self)
6834
6867
  end
6835
6868
 
6836
- # def child_nodes: () -> Array[nil | Node]
6869
+ # def child_nodes: () -> Array[Node?]
6837
6870
  def child_nodes
6838
6871
  [constant, left, *requireds, right]
6839
6872
  end
@@ -6853,32 +6886,59 @@ module Prism
6853
6886
  [*constant, left, *requireds, right, *opening_loc, *closing_loc] #: Array[Prism::node | Location]
6854
6887
  end
6855
6888
 
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
6889
+ # 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
6890
  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
6891
  FindPatternNode.new(source, node_id, location, flags, constant, left, requireds, right, opening_loc, closing_loc)
6859
6892
  end
6860
6893
 
6861
- # def deconstruct: () -> Array[nil | Node]
6894
+ # def deconstruct: () -> Array[Node?]
6862
6895
  alias deconstruct child_nodes
6863
6896
 
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? }
6897
+ # 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
6898
  def deconstruct_keys(keys)
6866
6899
  { node_id: node_id, location: location, constant: constant, left: left, requireds: requireds, right: right, opening_loc: opening_loc, closing_loc: closing_loc }
6867
6900
  end
6868
6901
 
6869
- # attr_reader constant: ConstantReadNode | ConstantPathNode | nil
6902
+ # Represents the optional constant preceding the pattern
6903
+ #
6904
+ # foo in Foo(*bar, baz, *qux)
6905
+ # ^^^
6870
6906
  attr_reader :constant
6871
6907
 
6872
- # attr_reader left: SplatNode
6908
+ # Represents the first wildcard node in the pattern.
6909
+ #
6910
+ # foo in *bar, baz, *qux
6911
+ # ^^^^
6912
+ #
6913
+ # foo in Foo(*bar, baz, *qux)
6914
+ # ^^^^
6873
6915
  attr_reader :left
6874
6916
 
6875
- # attr_reader requireds: Array[Prism::node]
6917
+ # Represents the nodes in between the wildcards.
6918
+ #
6919
+ # foo in *bar, baz, *qux
6920
+ # ^^^
6921
+ #
6922
+ # foo in Foo(*bar, baz, 1, *qux)
6923
+ # ^^^^^^
6876
6924
  attr_reader :requireds
6877
6925
 
6878
- # attr_reader right: SplatNode | MissingNode
6926
+ # Represents the second wildcard node in the pattern.
6927
+ #
6928
+ # foo in *bar, baz, *qux
6929
+ # ^^^^
6930
+ #
6931
+ # foo in Foo(*bar, baz, *qux)
6932
+ # ^^^^
6879
6933
  attr_reader :right
6880
6934
 
6881
- # attr_reader opening_loc: Location?
6935
+ # The location of the opening brace.
6936
+ #
6937
+ # foo in [*bar, baz, *qux]
6938
+ # ^
6939
+ #
6940
+ # foo in Foo(*bar, baz, *qux)
6941
+ # ^
6882
6942
  def opening_loc
6883
6943
  location = @opening_loc
6884
6944
  case location
@@ -6897,7 +6957,13 @@ module Prism
6897
6957
  repository.enter(node_id, :opening_loc) unless @opening_loc.nil?
6898
6958
  end
6899
6959
 
6900
- # attr_reader closing_loc: Location?
6960
+ # The location of the closing brace.
6961
+ #
6962
+ # foo in [*bar, baz, *qux]
6963
+ # ^
6964
+ #
6965
+ # foo in Foo(*bar, baz, *qux)
6966
+ # ^
6901
6967
  def closing_loc
6902
6968
  location = @closing_loc
6903
6969
  case location
@@ -6976,7 +7042,7 @@ module Prism
6976
7042
  visitor.visit_flip_flop_node(self)
6977
7043
  end
6978
7044
 
6979
- # def child_nodes: () -> Array[nil | Node]
7045
+ # def child_nodes: () -> Array[Node?]
6980
7046
  def child_nodes
6981
7047
  [left, right]
6982
7048
  end
@@ -6999,7 +7065,7 @@ module Prism
6999
7065
  FlipFlopNode.new(source, node_id, location, flags, left, right, operator_loc)
7000
7066
  end
7001
7067
 
7002
- # def deconstruct: () -> Array[nil | Node]
7068
+ # def deconstruct: () -> Array[Node?]
7003
7069
  alias deconstruct child_nodes
7004
7070
 
7005
7071
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, left: Prism::node?, right: Prism::node?, operator_loc: Location }
@@ -7081,7 +7147,7 @@ module Prism
7081
7147
  visitor.visit_float_node(self)
7082
7148
  end
7083
7149
 
7084
- # def child_nodes: () -> Array[nil | Node]
7150
+ # def child_nodes: () -> Array[Node?]
7085
7151
  def child_nodes
7086
7152
  []
7087
7153
  end
@@ -7101,7 +7167,7 @@ module Prism
7101
7167
  FloatNode.new(source, node_id, location, flags, value)
7102
7168
  end
7103
7169
 
7104
- # def deconstruct: () -> Array[nil | Node]
7170
+ # def deconstruct: () -> Array[Node?]
7105
7171
  alias deconstruct child_nodes
7106
7172
 
7107
7173
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, value: Float }
@@ -7160,7 +7226,7 @@ module Prism
7160
7226
  visitor.visit_for_node(self)
7161
7227
  end
7162
7228
 
7163
- # def child_nodes: () -> Array[nil | Node]
7229
+ # def child_nodes: () -> Array[Node?]
7164
7230
  def child_nodes
7165
7231
  [index, collection, statements]
7166
7232
  end
@@ -7184,7 +7250,7 @@ module Prism
7184
7250
  ForNode.new(source, node_id, location, flags, index, collection, statements, for_keyword_loc, in_keyword_loc, do_keyword_loc, end_keyword_loc)
7185
7251
  end
7186
7252
 
7187
- # def deconstruct: () -> Array[nil | Node]
7253
+ # def deconstruct: () -> Array[Node?]
7188
7254
  alias deconstruct child_nodes
7189
7255
 
7190
7256
  # 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,7 +7417,7 @@ module Prism
7351
7417
  visitor.visit_forwarding_arguments_node(self)
7352
7418
  end
7353
7419
 
7354
- # def child_nodes: () -> Array[nil | Node]
7420
+ # def child_nodes: () -> Array[Node?]
7355
7421
  def child_nodes
7356
7422
  []
7357
7423
  end
@@ -7371,7 +7437,7 @@ module Prism
7371
7437
  ForwardingArgumentsNode.new(source, node_id, location, flags)
7372
7438
  end
7373
7439
 
7374
- # def deconstruct: () -> Array[nil | Node]
7440
+ # def deconstruct: () -> Array[Node?]
7375
7441
  alias deconstruct child_nodes
7376
7442
 
7377
7443
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location }
@@ -7420,7 +7486,7 @@ module Prism
7420
7486
  visitor.visit_forwarding_parameter_node(self)
7421
7487
  end
7422
7488
 
7423
- # def child_nodes: () -> Array[nil | Node]
7489
+ # def child_nodes: () -> Array[Node?]
7424
7490
  def child_nodes
7425
7491
  []
7426
7492
  end
@@ -7440,7 +7506,7 @@ module Prism
7440
7506
  ForwardingParameterNode.new(source, node_id, location, flags)
7441
7507
  end
7442
7508
 
7443
- # def deconstruct: () -> Array[nil | Node]
7509
+ # def deconstruct: () -> Array[Node?]
7444
7510
  alias deconstruct child_nodes
7445
7511
 
7446
7512
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location }
@@ -7489,7 +7555,7 @@ module Prism
7489
7555
  visitor.visit_forwarding_super_node(self)
7490
7556
  end
7491
7557
 
7492
- # def child_nodes: () -> Array[nil | Node]
7558
+ # def child_nodes: () -> Array[Node?]
7493
7559
  def child_nodes
7494
7560
  [block]
7495
7561
  end
@@ -7511,7 +7577,7 @@ module Prism
7511
7577
  ForwardingSuperNode.new(source, node_id, location, flags, block)
7512
7578
  end
7513
7579
 
7514
- # def deconstruct: () -> Array[nil | Node]
7580
+ # def deconstruct: () -> Array[Node?]
7515
7581
  alias deconstruct child_nodes
7516
7582
 
7517
7583
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, block: BlockNode? }
@@ -7567,7 +7633,7 @@ module Prism
7567
7633
  visitor.visit_global_variable_and_write_node(self)
7568
7634
  end
7569
7635
 
7570
- # def child_nodes: () -> Array[nil | Node]
7636
+ # def child_nodes: () -> Array[Node?]
7571
7637
  def child_nodes
7572
7638
  [value]
7573
7639
  end
@@ -7587,7 +7653,7 @@ module Prism
7587
7653
  GlobalVariableAndWriteNode.new(source, node_id, location, flags, name, name_loc, operator_loc, value)
7588
7654
  end
7589
7655
 
7590
- # def deconstruct: () -> Array[nil | Node]
7656
+ # def deconstruct: () -> Array[Node?]
7591
7657
  alias deconstruct child_nodes
7592
7658
 
7593
7659
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol, name_loc: Location, operator_loc: Location, value: Prism::node }
@@ -7681,7 +7747,7 @@ module Prism
7681
7747
  visitor.visit_global_variable_operator_write_node(self)
7682
7748
  end
7683
7749
 
7684
- # def child_nodes: () -> Array[nil | Node]
7750
+ # def child_nodes: () -> Array[Node?]
7685
7751
  def child_nodes
7686
7752
  [value]
7687
7753
  end
@@ -7701,7 +7767,7 @@ module Prism
7701
7767
  GlobalVariableOperatorWriteNode.new(source, node_id, location, flags, name, name_loc, binary_operator_loc, value, binary_operator)
7702
7768
  end
7703
7769
 
7704
- # def deconstruct: () -> Array[nil | Node]
7770
+ # def deconstruct: () -> Array[Node?]
7705
7771
  alias deconstruct child_nodes
7706
7772
 
7707
7773
  # 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,7 +7859,7 @@ module Prism
7793
7859
  visitor.visit_global_variable_or_write_node(self)
7794
7860
  end
7795
7861
 
7796
- # def child_nodes: () -> Array[nil | Node]
7862
+ # def child_nodes: () -> Array[Node?]
7797
7863
  def child_nodes
7798
7864
  [value]
7799
7865
  end
@@ -7813,7 +7879,7 @@ module Prism
7813
7879
  GlobalVariableOrWriteNode.new(source, node_id, location, flags, name, name_loc, operator_loc, value)
7814
7880
  end
7815
7881
 
7816
- # def deconstruct: () -> Array[nil | Node]
7882
+ # def deconstruct: () -> Array[Node?]
7817
7883
  alias deconstruct child_nodes
7818
7884
 
7819
7885
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol, name_loc: Location, operator_loc: Location, value: Prism::node }
@@ -7903,7 +7969,7 @@ module Prism
7903
7969
  visitor.visit_global_variable_read_node(self)
7904
7970
  end
7905
7971
 
7906
- # def child_nodes: () -> Array[nil | Node]
7972
+ # def child_nodes: () -> Array[Node?]
7907
7973
  def child_nodes
7908
7974
  []
7909
7975
  end
@@ -7923,7 +7989,7 @@ module Prism
7923
7989
  GlobalVariableReadNode.new(source, node_id, location, flags, name)
7924
7990
  end
7925
7991
 
7926
- # def deconstruct: () -> Array[nil | Node]
7992
+ # def deconstruct: () -> Array[Node?]
7927
7993
  alias deconstruct child_nodes
7928
7994
 
7929
7995
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol }
@@ -7980,7 +8046,7 @@ module Prism
7980
8046
  visitor.visit_global_variable_target_node(self)
7981
8047
  end
7982
8048
 
7983
- # def child_nodes: () -> Array[nil | Node]
8049
+ # def child_nodes: () -> Array[Node?]
7984
8050
  def child_nodes
7985
8051
  []
7986
8052
  end
@@ -8000,7 +8066,7 @@ module Prism
8000
8066
  GlobalVariableTargetNode.new(source, node_id, location, flags, name)
8001
8067
  end
8002
8068
 
8003
- # def deconstruct: () -> Array[nil | Node]
8069
+ # def deconstruct: () -> Array[Node?]
8004
8070
  alias deconstruct child_nodes
8005
8071
 
8006
8072
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol }
@@ -8056,7 +8122,7 @@ module Prism
8056
8122
  visitor.visit_global_variable_write_node(self)
8057
8123
  end
8058
8124
 
8059
- # def child_nodes: () -> Array[nil | Node]
8125
+ # def child_nodes: () -> Array[Node?]
8060
8126
  def child_nodes
8061
8127
  [value]
8062
8128
  end
@@ -8076,7 +8142,7 @@ module Prism
8076
8142
  GlobalVariableWriteNode.new(source, node_id, location, flags, name, name_loc, value, operator_loc)
8077
8143
  end
8078
8144
 
8079
- # def deconstruct: () -> Array[nil | Node]
8145
+ # def deconstruct: () -> Array[Node?]
8080
8146
  alias deconstruct child_nodes
8081
8147
 
8082
8148
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol, name_loc: Location, value: Prism::node, operator_loc: Location }
@@ -8184,7 +8250,7 @@ module Prism
8184
8250
  visitor.visit_hash_node(self)
8185
8251
  end
8186
8252
 
8187
- # def child_nodes: () -> Array[nil | Node]
8253
+ # def child_nodes: () -> Array[Node?]
8188
8254
  def child_nodes
8189
8255
  [*elements]
8190
8256
  end
@@ -8204,7 +8270,7 @@ module Prism
8204
8270
  HashNode.new(source, node_id, location, flags, opening_loc, elements, closing_loc)
8205
8271
  end
8206
8272
 
8207
- # def deconstruct: () -> Array[nil | Node]
8273
+ # def deconstruct: () -> Array[Node?]
8208
8274
  alias deconstruct child_nodes
8209
8275
 
8210
8276
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, opening_loc: Location, elements: Array[AssocNode | AssocSplatNode], closing_loc: Location }
@@ -8296,6 +8362,12 @@ module Prism
8296
8362
  #
8297
8363
  # foo => { a: 1, b: 2, **c }
8298
8364
  # ^^^^^^^^^^^^^^^^^^^
8365
+ #
8366
+ # foo => Bar[a: 1, b: 2]
8367
+ # ^^^^^^^^^^^^^^^
8368
+ #
8369
+ # foo in { a: 1, b: 2 }
8370
+ # ^^^^^^^^^^^^^^
8299
8371
  class HashPatternNode < Node
8300
8372
  # Initialize a new HashPatternNode node.
8301
8373
  def initialize(source, node_id, location, flags, constant, elements, rest, opening_loc, closing_loc)
@@ -8315,7 +8387,7 @@ module Prism
8315
8387
  visitor.visit_hash_pattern_node(self)
8316
8388
  end
8317
8389
 
8318
- # def child_nodes: () -> Array[nil | Node]
8390
+ # def child_nodes: () -> Array[Node?]
8319
8391
  def child_nodes
8320
8392
  [constant, *elements, rest]
8321
8393
  end
@@ -8334,29 +8406,53 @@ module Prism
8334
8406
  [*constant, *elements, *rest, *opening_loc, *closing_loc] #: Array[Prism::node | Location]
8335
8407
  end
8336
8408
 
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
8409
+ # 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
8410
  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
8411
  HashPatternNode.new(source, node_id, location, flags, constant, elements, rest, opening_loc, closing_loc)
8340
8412
  end
8341
8413
 
8342
- # def deconstruct: () -> Array[nil | Node]
8414
+ # def deconstruct: () -> Array[Node?]
8343
8415
  alias deconstruct child_nodes
8344
8416
 
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? }
8417
+ # 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
8418
  def deconstruct_keys(keys)
8347
8419
  { node_id: node_id, location: location, constant: constant, elements: elements, rest: rest, opening_loc: opening_loc, closing_loc: closing_loc }
8348
8420
  end
8349
8421
 
8350
- # attr_reader constant: ConstantReadNode | ConstantPathNode | nil
8422
+ # Represents the optional constant preceding the Hash.
8423
+ #
8424
+ # foo => Bar[a: 1, b: 2]
8425
+ # ^^^
8426
+ #
8427
+ # foo => Bar::Baz[a: 1, b: 2]
8428
+ # ^^^^^^^^
8351
8429
  attr_reader :constant
8352
8430
 
8353
- # attr_reader elements: Array[AssocNode]
8431
+ # Represents the explicit named hash keys and values.
8432
+ #
8433
+ # foo => { a: 1, b:, ** }
8434
+ # ^^^^^^^^
8354
8435
  attr_reader :elements
8355
8436
 
8356
- # attr_reader rest: AssocSplatNode | NoKeywordsParameterNode | nil
8437
+ # 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`.
8438
+ #
8439
+ # foo => { a: 1, b:, **c }
8440
+ # ^^^
8441
+ #
8442
+ # foo => { a: 1, b:, ** }
8443
+ # ^^
8444
+ #
8445
+ # foo => { a: 1, b:, **nil }
8446
+ # ^^^^^
8357
8447
  attr_reader :rest
8358
8448
 
8359
- # attr_reader opening_loc: Location?
8449
+ # The location of the opening brace.
8450
+ #
8451
+ # foo => { a: 1 }
8452
+ # ^
8453
+ #
8454
+ # foo => Bar[a: 1]
8455
+ # ^
8360
8456
  def opening_loc
8361
8457
  location = @opening_loc
8362
8458
  case location
@@ -8375,7 +8471,13 @@ module Prism
8375
8471
  repository.enter(node_id, :opening_loc) unless @opening_loc.nil?
8376
8472
  end
8377
8473
 
8378
- # attr_reader closing_loc: Location?
8474
+ # The location of the closing brace.
8475
+ #
8476
+ # foo => { a: 1 }
8477
+ # ^
8478
+ #
8479
+ # foo => Bar[a: 1]
8480
+ # ^
8379
8481
  def closing_loc
8380
8482
  location = @closing_loc
8381
8483
  case location
@@ -8462,7 +8564,7 @@ module Prism
8462
8564
  visitor.visit_if_node(self)
8463
8565
  end
8464
8566
 
8465
- # def child_nodes: () -> Array[nil | Node]
8567
+ # def child_nodes: () -> Array[Node?]
8466
8568
  def child_nodes
8467
8569
  [predicate, statements, subsequent]
8468
8570
  end
@@ -8486,7 +8588,7 @@ module Prism
8486
8588
  IfNode.new(source, node_id, location, flags, if_keyword_loc, predicate, then_keyword_loc, statements, subsequent, end_keyword_loc)
8487
8589
  end
8488
8590
 
8489
- # def deconstruct: () -> Array[nil | Node]
8591
+ # def deconstruct: () -> Array[Node?]
8490
8592
  alias deconstruct child_nodes
8491
8593
 
8492
8594
  # 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,7 +8770,7 @@ module Prism
8668
8770
  visitor.visit_imaginary_node(self)
8669
8771
  end
8670
8772
 
8671
- # def child_nodes: () -> Array[nil | Node]
8773
+ # def child_nodes: () -> Array[Node?]
8672
8774
  def child_nodes
8673
8775
  [numeric]
8674
8776
  end
@@ -8688,7 +8790,7 @@ module Prism
8688
8790
  ImaginaryNode.new(source, node_id, location, flags, numeric)
8689
8791
  end
8690
8792
 
8691
- # def deconstruct: () -> Array[nil | Node]
8793
+ # def deconstruct: () -> Array[Node?]
8692
8794
  alias deconstruct child_nodes
8693
8795
 
8694
8796
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, numeric: FloatNode | IntegerNode | RationalNode }
@@ -8747,7 +8849,7 @@ module Prism
8747
8849
  visitor.visit_implicit_node(self)
8748
8850
  end
8749
8851
 
8750
- # def child_nodes: () -> Array[nil | Node]
8852
+ # def child_nodes: () -> Array[Node?]
8751
8853
  def child_nodes
8752
8854
  [value]
8753
8855
  end
@@ -8767,7 +8869,7 @@ module Prism
8767
8869
  ImplicitNode.new(source, node_id, location, flags, value)
8768
8870
  end
8769
8871
 
8770
- # def deconstruct: () -> Array[nil | Node]
8872
+ # def deconstruct: () -> Array[Node?]
8771
8873
  alias deconstruct child_nodes
8772
8874
 
8773
8875
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, value: LocalVariableReadNode | CallNode | ConstantReadNode | LocalVariableTargetNode }
@@ -8828,7 +8930,7 @@ module Prism
8828
8930
  visitor.visit_implicit_rest_node(self)
8829
8931
  end
8830
8932
 
8831
- # def child_nodes: () -> Array[nil | Node]
8933
+ # def child_nodes: () -> Array[Node?]
8832
8934
  def child_nodes
8833
8935
  []
8834
8936
  end
@@ -8848,7 +8950,7 @@ module Prism
8848
8950
  ImplicitRestNode.new(source, node_id, location, flags)
8849
8951
  end
8850
8952
 
8851
- # def deconstruct: () -> Array[nil | Node]
8953
+ # def deconstruct: () -> Array[Node?]
8852
8954
  alias deconstruct child_nodes
8853
8955
 
8854
8956
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location }
@@ -8900,7 +9002,7 @@ module Prism
8900
9002
  visitor.visit_in_node(self)
8901
9003
  end
8902
9004
 
8903
- # def child_nodes: () -> Array[nil | Node]
9005
+ # def child_nodes: () -> Array[Node?]
8904
9006
  def child_nodes
8905
9007
  [pattern, statements]
8906
9008
  end
@@ -8923,7 +9025,7 @@ module Prism
8923
9025
  InNode.new(source, node_id, location, flags, pattern, statements, in_loc, then_loc)
8924
9026
  end
8925
9027
 
8926
- # def deconstruct: () -> Array[nil | Node]
9028
+ # def deconstruct: () -> Array[Node?]
8927
9029
  alias deconstruct child_nodes
8928
9030
 
8929
9031
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, pattern: Prism::node, statements: StatementsNode?, in_loc: Location, then_loc: Location? }
@@ -9031,7 +9133,7 @@ module Prism
9031
9133
  visitor.visit_index_and_write_node(self)
9032
9134
  end
9033
9135
 
9034
- # def child_nodes: () -> Array[nil | Node]
9136
+ # def child_nodes: () -> Array[Node?]
9035
9137
  def child_nodes
9036
9138
  [receiver, arguments, block, value]
9037
9139
  end
@@ -9056,7 +9158,7 @@ module Prism
9056
9158
  IndexAndWriteNode.new(source, node_id, location, flags, receiver, call_operator_loc, opening_loc, arguments, closing_loc, block, operator_loc, value)
9057
9159
  end
9058
9160
 
9059
- # def deconstruct: () -> Array[nil | Node]
9161
+ # def deconstruct: () -> Array[Node?]
9060
9162
  alias deconstruct child_nodes
9061
9163
 
9062
9164
  # 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,7 +9334,7 @@ module Prism
9232
9334
  visitor.visit_index_operator_write_node(self)
9233
9335
  end
9234
9336
 
9235
- # def child_nodes: () -> Array[nil | Node]
9337
+ # def child_nodes: () -> Array[Node?]
9236
9338
  def child_nodes
9237
9339
  [receiver, arguments, block, value]
9238
9340
  end
@@ -9257,7 +9359,7 @@ module Prism
9257
9359
  IndexOperatorWriteNode.new(source, node_id, location, flags, receiver, call_operator_loc, opening_loc, arguments, closing_loc, block, binary_operator, binary_operator_loc, value)
9258
9360
  end
9259
9361
 
9260
- # def deconstruct: () -> Array[nil | Node]
9362
+ # def deconstruct: () -> Array[Node?]
9261
9363
  alias deconstruct child_nodes
9262
9364
 
9263
9365
  # 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,7 +9533,7 @@ module Prism
9431
9533
  visitor.visit_index_or_write_node(self)
9432
9534
  end
9433
9535
 
9434
- # def child_nodes: () -> Array[nil | Node]
9536
+ # def child_nodes: () -> Array[Node?]
9435
9537
  def child_nodes
9436
9538
  [receiver, arguments, block, value]
9437
9539
  end
@@ -9456,7 +9558,7 @@ module Prism
9456
9558
  IndexOrWriteNode.new(source, node_id, location, flags, receiver, call_operator_loc, opening_loc, arguments, closing_loc, block, operator_loc, value)
9457
9559
  end
9458
9560
 
9459
- # def deconstruct: () -> Array[nil | Node]
9561
+ # def deconstruct: () -> Array[Node?]
9460
9562
  alias deconstruct child_nodes
9461
9563
 
9462
9564
  # 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,7 +9738,7 @@ module Prism
9636
9738
  visitor.visit_index_target_node(self)
9637
9739
  end
9638
9740
 
9639
- # def child_nodes: () -> Array[nil | Node]
9741
+ # def child_nodes: () -> Array[Node?]
9640
9742
  def child_nodes
9641
9743
  [receiver, arguments, block]
9642
9744
  end
@@ -9660,7 +9762,7 @@ module Prism
9660
9762
  IndexTargetNode.new(source, node_id, location, flags, receiver, opening_loc, arguments, closing_loc, block)
9661
9763
  end
9662
9764
 
9663
- # def deconstruct: () -> Array[nil | Node]
9765
+ # def deconstruct: () -> Array[Node?]
9664
9766
  alias deconstruct child_nodes
9665
9767
 
9666
9768
  # 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,7 +9885,7 @@ module Prism
9783
9885
  visitor.visit_instance_variable_and_write_node(self)
9784
9886
  end
9785
9887
 
9786
- # def child_nodes: () -> Array[nil | Node]
9888
+ # def child_nodes: () -> Array[Node?]
9787
9889
  def child_nodes
9788
9890
  [value]
9789
9891
  end
@@ -9803,7 +9905,7 @@ module Prism
9803
9905
  InstanceVariableAndWriteNode.new(source, node_id, location, flags, name, name_loc, operator_loc, value)
9804
9906
  end
9805
9907
 
9806
- # def deconstruct: () -> Array[nil | Node]
9908
+ # def deconstruct: () -> Array[Node?]
9807
9909
  alias deconstruct child_nodes
9808
9910
 
9809
9911
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol, name_loc: Location, operator_loc: Location, value: Prism::node }
@@ -9897,7 +9999,7 @@ module Prism
9897
9999
  visitor.visit_instance_variable_operator_write_node(self)
9898
10000
  end
9899
10001
 
9900
- # def child_nodes: () -> Array[nil | Node]
10002
+ # def child_nodes: () -> Array[Node?]
9901
10003
  def child_nodes
9902
10004
  [value]
9903
10005
  end
@@ -9917,7 +10019,7 @@ module Prism
9917
10019
  InstanceVariableOperatorWriteNode.new(source, node_id, location, flags, name, name_loc, binary_operator_loc, value, binary_operator)
9918
10020
  end
9919
10021
 
9920
- # def deconstruct: () -> Array[nil | Node]
10022
+ # def deconstruct: () -> Array[Node?]
9921
10023
  alias deconstruct child_nodes
9922
10024
 
9923
10025
  # 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,7 +10111,7 @@ module Prism
10009
10111
  visitor.visit_instance_variable_or_write_node(self)
10010
10112
  end
10011
10113
 
10012
- # def child_nodes: () -> Array[nil | Node]
10114
+ # def child_nodes: () -> Array[Node?]
10013
10115
  def child_nodes
10014
10116
  [value]
10015
10117
  end
@@ -10029,7 +10131,7 @@ module Prism
10029
10131
  InstanceVariableOrWriteNode.new(source, node_id, location, flags, name, name_loc, operator_loc, value)
10030
10132
  end
10031
10133
 
10032
- # def deconstruct: () -> Array[nil | Node]
10134
+ # def deconstruct: () -> Array[Node?]
10033
10135
  alias deconstruct child_nodes
10034
10136
 
10035
10137
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol, name_loc: Location, operator_loc: Location, value: Prism::node }
@@ -10119,7 +10221,7 @@ module Prism
10119
10221
  visitor.visit_instance_variable_read_node(self)
10120
10222
  end
10121
10223
 
10122
- # def child_nodes: () -> Array[nil | Node]
10224
+ # def child_nodes: () -> Array[Node?]
10123
10225
  def child_nodes
10124
10226
  []
10125
10227
  end
@@ -10139,7 +10241,7 @@ module Prism
10139
10241
  InstanceVariableReadNode.new(source, node_id, location, flags, name)
10140
10242
  end
10141
10243
 
10142
- # def deconstruct: () -> Array[nil | Node]
10244
+ # def deconstruct: () -> Array[Node?]
10143
10245
  alias deconstruct child_nodes
10144
10246
 
10145
10247
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol }
@@ -10196,7 +10298,7 @@ module Prism
10196
10298
  visitor.visit_instance_variable_target_node(self)
10197
10299
  end
10198
10300
 
10199
- # def child_nodes: () -> Array[nil | Node]
10301
+ # def child_nodes: () -> Array[Node?]
10200
10302
  def child_nodes
10201
10303
  []
10202
10304
  end
@@ -10216,7 +10318,7 @@ module Prism
10216
10318
  InstanceVariableTargetNode.new(source, node_id, location, flags, name)
10217
10319
  end
10218
10320
 
10219
- # def deconstruct: () -> Array[nil | Node]
10321
+ # def deconstruct: () -> Array[Node?]
10220
10322
  alias deconstruct child_nodes
10221
10323
 
10222
10324
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol }
@@ -10272,7 +10374,7 @@ module Prism
10272
10374
  visitor.visit_instance_variable_write_node(self)
10273
10375
  end
10274
10376
 
10275
- # def child_nodes: () -> Array[nil | Node]
10377
+ # def child_nodes: () -> Array[Node?]
10276
10378
  def child_nodes
10277
10379
  [value]
10278
10380
  end
@@ -10292,7 +10394,7 @@ module Prism
10292
10394
  InstanceVariableWriteNode.new(source, node_id, location, flags, name, name_loc, value, operator_loc)
10293
10395
  end
10294
10396
 
10295
- # def deconstruct: () -> Array[nil | Node]
10397
+ # def deconstruct: () -> Array[Node?]
10296
10398
  alias deconstruct child_nodes
10297
10399
 
10298
10400
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol, name_loc: Location, value: Prism::node, operator_loc: Location }
@@ -10398,7 +10500,7 @@ module Prism
10398
10500
  visitor.visit_integer_node(self)
10399
10501
  end
10400
10502
 
10401
- # def child_nodes: () -> Array[nil | Node]
10503
+ # def child_nodes: () -> Array[Node?]
10402
10504
  def child_nodes
10403
10505
  []
10404
10506
  end
@@ -10418,7 +10520,7 @@ module Prism
10418
10520
  IntegerNode.new(source, node_id, location, flags, value)
10419
10521
  end
10420
10522
 
10421
- # def deconstruct: () -> Array[nil | Node]
10523
+ # def deconstruct: () -> Array[Node?]
10422
10524
  alias deconstruct child_nodes
10423
10525
 
10424
10526
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, value: Integer }
@@ -10494,7 +10596,7 @@ module Prism
10494
10596
  visitor.visit_interpolated_match_last_line_node(self)
10495
10597
  end
10496
10598
 
10497
- # def child_nodes: () -> Array[nil | Node]
10599
+ # def child_nodes: () -> Array[Node?]
10498
10600
  def child_nodes
10499
10601
  [*parts]
10500
10602
  end
@@ -10514,7 +10616,7 @@ module Prism
10514
10616
  InterpolatedMatchLastLineNode.new(source, node_id, location, flags, opening_loc, parts, closing_loc)
10515
10617
  end
10516
10618
 
10517
- # def deconstruct: () -> Array[nil | Node]
10619
+ # def deconstruct: () -> Array[Node?]
10518
10620
  alias deconstruct child_nodes
10519
10621
 
10520
10622
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, opening_loc: Location, parts: Array[StringNode | EmbeddedStatementsNode | EmbeddedVariableNode], closing_loc: Location }
@@ -10664,7 +10766,7 @@ module Prism
10664
10766
  visitor.visit_interpolated_regular_expression_node(self)
10665
10767
  end
10666
10768
 
10667
- # def child_nodes: () -> Array[nil | Node]
10769
+ # def child_nodes: () -> Array[Node?]
10668
10770
  def child_nodes
10669
10771
  [*parts]
10670
10772
  end
@@ -10684,7 +10786,7 @@ module Prism
10684
10786
  InterpolatedRegularExpressionNode.new(source, node_id, location, flags, opening_loc, parts, closing_loc)
10685
10787
  end
10686
10788
 
10687
- # def deconstruct: () -> Array[nil | Node]
10789
+ # def deconstruct: () -> Array[Node?]
10688
10790
  alias deconstruct child_nodes
10689
10791
 
10690
10792
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, opening_loc: Location, parts: Array[StringNode | EmbeddedStatementsNode | EmbeddedVariableNode], closing_loc: Location }
@@ -10834,7 +10936,7 @@ module Prism
10834
10936
  visitor.visit_interpolated_string_node(self)
10835
10937
  end
10836
10938
 
10837
- # def child_nodes: () -> Array[nil | Node]
10939
+ # def child_nodes: () -> Array[Node?]
10838
10940
  def child_nodes
10839
10941
  [*parts]
10840
10942
  end
@@ -10854,7 +10956,7 @@ module Prism
10854
10956
  InterpolatedStringNode.new(source, node_id, location, flags, opening_loc, parts, closing_loc)
10855
10957
  end
10856
10958
 
10857
- # def deconstruct: () -> Array[nil | Node]
10959
+ # def deconstruct: () -> Array[Node?]
10858
10960
  alias deconstruct child_nodes
10859
10961
 
10860
10962
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, opening_loc: Location?, parts: Array[StringNode | EmbeddedStatementsNode | EmbeddedVariableNode | InterpolatedStringNode | XStringNode], closing_loc: Location? }
@@ -10971,7 +11073,7 @@ module Prism
10971
11073
  visitor.visit_interpolated_symbol_node(self)
10972
11074
  end
10973
11075
 
10974
- # def child_nodes: () -> Array[nil | Node]
11076
+ # def child_nodes: () -> Array[Node?]
10975
11077
  def child_nodes
10976
11078
  [*parts]
10977
11079
  end
@@ -10991,7 +11093,7 @@ module Prism
10991
11093
  InterpolatedSymbolNode.new(source, node_id, location, flags, opening_loc, parts, closing_loc)
10992
11094
  end
10993
11095
 
10994
- # def deconstruct: () -> Array[nil | Node]
11096
+ # def deconstruct: () -> Array[Node?]
10995
11097
  alias deconstruct child_nodes
10996
11098
 
10997
11099
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, opening_loc: Location?, parts: Array[StringNode | EmbeddedStatementsNode | EmbeddedVariableNode], closing_loc: Location? }
@@ -11097,7 +11199,7 @@ module Prism
11097
11199
  visitor.visit_interpolated_x_string_node(self)
11098
11200
  end
11099
11201
 
11100
- # def child_nodes: () -> Array[nil | Node]
11202
+ # def child_nodes: () -> Array[Node?]
11101
11203
  def child_nodes
11102
11204
  [*parts]
11103
11205
  end
@@ -11117,7 +11219,7 @@ module Prism
11117
11219
  InterpolatedXStringNode.new(source, node_id, location, flags, opening_loc, parts, closing_loc)
11118
11220
  end
11119
11221
 
11120
- # def deconstruct: () -> Array[nil | Node]
11222
+ # def deconstruct: () -> Array[Node?]
11121
11223
  alias deconstruct child_nodes
11122
11224
 
11123
11225
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, opening_loc: Location, parts: Array[StringNode | EmbeddedStatementsNode | EmbeddedVariableNode], closing_loc: Location }
@@ -11208,7 +11310,7 @@ module Prism
11208
11310
  visitor.visit_it_local_variable_read_node(self)
11209
11311
  end
11210
11312
 
11211
- # def child_nodes: () -> Array[nil | Node]
11313
+ # def child_nodes: () -> Array[Node?]
11212
11314
  def child_nodes
11213
11315
  []
11214
11316
  end
@@ -11228,7 +11330,7 @@ module Prism
11228
11330
  ItLocalVariableReadNode.new(source, node_id, location, flags)
11229
11331
  end
11230
11332
 
11231
- # def deconstruct: () -> Array[nil | Node]
11333
+ # def deconstruct: () -> Array[Node?]
11232
11334
  alias deconstruct child_nodes
11233
11335
 
11234
11336
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location }
@@ -11276,7 +11378,7 @@ module Prism
11276
11378
  visitor.visit_it_parameters_node(self)
11277
11379
  end
11278
11380
 
11279
- # def child_nodes: () -> Array[nil | Node]
11381
+ # def child_nodes: () -> Array[Node?]
11280
11382
  def child_nodes
11281
11383
  []
11282
11384
  end
@@ -11296,7 +11398,7 @@ module Prism
11296
11398
  ItParametersNode.new(source, node_id, location, flags)
11297
11399
  end
11298
11400
 
11299
- # def deconstruct: () -> Array[nil | Node]
11401
+ # def deconstruct: () -> Array[Node?]
11300
11402
  alias deconstruct child_nodes
11301
11403
 
11302
11404
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location }
@@ -11345,7 +11447,7 @@ module Prism
11345
11447
  visitor.visit_keyword_hash_node(self)
11346
11448
  end
11347
11449
 
11348
- # def child_nodes: () -> Array[nil | Node]
11450
+ # def child_nodes: () -> Array[Node?]
11349
11451
  def child_nodes
11350
11452
  [*elements]
11351
11453
  end
@@ -11365,7 +11467,7 @@ module Prism
11365
11467
  KeywordHashNode.new(source, node_id, location, flags, elements)
11366
11468
  end
11367
11469
 
11368
- # def deconstruct: () -> Array[nil | Node]
11470
+ # def deconstruct: () -> Array[Node?]
11369
11471
  alias deconstruct child_nodes
11370
11472
 
11371
11473
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, elements: Array[AssocNode | AssocSplatNode] }
@@ -11428,7 +11530,7 @@ module Prism
11428
11530
  visitor.visit_keyword_rest_parameter_node(self)
11429
11531
  end
11430
11532
 
11431
- # def child_nodes: () -> Array[nil | Node]
11533
+ # def child_nodes: () -> Array[Node?]
11432
11534
  def child_nodes
11433
11535
  []
11434
11536
  end
@@ -11448,7 +11550,7 @@ module Prism
11448
11550
  KeywordRestParameterNode.new(source, node_id, location, flags, name, name_loc, operator_loc)
11449
11551
  end
11450
11552
 
11451
- # def deconstruct: () -> Array[nil | Node]
11553
+ # def deconstruct: () -> Array[Node?]
11452
11554
  alias deconstruct child_nodes
11453
11555
 
11454
11556
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol?, name_loc: Location?, operator_loc: Location }
@@ -11551,7 +11653,7 @@ module Prism
11551
11653
  visitor.visit_lambda_node(self)
11552
11654
  end
11553
11655
 
11554
- # def child_nodes: () -> Array[nil | Node]
11656
+ # def child_nodes: () -> Array[Node?]
11555
11657
  def child_nodes
11556
11658
  [parameters, body]
11557
11659
  end
@@ -11574,7 +11676,7 @@ module Prism
11574
11676
  LambdaNode.new(source, node_id, location, flags, locals, operator_loc, opening_loc, closing_loc, parameters, body)
11575
11677
  end
11576
11678
 
11577
- # def deconstruct: () -> Array[nil | Node]
11679
+ # def deconstruct: () -> Array[Node?]
11578
11680
  alias deconstruct child_nodes
11579
11681
 
11580
11682
  # 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,7 +11799,7 @@ module Prism
11697
11799
  visitor.visit_local_variable_and_write_node(self)
11698
11800
  end
11699
11801
 
11700
- # def child_nodes: () -> Array[nil | Node]
11802
+ # def child_nodes: () -> Array[Node?]
11701
11803
  def child_nodes
11702
11804
  [value]
11703
11805
  end
@@ -11717,7 +11819,7 @@ module Prism
11717
11819
  LocalVariableAndWriteNode.new(source, node_id, location, flags, name_loc, operator_loc, value, name, depth)
11718
11820
  end
11719
11821
 
11720
- # def deconstruct: () -> Array[nil | Node]
11822
+ # def deconstruct: () -> Array[Node?]
11721
11823
  alias deconstruct child_nodes
11722
11824
 
11723
11825
  # 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,7 +11918,7 @@ module Prism
11816
11918
  visitor.visit_local_variable_operator_write_node(self)
11817
11919
  end
11818
11920
 
11819
- # def child_nodes: () -> Array[nil | Node]
11921
+ # def child_nodes: () -> Array[Node?]
11820
11922
  def child_nodes
11821
11923
  [value]
11822
11924
  end
@@ -11836,7 +11938,7 @@ module Prism
11836
11938
  LocalVariableOperatorWriteNode.new(source, node_id, location, flags, name_loc, binary_operator_loc, value, name, binary_operator, depth)
11837
11939
  end
11838
11940
 
11839
- # def deconstruct: () -> Array[nil | Node]
11941
+ # def deconstruct: () -> Array[Node?]
11840
11942
  alias deconstruct child_nodes
11841
11943
 
11842
11944
  # 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,7 +12035,7 @@ module Prism
11933
12035
  visitor.visit_local_variable_or_write_node(self)
11934
12036
  end
11935
12037
 
11936
- # def child_nodes: () -> Array[nil | Node]
12038
+ # def child_nodes: () -> Array[Node?]
11937
12039
  def child_nodes
11938
12040
  [value]
11939
12041
  end
@@ -11953,7 +12055,7 @@ module Prism
11953
12055
  LocalVariableOrWriteNode.new(source, node_id, location, flags, name_loc, operator_loc, value, name, depth)
11954
12056
  end
11955
12057
 
11956
- # def deconstruct: () -> Array[nil | Node]
12058
+ # def deconstruct: () -> Array[Node?]
11957
12059
  alias deconstruct child_nodes
11958
12060
 
11959
12061
  # 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,7 +12150,7 @@ module Prism
12048
12150
  visitor.visit_local_variable_read_node(self)
12049
12151
  end
12050
12152
 
12051
- # def child_nodes: () -> Array[nil | Node]
12153
+ # def child_nodes: () -> Array[Node?]
12052
12154
  def child_nodes
12053
12155
  []
12054
12156
  end
@@ -12068,7 +12170,7 @@ module Prism
12068
12170
  LocalVariableReadNode.new(source, node_id, location, flags, name, depth)
12069
12171
  end
12070
12172
 
12071
- # def deconstruct: () -> Array[nil | Node]
12173
+ # def deconstruct: () -> Array[Node?]
12072
12174
  alias deconstruct child_nodes
12073
12175
 
12074
12176
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol, depth: Integer }
@@ -12124,6 +12226,9 @@ module Prism
12124
12226
  #
12125
12227
  # foo, bar = baz
12126
12228
  # ^^^ ^^^
12229
+ #
12230
+ # foo => baz
12231
+ # ^^^
12127
12232
  class LocalVariableTargetNode < Node
12128
12233
  # Initialize a new LocalVariableTargetNode node.
12129
12234
  def initialize(source, node_id, location, flags, name, depth)
@@ -12140,7 +12245,7 @@ module Prism
12140
12245
  visitor.visit_local_variable_target_node(self)
12141
12246
  end
12142
12247
 
12143
- # def child_nodes: () -> Array[nil | Node]
12248
+ # def child_nodes: () -> Array[Node?]
12144
12249
  def child_nodes
12145
12250
  []
12146
12251
  end
@@ -12160,7 +12265,7 @@ module Prism
12160
12265
  LocalVariableTargetNode.new(source, node_id, location, flags, name, depth)
12161
12266
  end
12162
12267
 
12163
- # def deconstruct: () -> Array[nil | Node]
12268
+ # def deconstruct: () -> Array[Node?]
12164
12269
  alias deconstruct child_nodes
12165
12270
 
12166
12271
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol, depth: Integer }
@@ -12221,7 +12326,7 @@ module Prism
12221
12326
  visitor.visit_local_variable_write_node(self)
12222
12327
  end
12223
12328
 
12224
- # def child_nodes: () -> Array[nil | Node]
12329
+ # def child_nodes: () -> Array[Node?]
12225
12330
  def child_nodes
12226
12331
  [value]
12227
12332
  end
@@ -12241,7 +12346,7 @@ module Prism
12241
12346
  LocalVariableWriteNode.new(source, node_id, location, flags, name, depth, name_loc, value, operator_loc)
12242
12347
  end
12243
12348
 
12244
- # def deconstruct: () -> Array[nil | Node]
12349
+ # def deconstruct: () -> Array[Node?]
12245
12350
  alias deconstruct child_nodes
12246
12351
 
12247
12352
  # 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,7 +12469,7 @@ module Prism
12364
12469
  visitor.visit_match_last_line_node(self)
12365
12470
  end
12366
12471
 
12367
- # def child_nodes: () -> Array[nil | Node]
12472
+ # def child_nodes: () -> Array[Node?]
12368
12473
  def child_nodes
12369
12474
  []
12370
12475
  end
@@ -12384,7 +12489,7 @@ module Prism
12384
12489
  MatchLastLineNode.new(source, node_id, location, flags, opening_loc, content_loc, closing_loc, unescaped)
12385
12490
  end
12386
12491
 
12387
- # def deconstruct: () -> Array[nil | Node]
12492
+ # def deconstruct: () -> Array[Node?]
12388
12493
  alias deconstruct child_nodes
12389
12494
 
12390
12495
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, opening_loc: Location, content_loc: Location, closing_loc: Location, unescaped: String }
@@ -12552,7 +12657,7 @@ module Prism
12552
12657
  visitor.visit_match_predicate_node(self)
12553
12658
  end
12554
12659
 
12555
- # def child_nodes: () -> Array[nil | Node]
12660
+ # def child_nodes: () -> Array[Node?]
12556
12661
  def child_nodes
12557
12662
  [value, pattern]
12558
12663
  end
@@ -12572,7 +12677,7 @@ module Prism
12572
12677
  MatchPredicateNode.new(source, node_id, location, flags, value, pattern, operator_loc)
12573
12678
  end
12574
12679
 
12575
- # def deconstruct: () -> Array[nil | Node]
12680
+ # def deconstruct: () -> Array[Node?]
12576
12681
  alias deconstruct child_nodes
12577
12682
 
12578
12683
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, value: Prism::node, pattern: Prism::node, operator_loc: Location }
@@ -12650,7 +12755,7 @@ module Prism
12650
12755
  visitor.visit_match_required_node(self)
12651
12756
  end
12652
12757
 
12653
- # def child_nodes: () -> Array[nil | Node]
12758
+ # def child_nodes: () -> Array[Node?]
12654
12759
  def child_nodes
12655
12760
  [value, pattern]
12656
12761
  end
@@ -12670,7 +12775,7 @@ module Prism
12670
12775
  MatchRequiredNode.new(source, node_id, location, flags, value, pattern, operator_loc)
12671
12776
  end
12672
12777
 
12673
- # def deconstruct: () -> Array[nil | Node]
12778
+ # def deconstruct: () -> Array[Node?]
12674
12779
  alias deconstruct child_nodes
12675
12780
 
12676
12781
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, value: Prism::node, pattern: Prism::node, operator_loc: Location }
@@ -12678,13 +12783,61 @@ module Prism
12678
12783
  { node_id: node_id, location: location, value: value, pattern: pattern, operator_loc: operator_loc }
12679
12784
  end
12680
12785
 
12681
- # attr_reader value: Prism::node
12786
+ # Represents the left-hand side of the operator.
12787
+ #
12788
+ # foo => bar
12789
+ # ^^^
12682
12790
  attr_reader :value
12683
12791
 
12684
- # attr_reader pattern: Prism::node
12792
+ # Represents the right-hand side of the operator. The type of the node depends on the expression.
12793
+ #
12794
+ # Anything that looks like a local variable name (including `_`) will result in a `LocalVariableTargetNode`.
12795
+ #
12796
+ # foo => a # This is equivalent to writing `a = foo`
12797
+ # ^
12798
+ #
12799
+ # Using an explicit `Array` or combining expressions with `,` will result in a `ArrayPatternNode`. This can be preceded by a constant.
12800
+ #
12801
+ # foo => [a]
12802
+ # ^^^
12803
+ #
12804
+ # foo => a, b
12805
+ # ^^^^
12806
+ #
12807
+ # foo => Bar[a, b]
12808
+ # ^^^^^^^^^
12809
+ #
12810
+ # If the array pattern contains at least two wildcard matches, a `FindPatternNode` is created instead.
12811
+ #
12812
+ # foo => *, 1, *a
12813
+ # ^^^^^
12814
+ #
12815
+ # Using an explicit `Hash` or a constant with square brackets and hash keys in the square brackets will result in a `HashPatternNode`.
12816
+ #
12817
+ # foo => { a: 1, b: }
12818
+ #
12819
+ # foo => Bar[a: 1, b:]
12820
+ #
12821
+ # foo => Bar[**]
12822
+ #
12823
+ # To use any variable that needs run time evaluation, pinning is required. This results in a `PinnedVariableNode`
12824
+ #
12825
+ # foo => ^a
12826
+ # ^^
12827
+ #
12828
+ # Similar, any expression can be used with pinning. This results in a `PinnedExpressionNode`.
12829
+ #
12830
+ # foo => ^(a + 1)
12831
+ #
12832
+ # Anything else will result in the regular node for that expression, for example a `ConstantReadNode`.
12833
+ #
12834
+ # foo => CONST
12685
12835
  attr_reader :pattern
12686
12836
 
12687
- # attr_reader operator_loc: Location
12837
+ # The location of the operator.
12838
+ #
12839
+ # foo => bar
12840
+ # ^^
12688
12841
  def operator_loc
12689
12842
  location = @operator_loc
12690
12843
  return location if location.is_a?(Location)
@@ -12747,7 +12900,7 @@ module Prism
12747
12900
  visitor.visit_match_write_node(self)
12748
12901
  end
12749
12902
 
12750
- # def child_nodes: () -> Array[nil | Node]
12903
+ # def child_nodes: () -> Array[Node?]
12751
12904
  def child_nodes
12752
12905
  [call, *targets]
12753
12906
  end
@@ -12767,7 +12920,7 @@ module Prism
12767
12920
  MatchWriteNode.new(source, node_id, location, flags, call, targets)
12768
12921
  end
12769
12922
 
12770
- # def deconstruct: () -> Array[nil | Node]
12923
+ # def deconstruct: () -> Array[Node?]
12771
12924
  alias deconstruct child_nodes
12772
12925
 
12773
12926
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, call: CallNode, targets: Array[LocalVariableTargetNode] }
@@ -12821,7 +12974,7 @@ module Prism
12821
12974
  visitor.visit_missing_node(self)
12822
12975
  end
12823
12976
 
12824
- # def child_nodes: () -> Array[nil | Node]
12977
+ # def child_nodes: () -> Array[Node?]
12825
12978
  def child_nodes
12826
12979
  []
12827
12980
  end
@@ -12841,7 +12994,7 @@ module Prism
12841
12994
  MissingNode.new(source, node_id, location, flags)
12842
12995
  end
12843
12996
 
12844
- # def deconstruct: () -> Array[nil | Node]
12997
+ # def deconstruct: () -> Array[Node?]
12845
12998
  alias deconstruct child_nodes
12846
12999
 
12847
13000
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location }
@@ -12895,7 +13048,7 @@ module Prism
12895
13048
  visitor.visit_module_node(self)
12896
13049
  end
12897
13050
 
12898
- # def child_nodes: () -> Array[nil | Node]
13051
+ # def child_nodes: () -> Array[Node?]
12899
13052
  def child_nodes
12900
13053
  [constant_path, body]
12901
13054
  end
@@ -12918,7 +13071,7 @@ module Prism
12918
13071
  ModuleNode.new(source, node_id, location, flags, locals, module_keyword_loc, constant_path, body, end_keyword_loc, name)
12919
13072
  end
12920
13073
 
12921
- # def deconstruct: () -> Array[nil | Node]
13074
+ # def deconstruct: () -> Array[Node?]
12922
13075
  alias deconstruct child_nodes
12923
13076
 
12924
13077
  # 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,7 +13184,7 @@ module Prism
13031
13184
  visitor.visit_multi_target_node(self)
13032
13185
  end
13033
13186
 
13034
- # def child_nodes: () -> Array[nil | Node]
13187
+ # def child_nodes: () -> Array[Node?]
13035
13188
  def child_nodes
13036
13189
  [*lefts, rest, *rights]
13037
13190
  end
@@ -13055,7 +13208,7 @@ module Prism
13055
13208
  MultiTargetNode.new(source, node_id, location, flags, lefts, rest, rights, lparen_loc, rparen_loc)
13056
13209
  end
13057
13210
 
13058
- # def deconstruct: () -> Array[nil | Node]
13211
+ # def deconstruct: () -> Array[Node?]
13059
13212
  alias deconstruct child_nodes
13060
13213
 
13061
13214
  # 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,7 +13357,7 @@ module Prism
13204
13357
  visitor.visit_multi_write_node(self)
13205
13358
  end
13206
13359
 
13207
- # def child_nodes: () -> Array[nil | Node]
13360
+ # def child_nodes: () -> Array[Node?]
13208
13361
  def child_nodes
13209
13362
  [*lefts, rest, *rights, value]
13210
13363
  end
@@ -13229,7 +13382,7 @@ module Prism
13229
13382
  MultiWriteNode.new(source, node_id, location, flags, lefts, rest, rights, lparen_loc, rparen_loc, operator_loc, value)
13230
13383
  end
13231
13384
 
13232
- # def deconstruct: () -> Array[nil | Node]
13385
+ # def deconstruct: () -> Array[Node?]
13233
13386
  alias deconstruct child_nodes
13234
13387
 
13235
13388
  # 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,7 +13555,7 @@ module Prism
13402
13555
  visitor.visit_next_node(self)
13403
13556
  end
13404
13557
 
13405
- # def child_nodes: () -> Array[nil | Node]
13558
+ # def child_nodes: () -> Array[Node?]
13406
13559
  def child_nodes
13407
13560
  [arguments]
13408
13561
  end
@@ -13424,7 +13577,7 @@ module Prism
13424
13577
  NextNode.new(source, node_id, location, flags, arguments, keyword_loc)
13425
13578
  end
13426
13579
 
13427
- # def deconstruct: () -> Array[nil | Node]
13580
+ # def deconstruct: () -> Array[Node?]
13428
13581
  alias deconstruct child_nodes
13429
13582
 
13430
13583
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, arguments: ArgumentsNode?, keyword_loc: Location }
@@ -13495,7 +13648,7 @@ module Prism
13495
13648
  visitor.visit_nil_node(self)
13496
13649
  end
13497
13650
 
13498
- # def child_nodes: () -> Array[nil | Node]
13651
+ # def child_nodes: () -> Array[Node?]
13499
13652
  def child_nodes
13500
13653
  []
13501
13654
  end
@@ -13515,7 +13668,7 @@ module Prism
13515
13668
  NilNode.new(source, node_id, location, flags)
13516
13669
  end
13517
13670
 
13518
- # def deconstruct: () -> Array[nil | Node]
13671
+ # def deconstruct: () -> Array[Node?]
13519
13672
  alias deconstruct child_nodes
13520
13673
 
13521
13674
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location }
@@ -13566,7 +13719,7 @@ module Prism
13566
13719
  visitor.visit_no_keywords_parameter_node(self)
13567
13720
  end
13568
13721
 
13569
- # def child_nodes: () -> Array[nil | Node]
13722
+ # def child_nodes: () -> Array[Node?]
13570
13723
  def child_nodes
13571
13724
  []
13572
13725
  end
@@ -13586,7 +13739,7 @@ module Prism
13586
13739
  NoKeywordsParameterNode.new(source, node_id, location, flags, operator_loc, keyword_loc)
13587
13740
  end
13588
13741
 
13589
- # def deconstruct: () -> Array[nil | Node]
13742
+ # def deconstruct: () -> Array[Node?]
13590
13743
  alias deconstruct child_nodes
13591
13744
 
13592
13745
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, operator_loc: Location, keyword_loc: Location }
@@ -13673,7 +13826,7 @@ module Prism
13673
13826
  visitor.visit_numbered_parameters_node(self)
13674
13827
  end
13675
13828
 
13676
- # def child_nodes: () -> Array[nil | Node]
13829
+ # def child_nodes: () -> Array[Node?]
13677
13830
  def child_nodes
13678
13831
  []
13679
13832
  end
@@ -13693,7 +13846,7 @@ module Prism
13693
13846
  NumberedParametersNode.new(source, node_id, location, flags, maximum)
13694
13847
  end
13695
13848
 
13696
- # def deconstruct: () -> Array[nil | Node]
13849
+ # def deconstruct: () -> Array[Node?]
13697
13850
  alias deconstruct child_nodes
13698
13851
 
13699
13852
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, maximum: Integer }
@@ -13746,7 +13899,7 @@ module Prism
13746
13899
  visitor.visit_numbered_reference_read_node(self)
13747
13900
  end
13748
13901
 
13749
- # def child_nodes: () -> Array[nil | Node]
13902
+ # def child_nodes: () -> Array[Node?]
13750
13903
  def child_nodes
13751
13904
  []
13752
13905
  end
@@ -13766,7 +13919,7 @@ module Prism
13766
13919
  NumberedReferenceReadNode.new(source, node_id, location, flags, number)
13767
13920
  end
13768
13921
 
13769
- # def deconstruct: () -> Array[nil | Node]
13922
+ # def deconstruct: () -> Array[Node?]
13770
13923
  alias deconstruct child_nodes
13771
13924
 
13772
13925
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, number: Integer }
@@ -13828,7 +13981,7 @@ module Prism
13828
13981
  visitor.visit_optional_keyword_parameter_node(self)
13829
13982
  end
13830
13983
 
13831
- # def child_nodes: () -> Array[nil | Node]
13984
+ # def child_nodes: () -> Array[Node?]
13832
13985
  def child_nodes
13833
13986
  [value]
13834
13987
  end
@@ -13848,7 +14001,7 @@ module Prism
13848
14001
  OptionalKeywordParameterNode.new(source, node_id, location, flags, name, name_loc, value)
13849
14002
  end
13850
14003
 
13851
- # def deconstruct: () -> Array[nil | Node]
14004
+ # def deconstruct: () -> Array[Node?]
13852
14005
  alias deconstruct child_nodes
13853
14006
 
13854
14007
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol, name_loc: Location, value: Prism::node }
@@ -13929,7 +14082,7 @@ module Prism
13929
14082
  visitor.visit_optional_parameter_node(self)
13930
14083
  end
13931
14084
 
13932
- # def child_nodes: () -> Array[nil | Node]
14085
+ # def child_nodes: () -> Array[Node?]
13933
14086
  def child_nodes
13934
14087
  [value]
13935
14088
  end
@@ -13949,7 +14102,7 @@ module Prism
13949
14102
  OptionalParameterNode.new(source, node_id, location, flags, name, name_loc, operator_loc, value)
13950
14103
  end
13951
14104
 
13952
- # def deconstruct: () -> Array[nil | Node]
14105
+ # def deconstruct: () -> Array[Node?]
13953
14106
  alias deconstruct child_nodes
13954
14107
 
13955
14108
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol, name_loc: Location, operator_loc: Location, value: Prism::node }
@@ -14047,7 +14200,7 @@ module Prism
14047
14200
  visitor.visit_or_node(self)
14048
14201
  end
14049
14202
 
14050
- # def child_nodes: () -> Array[nil | Node]
14203
+ # def child_nodes: () -> Array[Node?]
14051
14204
  def child_nodes
14052
14205
  [left, right]
14053
14206
  end
@@ -14067,7 +14220,7 @@ module Prism
14067
14220
  OrNode.new(source, node_id, location, flags, left, right, operator_loc)
14068
14221
  end
14069
14222
 
14070
- # def deconstruct: () -> Array[nil | Node]
14223
+ # def deconstruct: () -> Array[Node?]
14071
14224
  alias deconstruct child_nodes
14072
14225
 
14073
14226
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, left: Prism::node, right: Prism::node, operator_loc: Location }
@@ -14165,7 +14318,7 @@ module Prism
14165
14318
  visitor.visit_parameters_node(self)
14166
14319
  end
14167
14320
 
14168
- # def child_nodes: () -> Array[nil | Node]
14321
+ # def child_nodes: () -> Array[Node?]
14169
14322
  def child_nodes
14170
14323
  [*requireds, *optionals, rest, *posts, *keywords, keyword_rest, block]
14171
14324
  end
@@ -14193,7 +14346,7 @@ module Prism
14193
14346
  ParametersNode.new(source, node_id, location, flags, requireds, optionals, rest, posts, keywords, keyword_rest, block)
14194
14347
  end
14195
14348
 
14196
- # def deconstruct: () -> Array[nil | Node]
14349
+ # def deconstruct: () -> Array[Node?]
14197
14350
  alias deconstruct child_nodes
14198
14351
 
14199
14352
  # 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,7 +14429,7 @@ module Prism
14276
14429
  visitor.visit_parentheses_node(self)
14277
14430
  end
14278
14431
 
14279
- # def child_nodes: () -> Array[nil | Node]
14432
+ # def child_nodes: () -> Array[Node?]
14280
14433
  def child_nodes
14281
14434
  [body]
14282
14435
  end
@@ -14298,7 +14451,7 @@ module Prism
14298
14451
  ParenthesesNode.new(source, node_id, location, flags, body, opening_loc, closing_loc)
14299
14452
  end
14300
14453
 
14301
- # def deconstruct: () -> Array[nil | Node]
14454
+ # def deconstruct: () -> Array[Node?]
14302
14455
  alias deconstruct child_nodes
14303
14456
 
14304
14457
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, body: Prism::node?, opening_loc: Location, closing_loc: Location }
@@ -14398,7 +14551,7 @@ module Prism
14398
14551
  visitor.visit_pinned_expression_node(self)
14399
14552
  end
14400
14553
 
14401
- # def child_nodes: () -> Array[nil | Node]
14554
+ # def child_nodes: () -> Array[Node?]
14402
14555
  def child_nodes
14403
14556
  [expression]
14404
14557
  end
@@ -14418,7 +14571,7 @@ module Prism
14418
14571
  PinnedExpressionNode.new(source, node_id, location, flags, expression, operator_loc, lparen_loc, rparen_loc)
14419
14572
  end
14420
14573
 
14421
- # def deconstruct: () -> Array[nil | Node]
14574
+ # def deconstruct: () -> Array[Node?]
14422
14575
  alias deconstruct child_nodes
14423
14576
 
14424
14577
  # 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 +14579,16 @@ module Prism
14426
14579
  { node_id: node_id, location: location, expression: expression, operator_loc: operator_loc, lparen_loc: lparen_loc, rparen_loc: rparen_loc }
14427
14580
  end
14428
14581
 
14429
- # attr_reader expression: Prism::node
14582
+ # The expression used in the pinned expression
14583
+ #
14584
+ # foo in ^(bar)
14585
+ # ^^^
14430
14586
  attr_reader :expression
14431
14587
 
14432
- # attr_reader operator_loc: Location
14588
+ # The location of the `^` operator
14589
+ #
14590
+ # foo in ^(bar)
14591
+ # ^
14433
14592
  def operator_loc
14434
14593
  location = @operator_loc
14435
14594
  return location if location.is_a?(Location)
@@ -14442,7 +14601,10 @@ module Prism
14442
14601
  repository.enter(node_id, :operator_loc)
14443
14602
  end
14444
14603
 
14445
- # attr_reader lparen_loc: Location
14604
+ # The location of the opening parenthesis.
14605
+ #
14606
+ # foo in ^(bar)
14607
+ # ^
14446
14608
  def lparen_loc
14447
14609
  location = @lparen_loc
14448
14610
  return location if location.is_a?(Location)
@@ -14455,7 +14617,10 @@ module Prism
14455
14617
  repository.enter(node_id, :lparen_loc)
14456
14618
  end
14457
14619
 
14458
- # attr_reader rparen_loc: Location
14620
+ # The location of the closing parenthesis.
14621
+ #
14622
+ # foo in ^(bar)
14623
+ # ^
14459
14624
  def rparen_loc
14460
14625
  location = @rparen_loc
14461
14626
  return location if location.is_a?(Location)
@@ -14529,7 +14694,7 @@ module Prism
14529
14694
  visitor.visit_pinned_variable_node(self)
14530
14695
  end
14531
14696
 
14532
- # def child_nodes: () -> Array[nil | Node]
14697
+ # def child_nodes: () -> Array[Node?]
14533
14698
  def child_nodes
14534
14699
  [variable]
14535
14700
  end
@@ -14549,7 +14714,7 @@ module Prism
14549
14714
  PinnedVariableNode.new(source, node_id, location, flags, variable, operator_loc)
14550
14715
  end
14551
14716
 
14552
- # def deconstruct: () -> Array[nil | Node]
14717
+ # def deconstruct: () -> Array[Node?]
14553
14718
  alias deconstruct child_nodes
14554
14719
 
14555
14720
  # 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 +14722,16 @@ module Prism
14557
14722
  { node_id: node_id, location: location, variable: variable, operator_loc: operator_loc }
14558
14723
  end
14559
14724
 
14560
- # attr_reader variable: LocalVariableReadNode | InstanceVariableReadNode | ClassVariableReadNode | GlobalVariableReadNode | BackReferenceReadNode | NumberedReferenceReadNode | ItLocalVariableReadNode | MissingNode
14725
+ # The variable used in the pinned expression
14726
+ #
14727
+ # foo in ^bar
14728
+ # ^^^
14561
14729
  attr_reader :variable
14562
14730
 
14563
- # attr_reader operator_loc: Location
14731
+ # The location of the `^` operator
14732
+ #
14733
+ # foo in ^bar
14734
+ # ^
14564
14735
  def operator_loc
14565
14736
  location = @operator_loc
14566
14737
  return location if location.is_a?(Location)
@@ -14624,7 +14795,7 @@ module Prism
14624
14795
  visitor.visit_post_execution_node(self)
14625
14796
  end
14626
14797
 
14627
- # def child_nodes: () -> Array[nil | Node]
14798
+ # def child_nodes: () -> Array[Node?]
14628
14799
  def child_nodes
14629
14800
  [statements]
14630
14801
  end
@@ -14646,7 +14817,7 @@ module Prism
14646
14817
  PostExecutionNode.new(source, node_id, location, flags, statements, keyword_loc, opening_loc, closing_loc)
14647
14818
  end
14648
14819
 
14649
- # def deconstruct: () -> Array[nil | Node]
14820
+ # def deconstruct: () -> Array[Node?]
14650
14821
  alias deconstruct child_nodes
14651
14822
 
14652
14823
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, statements: StatementsNode?, keyword_loc: Location, opening_loc: Location, closing_loc: Location }
@@ -14759,7 +14930,7 @@ module Prism
14759
14930
  visitor.visit_pre_execution_node(self)
14760
14931
  end
14761
14932
 
14762
- # def child_nodes: () -> Array[nil | Node]
14933
+ # def child_nodes: () -> Array[Node?]
14763
14934
  def child_nodes
14764
14935
  [statements]
14765
14936
  end
@@ -14781,7 +14952,7 @@ module Prism
14781
14952
  PreExecutionNode.new(source, node_id, location, flags, statements, keyword_loc, opening_loc, closing_loc)
14782
14953
  end
14783
14954
 
14784
- # def deconstruct: () -> Array[nil | Node]
14955
+ # def deconstruct: () -> Array[Node?]
14785
14956
  alias deconstruct child_nodes
14786
14957
 
14787
14958
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, statements: StatementsNode?, keyword_loc: Location, opening_loc: Location, closing_loc: Location }
@@ -14889,7 +15060,7 @@ module Prism
14889
15060
  visitor.visit_program_node(self)
14890
15061
  end
14891
15062
 
14892
- # def child_nodes: () -> Array[nil | Node]
15063
+ # def child_nodes: () -> Array[Node?]
14893
15064
  def child_nodes
14894
15065
  [statements]
14895
15066
  end
@@ -14909,7 +15080,7 @@ module Prism
14909
15080
  ProgramNode.new(source, node_id, location, flags, locals, statements)
14910
15081
  end
14911
15082
 
14912
- # def deconstruct: () -> Array[nil | Node]
15083
+ # def deconstruct: () -> Array[Node?]
14913
15084
  alias deconstruct child_nodes
14914
15085
 
14915
15086
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, locals: Array[Symbol], statements: StatementsNode }
@@ -14972,7 +15143,7 @@ module Prism
14972
15143
  visitor.visit_range_node(self)
14973
15144
  end
14974
15145
 
14975
- # def child_nodes: () -> Array[nil | Node]
15146
+ # def child_nodes: () -> Array[Node?]
14976
15147
  def child_nodes
14977
15148
  [left, right]
14978
15149
  end
@@ -14995,7 +15166,7 @@ module Prism
14995
15166
  RangeNode.new(source, node_id, location, flags, left, right, operator_loc)
14996
15167
  end
14997
15168
 
14998
- # def deconstruct: () -> Array[nil | Node]
15169
+ # def deconstruct: () -> Array[Node?]
14999
15170
  alias deconstruct child_nodes
15000
15171
 
15001
15172
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, left: Prism::node?, right: Prism::node?, operator_loc: Location }
@@ -15091,7 +15262,7 @@ module Prism
15091
15262
  visitor.visit_rational_node(self)
15092
15263
  end
15093
15264
 
15094
- # def child_nodes: () -> Array[nil | Node]
15265
+ # def child_nodes: () -> Array[Node?]
15095
15266
  def child_nodes
15096
15267
  []
15097
15268
  end
@@ -15111,7 +15282,7 @@ module Prism
15111
15282
  RationalNode.new(source, node_id, location, flags, numerator, denominator)
15112
15283
  end
15113
15284
 
15114
- # def deconstruct: () -> Array[nil | Node]
15285
+ # def deconstruct: () -> Array[Node?]
15115
15286
  alias deconstruct child_nodes
15116
15287
 
15117
15288
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, numerator: Integer, denominator: Integer }
@@ -15192,7 +15363,7 @@ module Prism
15192
15363
  visitor.visit_redo_node(self)
15193
15364
  end
15194
15365
 
15195
- # def child_nodes: () -> Array[nil | Node]
15366
+ # def child_nodes: () -> Array[Node?]
15196
15367
  def child_nodes
15197
15368
  []
15198
15369
  end
@@ -15212,7 +15383,7 @@ module Prism
15212
15383
  RedoNode.new(source, node_id, location, flags)
15213
15384
  end
15214
15385
 
15215
- # def deconstruct: () -> Array[nil | Node]
15386
+ # def deconstruct: () -> Array[Node?]
15216
15387
  alias deconstruct child_nodes
15217
15388
 
15218
15389
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location }
@@ -15264,7 +15435,7 @@ module Prism
15264
15435
  visitor.visit_regular_expression_node(self)
15265
15436
  end
15266
15437
 
15267
- # def child_nodes: () -> Array[nil | Node]
15438
+ # def child_nodes: () -> Array[Node?]
15268
15439
  def child_nodes
15269
15440
  []
15270
15441
  end
@@ -15284,7 +15455,7 @@ module Prism
15284
15455
  RegularExpressionNode.new(source, node_id, location, flags, opening_loc, content_loc, closing_loc, unescaped)
15285
15456
  end
15286
15457
 
15287
- # def deconstruct: () -> Array[nil | Node]
15458
+ # def deconstruct: () -> Array[Node?]
15288
15459
  alias deconstruct child_nodes
15289
15460
 
15290
15461
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, opening_loc: Location, content_loc: Location, closing_loc: Location, unescaped: String }
@@ -15452,7 +15623,7 @@ module Prism
15452
15623
  visitor.visit_required_keyword_parameter_node(self)
15453
15624
  end
15454
15625
 
15455
- # def child_nodes: () -> Array[nil | Node]
15626
+ # def child_nodes: () -> Array[Node?]
15456
15627
  def child_nodes
15457
15628
  []
15458
15629
  end
@@ -15472,7 +15643,7 @@ module Prism
15472
15643
  RequiredKeywordParameterNode.new(source, node_id, location, flags, name, name_loc)
15473
15644
  end
15474
15645
 
15475
- # def deconstruct: () -> Array[nil | Node]
15646
+ # def deconstruct: () -> Array[Node?]
15476
15647
  alias deconstruct child_nodes
15477
15648
 
15478
15649
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol, name_loc: Location }
@@ -15546,7 +15717,7 @@ module Prism
15546
15717
  visitor.visit_required_parameter_node(self)
15547
15718
  end
15548
15719
 
15549
- # def child_nodes: () -> Array[nil | Node]
15720
+ # def child_nodes: () -> Array[Node?]
15550
15721
  def child_nodes
15551
15722
  []
15552
15723
  end
@@ -15566,7 +15737,7 @@ module Prism
15566
15737
  RequiredParameterNode.new(source, node_id, location, flags, name)
15567
15738
  end
15568
15739
 
15569
- # def deconstruct: () -> Array[nil | Node]
15740
+ # def deconstruct: () -> Array[Node?]
15570
15741
  alias deconstruct child_nodes
15571
15742
 
15572
15743
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol }
@@ -15627,7 +15798,7 @@ module Prism
15627
15798
  visitor.visit_rescue_modifier_node(self)
15628
15799
  end
15629
15800
 
15630
- # def child_nodes: () -> Array[nil | Node]
15801
+ # def child_nodes: () -> Array[Node?]
15631
15802
  def child_nodes
15632
15803
  [expression, rescue_expression]
15633
15804
  end
@@ -15647,7 +15818,7 @@ module Prism
15647
15818
  RescueModifierNode.new(source, node_id, location, flags, expression, keyword_loc, rescue_expression)
15648
15819
  end
15649
15820
 
15650
- # def deconstruct: () -> Array[nil | Node]
15821
+ # def deconstruct: () -> Array[Node?]
15651
15822
  alias deconstruct child_nodes
15652
15823
 
15653
15824
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, expression: Prism::node, keyword_loc: Location, rescue_expression: Prism::node }
@@ -15734,7 +15905,7 @@ module Prism
15734
15905
  visitor.visit_rescue_node(self)
15735
15906
  end
15736
15907
 
15737
- # def child_nodes: () -> Array[nil | Node]
15908
+ # def child_nodes: () -> Array[Node?]
15738
15909
  def child_nodes
15739
15910
  [*exceptions, reference, statements, subsequent]
15740
15911
  end
@@ -15759,7 +15930,7 @@ module Prism
15759
15930
  RescueNode.new(source, node_id, location, flags, keyword_loc, exceptions, operator_loc, reference, then_keyword_loc, statements, subsequent)
15760
15931
  end
15761
15932
 
15762
- # def deconstruct: () -> Array[nil | Node]
15933
+ # def deconstruct: () -> Array[Node?]
15763
15934
  alias deconstruct child_nodes
15764
15935
 
15765
15936
  # 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,7 +16068,7 @@ module Prism
15897
16068
  visitor.visit_rest_parameter_node(self)
15898
16069
  end
15899
16070
 
15900
- # def child_nodes: () -> Array[nil | Node]
16071
+ # def child_nodes: () -> Array[Node?]
15901
16072
  def child_nodes
15902
16073
  []
15903
16074
  end
@@ -15917,7 +16088,7 @@ module Prism
15917
16088
  RestParameterNode.new(source, node_id, location, flags, name, name_loc, operator_loc)
15918
16089
  end
15919
16090
 
15920
- # def deconstruct: () -> Array[nil | Node]
16091
+ # def deconstruct: () -> Array[Node?]
15921
16092
  alias deconstruct child_nodes
15922
16093
 
15923
16094
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol?, name_loc: Location?, operator_loc: Location }
@@ -16014,7 +16185,7 @@ module Prism
16014
16185
  visitor.visit_retry_node(self)
16015
16186
  end
16016
16187
 
16017
- # def child_nodes: () -> Array[nil | Node]
16188
+ # def child_nodes: () -> Array[Node?]
16018
16189
  def child_nodes
16019
16190
  []
16020
16191
  end
@@ -16034,7 +16205,7 @@ module Prism
16034
16205
  RetryNode.new(source, node_id, location, flags)
16035
16206
  end
16036
16207
 
16037
- # def deconstruct: () -> Array[nil | Node]
16208
+ # def deconstruct: () -> Array[Node?]
16038
16209
  alias deconstruct child_nodes
16039
16210
 
16040
16211
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location }
@@ -16084,7 +16255,7 @@ module Prism
16084
16255
  visitor.visit_return_node(self)
16085
16256
  end
16086
16257
 
16087
- # def child_nodes: () -> Array[nil | Node]
16258
+ # def child_nodes: () -> Array[Node?]
16088
16259
  def child_nodes
16089
16260
  [arguments]
16090
16261
  end
@@ -16106,7 +16277,7 @@ module Prism
16106
16277
  ReturnNode.new(source, node_id, location, flags, keyword_loc, arguments)
16107
16278
  end
16108
16279
 
16109
- # def deconstruct: () -> Array[nil | Node]
16280
+ # def deconstruct: () -> Array[Node?]
16110
16281
  alias deconstruct child_nodes
16111
16282
 
16112
16283
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, keyword_loc: Location, arguments: ArgumentsNode? }
@@ -16177,7 +16348,7 @@ module Prism
16177
16348
  visitor.visit_self_node(self)
16178
16349
  end
16179
16350
 
16180
- # def child_nodes: () -> Array[nil | Node]
16351
+ # def child_nodes: () -> Array[Node?]
16181
16352
  def child_nodes
16182
16353
  []
16183
16354
  end
@@ -16197,7 +16368,7 @@ module Prism
16197
16368
  SelfNode.new(source, node_id, location, flags)
16198
16369
  end
16199
16370
 
16200
- # def deconstruct: () -> Array[nil | Node]
16371
+ # def deconstruct: () -> Array[Node?]
16201
16372
  alias deconstruct child_nodes
16202
16373
 
16203
16374
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location }
@@ -16247,7 +16418,7 @@ module Prism
16247
16418
  visitor.visit_shareable_constant_node(self)
16248
16419
  end
16249
16420
 
16250
- # def child_nodes: () -> Array[nil | Node]
16421
+ # def child_nodes: () -> Array[Node?]
16251
16422
  def child_nodes
16252
16423
  [write]
16253
16424
  end
@@ -16267,7 +16438,7 @@ module Prism
16267
16438
  ShareableConstantNode.new(source, node_id, location, flags, write)
16268
16439
  end
16269
16440
 
16270
- # def deconstruct: () -> Array[nil | Node]
16441
+ # def deconstruct: () -> Array[Node?]
16271
16442
  alias deconstruct child_nodes
16272
16443
 
16273
16444
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, write: ConstantWriteNode | ConstantAndWriteNode | ConstantOrWriteNode | ConstantOperatorWriteNode | ConstantPathWriteNode | ConstantPathAndWriteNode | ConstantPathOrWriteNode | ConstantPathOperatorWriteNode }
@@ -16341,7 +16512,7 @@ module Prism
16341
16512
  visitor.visit_singleton_class_node(self)
16342
16513
  end
16343
16514
 
16344
- # def child_nodes: () -> Array[nil | Node]
16515
+ # def child_nodes: () -> Array[Node?]
16345
16516
  def child_nodes
16346
16517
  [expression, body]
16347
16518
  end
@@ -16364,7 +16535,7 @@ module Prism
16364
16535
  SingletonClassNode.new(source, node_id, location, flags, locals, class_keyword_loc, operator_loc, expression, body, end_keyword_loc)
16365
16536
  end
16366
16537
 
16367
- # def deconstruct: () -> Array[nil | Node]
16538
+ # def deconstruct: () -> Array[Node?]
16368
16539
  alias deconstruct child_nodes
16369
16540
 
16370
16541
  # 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,7 +16653,7 @@ module Prism
16482
16653
  visitor.visit_source_encoding_node(self)
16483
16654
  end
16484
16655
 
16485
- # def child_nodes: () -> Array[nil | Node]
16656
+ # def child_nodes: () -> Array[Node?]
16486
16657
  def child_nodes
16487
16658
  []
16488
16659
  end
@@ -16502,7 +16673,7 @@ module Prism
16502
16673
  SourceEncodingNode.new(source, node_id, location, flags)
16503
16674
  end
16504
16675
 
16505
- # def deconstruct: () -> Array[nil | Node]
16676
+ # def deconstruct: () -> Array[Node?]
16506
16677
  alias deconstruct child_nodes
16507
16678
 
16508
16679
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location }
@@ -16551,7 +16722,7 @@ module Prism
16551
16722
  visitor.visit_source_file_node(self)
16552
16723
  end
16553
16724
 
16554
- # def child_nodes: () -> Array[nil | Node]
16725
+ # def child_nodes: () -> Array[Node?]
16555
16726
  def child_nodes
16556
16727
  []
16557
16728
  end
@@ -16571,7 +16742,7 @@ module Prism
16571
16742
  SourceFileNode.new(source, node_id, location, flags, filepath)
16572
16743
  end
16573
16744
 
16574
- # def deconstruct: () -> Array[nil | Node]
16745
+ # def deconstruct: () -> Array[Node?]
16575
16746
  alias deconstruct child_nodes
16576
16747
 
16577
16748
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, filepath: String }
@@ -16644,7 +16815,7 @@ module Prism
16644
16815
  visitor.visit_source_line_node(self)
16645
16816
  end
16646
16817
 
16647
- # def child_nodes: () -> Array[nil | Node]
16818
+ # def child_nodes: () -> Array[Node?]
16648
16819
  def child_nodes
16649
16820
  []
16650
16821
  end
@@ -16664,7 +16835,7 @@ module Prism
16664
16835
  SourceLineNode.new(source, node_id, location, flags)
16665
16836
  end
16666
16837
 
16667
- # def deconstruct: () -> Array[nil | Node]
16838
+ # def deconstruct: () -> Array[Node?]
16668
16839
  alias deconstruct child_nodes
16669
16840
 
16670
16841
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location }
@@ -16714,7 +16885,7 @@ module Prism
16714
16885
  visitor.visit_splat_node(self)
16715
16886
  end
16716
16887
 
16717
- # def child_nodes: () -> Array[nil | Node]
16888
+ # def child_nodes: () -> Array[Node?]
16718
16889
  def child_nodes
16719
16890
  [expression]
16720
16891
  end
@@ -16736,7 +16907,7 @@ module Prism
16736
16907
  SplatNode.new(source, node_id, location, flags, operator_loc, expression)
16737
16908
  end
16738
16909
 
16739
- # def deconstruct: () -> Array[nil | Node]
16910
+ # def deconstruct: () -> Array[Node?]
16740
16911
  alias deconstruct child_nodes
16741
16912
 
16742
16913
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, operator_loc: Location, expression: Prism::node? }
@@ -16808,7 +16979,7 @@ module Prism
16808
16979
  visitor.visit_statements_node(self)
16809
16980
  end
16810
16981
 
16811
- # def child_nodes: () -> Array[nil | Node]
16982
+ # def child_nodes: () -> Array[Node?]
16812
16983
  def child_nodes
16813
16984
  [*body]
16814
16985
  end
@@ -16828,7 +16999,7 @@ module Prism
16828
16999
  StatementsNode.new(source, node_id, location, flags, body)
16829
17000
  end
16830
17001
 
16831
- # def deconstruct: () -> Array[nil | Node]
17002
+ # def deconstruct: () -> Array[Node?]
16832
17003
  alias deconstruct child_nodes
16833
17004
 
16834
17005
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, body: Array[Prism::node] }
@@ -16891,7 +17062,7 @@ module Prism
16891
17062
  visitor.visit_string_node(self)
16892
17063
  end
16893
17064
 
16894
- # def child_nodes: () -> Array[nil | Node]
17065
+ # def child_nodes: () -> Array[Node?]
16895
17066
  def child_nodes
16896
17067
  []
16897
17068
  end
@@ -16911,7 +17082,7 @@ module Prism
16911
17082
  StringNode.new(source, node_id, location, flags, opening_loc, content_loc, closing_loc, unescaped)
16912
17083
  end
16913
17084
 
16914
- # def deconstruct: () -> Array[nil | Node]
17085
+ # def deconstruct: () -> Array[Node?]
16915
17086
  alias deconstruct child_nodes
16916
17087
 
16917
17088
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, opening_loc: Location?, content_loc: Location, closing_loc: Location?, unescaped: String }
@@ -17061,7 +17232,7 @@ module Prism
17061
17232
  visitor.visit_super_node(self)
17062
17233
  end
17063
17234
 
17064
- # def child_nodes: () -> Array[nil | Node]
17235
+ # def child_nodes: () -> Array[Node?]
17065
17236
  def child_nodes
17066
17237
  [arguments, block]
17067
17238
  end
@@ -17084,7 +17255,7 @@ module Prism
17084
17255
  SuperNode.new(source, node_id, location, flags, keyword_loc, lparen_loc, arguments, rparen_loc, block)
17085
17256
  end
17086
17257
 
17087
- # def deconstruct: () -> Array[nil | Node]
17258
+ # def deconstruct: () -> Array[Node?]
17088
17259
  alias deconstruct child_nodes
17089
17260
 
17090
17261
  # 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 }
@@ -17216,7 +17387,7 @@ module Prism
17216
17387
  visitor.visit_symbol_node(self)
17217
17388
  end
17218
17389
 
17219
- # def child_nodes: () -> Array[nil | Node]
17390
+ # def child_nodes: () -> Array[Node?]
17220
17391
  def child_nodes
17221
17392
  []
17222
17393
  end
@@ -17236,7 +17407,7 @@ module Prism
17236
17407
  SymbolNode.new(source, node_id, location, flags, opening_loc, value_loc, closing_loc, unescaped)
17237
17408
  end
17238
17409
 
17239
- # def deconstruct: () -> Array[nil | Node]
17410
+ # def deconstruct: () -> Array[Node?]
17240
17411
  alias deconstruct child_nodes
17241
17412
 
17242
17413
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, opening_loc: Location?, value_loc: Location?, closing_loc: Location?, unescaped: String }
@@ -17379,7 +17550,7 @@ module Prism
17379
17550
  visitor.visit_true_node(self)
17380
17551
  end
17381
17552
 
17382
- # def child_nodes: () -> Array[nil | Node]
17553
+ # def child_nodes: () -> Array[Node?]
17383
17554
  def child_nodes
17384
17555
  []
17385
17556
  end
@@ -17399,7 +17570,7 @@ module Prism
17399
17570
  TrueNode.new(source, node_id, location, flags)
17400
17571
  end
17401
17572
 
17402
- # def deconstruct: () -> Array[nil | Node]
17573
+ # def deconstruct: () -> Array[Node?]
17403
17574
  alias deconstruct child_nodes
17404
17575
 
17405
17576
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location }
@@ -17449,7 +17620,7 @@ module Prism
17449
17620
  visitor.visit_undef_node(self)
17450
17621
  end
17451
17622
 
17452
- # def child_nodes: () -> Array[nil | Node]
17623
+ # def child_nodes: () -> Array[Node?]
17453
17624
  def child_nodes
17454
17625
  [*names]
17455
17626
  end
@@ -17469,7 +17640,7 @@ module Prism
17469
17640
  UndefNode.new(source, node_id, location, flags, names, keyword_loc)
17470
17641
  end
17471
17642
 
17472
- # def deconstruct: () -> Array[nil | Node]
17643
+ # def deconstruct: () -> Array[Node?]
17473
17644
  alias deconstruct child_nodes
17474
17645
 
17475
17646
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, names: Array[SymbolNode | InterpolatedSymbolNode], keyword_loc: Location }
@@ -17550,7 +17721,7 @@ module Prism
17550
17721
  visitor.visit_unless_node(self)
17551
17722
  end
17552
17723
 
17553
- # def child_nodes: () -> Array[nil | Node]
17724
+ # def child_nodes: () -> Array[Node?]
17554
17725
  def child_nodes
17555
17726
  [predicate, statements, else_clause]
17556
17727
  end
@@ -17574,7 +17745,7 @@ module Prism
17574
17745
  UnlessNode.new(source, node_id, location, flags, keyword_loc, predicate, then_keyword_loc, statements, else_clause, end_keyword_loc)
17575
17746
  end
17576
17747
 
17577
- # def deconstruct: () -> Array[nil | Node]
17748
+ # def deconstruct: () -> Array[Node?]
17578
17749
  alias deconstruct child_nodes
17579
17750
 
17580
17751
  # 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,7 +17907,7 @@ module Prism
17736
17907
  visitor.visit_until_node(self)
17737
17908
  end
17738
17909
 
17739
- # def child_nodes: () -> Array[nil | Node]
17910
+ # def child_nodes: () -> Array[Node?]
17740
17911
  def child_nodes
17741
17912
  [predicate, statements]
17742
17913
  end
@@ -17759,7 +17930,7 @@ module Prism
17759
17930
  UntilNode.new(source, node_id, location, flags, keyword_loc, do_keyword_loc, closing_loc, predicate, statements)
17760
17931
  end
17761
17932
 
17762
- # def deconstruct: () -> Array[nil | Node]
17933
+ # def deconstruct: () -> Array[Node?]
17763
17934
  alias deconstruct child_nodes
17764
17935
 
17765
17936
  # 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,7 +18067,7 @@ module Prism
17896
18067
  visitor.visit_when_node(self)
17897
18068
  end
17898
18069
 
17899
- # def child_nodes: () -> Array[nil | Node]
18070
+ # def child_nodes: () -> Array[Node?]
17900
18071
  def child_nodes
17901
18072
  [*conditions, statements]
17902
18073
  end
@@ -17919,7 +18090,7 @@ module Prism
17919
18090
  WhenNode.new(source, node_id, location, flags, keyword_loc, conditions, then_keyword_loc, statements)
17920
18091
  end
17921
18092
 
17922
- # def deconstruct: () -> Array[nil | Node]
18093
+ # def deconstruct: () -> Array[Node?]
17923
18094
  alias deconstruct child_nodes
17924
18095
 
17925
18096
  # 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,7 +18199,7 @@ module Prism
18028
18199
  visitor.visit_while_node(self)
18029
18200
  end
18030
18201
 
18031
- # def child_nodes: () -> Array[nil | Node]
18202
+ # def child_nodes: () -> Array[Node?]
18032
18203
  def child_nodes
18033
18204
  [predicate, statements]
18034
18205
  end
@@ -18051,7 +18222,7 @@ module Prism
18051
18222
  WhileNode.new(source, node_id, location, flags, keyword_loc, do_keyword_loc, closing_loc, predicate, statements)
18052
18223
  end
18053
18224
 
18054
- # def deconstruct: () -> Array[nil | Node]
18225
+ # def deconstruct: () -> Array[Node?]
18055
18226
  alias deconstruct child_nodes
18056
18227
 
18057
18228
  # 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,7 +18357,7 @@ module Prism
18186
18357
  visitor.visit_x_string_node(self)
18187
18358
  end
18188
18359
 
18189
- # def child_nodes: () -> Array[nil | Node]
18360
+ # def child_nodes: () -> Array[Node?]
18190
18361
  def child_nodes
18191
18362
  []
18192
18363
  end
@@ -18206,7 +18377,7 @@ module Prism
18206
18377
  XStringNode.new(source, node_id, location, flags, opening_loc, content_loc, closing_loc, unescaped)
18207
18378
  end
18208
18379
 
18209
- # def deconstruct: () -> Array[nil | Node]
18380
+ # def deconstruct: () -> Array[Node?]
18210
18381
  alias deconstruct child_nodes
18211
18382
 
18212
18383
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, opening_loc: Location, content_loc: Location, closing_loc: Location, unescaped: String }
@@ -18330,7 +18501,7 @@ module Prism
18330
18501
  visitor.visit_yield_node(self)
18331
18502
  end
18332
18503
 
18333
- # def child_nodes: () -> Array[nil | Node]
18504
+ # def child_nodes: () -> Array[Node?]
18334
18505
  def child_nodes
18335
18506
  [arguments]
18336
18507
  end
@@ -18352,7 +18523,7 @@ module Prism
18352
18523
  YieldNode.new(source, node_id, location, flags, keyword_loc, lparen_loc, arguments, rparen_loc)
18353
18524
  end
18354
18525
 
18355
- # def deconstruct: () -> Array[nil | Node]
18526
+ # def deconstruct: () -> Array[Node?]
18356
18527
  alias deconstruct child_nodes
18357
18528
 
18358
18529
  # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, keyword_loc: Location, lparen_loc: Location?, arguments: ArgumentsNode?, rparen_loc: Location? }