yarp 0.7.0 → 0.9.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.
data/lib/yarp/node.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
  =begin
3
- This file is generated by the bin/template script and should not be
3
+ This file is generated by the templates/template.rb script and should not be
4
4
  modified manually. See templates/lib/yarp/node.rb.erb
5
5
  if you are looking to modify the template
6
6
  =end
@@ -38,6 +38,16 @@ module YARP
38
38
  [new_name, old_name]
39
39
  end
40
40
 
41
+ # def copy: (**params) -> AliasNode
42
+ def copy(**params)
43
+ AliasNode.new(
44
+ params.fetch(:new_name) { new_name },
45
+ params.fetch(:old_name) { old_name },
46
+ params.fetch(:keyword_loc) { keyword_loc },
47
+ params.fetch(:location) { location },
48
+ )
49
+ end
50
+
41
51
  # def deconstruct: () -> Array[nil | Node]
42
52
  alias deconstruct child_nodes
43
53
 
@@ -84,6 +94,16 @@ module YARP
84
94
  [left, right]
85
95
  end
86
96
 
97
+ # def copy: (**params) -> AlternationPatternNode
98
+ def copy(**params)
99
+ AlternationPatternNode.new(
100
+ params.fetch(:left) { left },
101
+ params.fetch(:right) { right },
102
+ params.fetch(:operator_loc) { operator_loc },
103
+ params.fetch(:location) { location },
104
+ )
105
+ end
106
+
87
107
  # def deconstruct: () -> Array[nil | Node]
88
108
  alias deconstruct child_nodes
89
109
 
@@ -130,6 +150,16 @@ module YARP
130
150
  [left, right]
131
151
  end
132
152
 
153
+ # def copy: (**params) -> AndNode
154
+ def copy(**params)
155
+ AndNode.new(
156
+ params.fetch(:left) { left },
157
+ params.fetch(:right) { right },
158
+ params.fetch(:operator_loc) { operator_loc },
159
+ params.fetch(:location) { location },
160
+ )
161
+ end
162
+
133
163
  # def deconstruct: () -> Array[nil | Node]
134
164
  alias deconstruct child_nodes
135
165
 
@@ -168,6 +198,14 @@ module YARP
168
198
  [*arguments]
169
199
  end
170
200
 
201
+ # def copy: (**params) -> ArgumentsNode
202
+ def copy(**params)
203
+ ArgumentsNode.new(
204
+ params.fetch(:arguments) { arguments },
205
+ params.fetch(:location) { location },
206
+ )
207
+ end
208
+
171
209
  # def deconstruct: () -> Array[nil | Node]
172
210
  alias deconstruct child_nodes
173
211
 
@@ -210,6 +248,16 @@ module YARP
210
248
  [*elements]
211
249
  end
212
250
 
251
+ # def copy: (**params) -> ArrayNode
252
+ def copy(**params)
253
+ ArrayNode.new(
254
+ params.fetch(:elements) { elements },
255
+ params.fetch(:opening_loc) { opening_loc },
256
+ params.fetch(:closing_loc) { closing_loc },
257
+ params.fetch(:location) { location },
258
+ )
259
+ end
260
+
213
261
  # def deconstruct: () -> Array[nil | Node]
214
262
  alias deconstruct child_nodes
215
263
 
@@ -285,6 +333,19 @@ module YARP
285
333
  [constant, *requireds, rest, *posts]
286
334
  end
287
335
 
336
+ # def copy: (**params) -> ArrayPatternNode
337
+ def copy(**params)
338
+ ArrayPatternNode.new(
339
+ params.fetch(:constant) { constant },
340
+ params.fetch(:requireds) { requireds },
341
+ params.fetch(:rest) { rest },
342
+ params.fetch(:posts) { posts },
343
+ params.fetch(:opening_loc) { opening_loc },
344
+ params.fetch(:closing_loc) { closing_loc },
345
+ params.fetch(:location) { location },
346
+ )
347
+ end
348
+
288
349
  # def deconstruct: () -> Array[nil | Node]
289
350
  alias deconstruct child_nodes
290
351
 
@@ -336,6 +397,16 @@ module YARP
336
397
  [key, value]
337
398
  end
338
399
 
400
+ # def copy: (**params) -> AssocNode
401
+ def copy(**params)
402
+ AssocNode.new(
403
+ params.fetch(:key) { key },
404
+ params.fetch(:value) { value },
405
+ params.fetch(:operator_loc) { operator_loc },
406
+ params.fetch(:location) { location },
407
+ )
408
+ end
409
+
339
410
  # def deconstruct: () -> Array[nil | Node]
340
411
  alias deconstruct child_nodes
341
412
 
@@ -378,6 +449,15 @@ module YARP
378
449
  [value]
379
450
  end
380
451
 
452
+ # def copy: (**params) -> AssocSplatNode
453
+ def copy(**params)
454
+ AssocSplatNode.new(
455
+ params.fetch(:value) { value },
456
+ params.fetch(:operator_loc) { operator_loc },
457
+ params.fetch(:location) { location },
458
+ )
459
+ end
460
+
381
461
  # def deconstruct: () -> Array[nil | Node]
382
462
  alias deconstruct child_nodes
383
463
 
@@ -412,6 +492,13 @@ module YARP
412
492
  []
413
493
  end
414
494
 
495
+ # def copy: (**params) -> BackReferenceReadNode
496
+ def copy(**params)
497
+ BackReferenceReadNode.new(
498
+ params.fetch(:location) { location },
499
+ )
500
+ end
501
+
415
502
  # def deconstruct: () -> Array[nil | Node]
416
503
  alias deconstruct child_nodes
417
504
 
@@ -431,22 +518,22 @@ module YARP
431
518
  # attr_reader begin_keyword_loc: Location?
432
519
  attr_reader :begin_keyword_loc
433
520
 
434
- # attr_reader statements: Node?
521
+ # attr_reader statements: StatementsNode?
435
522
  attr_reader :statements
436
523
 
437
- # attr_reader rescue_clause: Node?
524
+ # attr_reader rescue_clause: RescueNode?
438
525
  attr_reader :rescue_clause
439
526
 
440
- # attr_reader else_clause: Node?
527
+ # attr_reader else_clause: ElseNode?
441
528
  attr_reader :else_clause
442
529
 
443
- # attr_reader ensure_clause: Node?
530
+ # attr_reader ensure_clause: EnsureNode?
444
531
  attr_reader :ensure_clause
445
532
 
446
533
  # attr_reader end_keyword_loc: Location?
447
534
  attr_reader :end_keyword_loc
448
535
 
449
- # def initialize: (begin_keyword_loc: Location?, statements: Node?, rescue_clause: Node?, else_clause: Node?, ensure_clause: Node?, end_keyword_loc: Location?, location: Location) -> void
536
+ # def initialize: (begin_keyword_loc: Location?, statements: StatementsNode?, rescue_clause: RescueNode?, else_clause: ElseNode?, ensure_clause: EnsureNode?, end_keyword_loc: Location?, location: Location) -> void
450
537
  def initialize(begin_keyword_loc, statements, rescue_clause, else_clause, ensure_clause, end_keyword_loc, location)
451
538
  @begin_keyword_loc = begin_keyword_loc
452
539
  @statements = statements
@@ -471,6 +558,19 @@ module YARP
471
558
  [statements, rescue_clause, else_clause, ensure_clause]
472
559
  end
473
560
 
561
+ # def copy: (**params) -> BeginNode
562
+ def copy(**params)
563
+ BeginNode.new(
564
+ params.fetch(:begin_keyword_loc) { begin_keyword_loc },
565
+ params.fetch(:statements) { statements },
566
+ params.fetch(:rescue_clause) { rescue_clause },
567
+ params.fetch(:else_clause) { else_clause },
568
+ params.fetch(:ensure_clause) { ensure_clause },
569
+ params.fetch(:end_keyword_loc) { end_keyword_loc },
570
+ params.fetch(:location) { location },
571
+ )
572
+ end
573
+
474
574
  # def deconstruct: () -> Array[nil | Node]
475
575
  alias deconstruct child_nodes
476
576
 
@@ -518,6 +618,15 @@ module YARP
518
618
  [expression]
519
619
  end
520
620
 
621
+ # def copy: (**params) -> BlockArgumentNode
622
+ def copy(**params)
623
+ BlockArgumentNode.new(
624
+ params.fetch(:expression) { expression },
625
+ params.fetch(:operator_loc) { operator_loc },
626
+ params.fetch(:location) { location },
627
+ )
628
+ end
629
+
521
630
  # def deconstruct: () -> Array[nil | Node]
522
631
  alias deconstruct child_nodes
523
632
 
@@ -540,11 +649,11 @@ module YARP
540
649
  # attr_reader locals: Array[Symbol]
541
650
  attr_reader :locals
542
651
 
543
- # attr_reader parameters: Node?
652
+ # attr_reader parameters: BlockParametersNode?
544
653
  attr_reader :parameters
545
654
 
546
- # attr_reader statements: Node?
547
- attr_reader :statements
655
+ # attr_reader body: Node?
656
+ attr_reader :body
548
657
 
549
658
  # attr_reader opening_loc: Location
550
659
  attr_reader :opening_loc
@@ -552,11 +661,11 @@ module YARP
552
661
  # attr_reader closing_loc: Location
553
662
  attr_reader :closing_loc
554
663
 
555
- # def initialize: (locals: Array[Symbol], parameters: Node?, statements: Node?, opening_loc: Location, closing_loc: Location, location: Location) -> void
556
- def initialize(locals, parameters, statements, opening_loc, closing_loc, location)
664
+ # def initialize: (locals: Array[Symbol], parameters: BlockParametersNode?, body: Node?, opening_loc: Location, closing_loc: Location, location: Location) -> void
665
+ def initialize(locals, parameters, body, opening_loc, closing_loc, location)
557
666
  @locals = locals
558
667
  @parameters = parameters
559
- @statements = statements
668
+ @body = body
560
669
  @opening_loc = opening_loc
561
670
  @closing_loc = closing_loc
562
671
  @location = location
@@ -569,7 +678,19 @@ module YARP
569
678
 
570
679
  # def child_nodes: () -> Array[nil | Node]
571
680
  def child_nodes
572
- [parameters, statements]
681
+ [parameters, body]
682
+ end
683
+
684
+ # def copy: (**params) -> BlockNode
685
+ def copy(**params)
686
+ BlockNode.new(
687
+ params.fetch(:locals) { locals },
688
+ params.fetch(:parameters) { parameters },
689
+ params.fetch(:body) { body },
690
+ params.fetch(:opening_loc) { opening_loc },
691
+ params.fetch(:closing_loc) { closing_loc },
692
+ params.fetch(:location) { location },
693
+ )
573
694
  end
574
695
 
575
696
  # def deconstruct: () -> Array[nil | Node]
@@ -577,7 +698,7 @@ module YARP
577
698
 
578
699
  # def deconstruct_keys: (keys: Array[Symbol]) -> Hash[Symbol, nil | Node | Array[Node] | String | Token | Array[Token] | Location]
579
700
  def deconstruct_keys(keys)
580
- { locals: locals, parameters: parameters, statements: statements, opening_loc: opening_loc, closing_loc: closing_loc, location: location }
701
+ { locals: locals, parameters: parameters, body: body, opening_loc: opening_loc, closing_loc: closing_loc, location: location }
581
702
  end
582
703
 
583
704
  # def opening: () -> String
@@ -620,6 +741,15 @@ module YARP
620
741
  []
621
742
  end
622
743
 
744
+ # def copy: (**params) -> BlockParameterNode
745
+ def copy(**params)
746
+ BlockParameterNode.new(
747
+ params.fetch(:name_loc) { name_loc },
748
+ params.fetch(:operator_loc) { operator_loc },
749
+ params.fetch(:location) { location },
750
+ )
751
+ end
752
+
623
753
  # def deconstruct: () -> Array[nil | Node]
624
754
  alias deconstruct child_nodes
625
755
 
@@ -648,7 +778,7 @@ module YARP
648
778
  # ^^^^^^^^^^^^^^^^^
649
779
  # end
650
780
  class BlockParametersNode < Node
651
- # attr_reader parameters: Node?
781
+ # attr_reader parameters: ParametersNode?
652
782
  attr_reader :parameters
653
783
 
654
784
  # attr_reader locals: Array[Location]
@@ -660,7 +790,7 @@ module YARP
660
790
  # attr_reader closing_loc: Location?
661
791
  attr_reader :closing_loc
662
792
 
663
- # def initialize: (parameters: Node?, locals: Array[Location], opening_loc: Location?, closing_loc: Location?, location: Location) -> void
793
+ # def initialize: (parameters: ParametersNode?, locals: Array[Location], opening_loc: Location?, closing_loc: Location?, location: Location) -> void
664
794
  def initialize(parameters, locals, opening_loc, closing_loc, location)
665
795
  @parameters = parameters
666
796
  @locals = locals
@@ -679,6 +809,17 @@ module YARP
679
809
  [parameters]
680
810
  end
681
811
 
812
+ # def copy: (**params) -> BlockParametersNode
813
+ def copy(**params)
814
+ BlockParametersNode.new(
815
+ params.fetch(:parameters) { parameters },
816
+ params.fetch(:locals) { locals },
817
+ params.fetch(:opening_loc) { opening_loc },
818
+ params.fetch(:closing_loc) { closing_loc },
819
+ params.fetch(:location) { location },
820
+ )
821
+ end
822
+
682
823
  # def deconstruct: () -> Array[nil | Node]
683
824
  alias deconstruct child_nodes
684
825
 
@@ -703,13 +844,13 @@ module YARP
703
844
  # break foo
704
845
  # ^^^^^^^^^
705
846
  class BreakNode < Node
706
- # attr_reader arguments: Node?
847
+ # attr_reader arguments: ArgumentsNode?
707
848
  attr_reader :arguments
708
849
 
709
850
  # attr_reader keyword_loc: Location
710
851
  attr_reader :keyword_loc
711
852
 
712
- # def initialize: (arguments: Node?, keyword_loc: Location, location: Location) -> void
853
+ # def initialize: (arguments: ArgumentsNode?, keyword_loc: Location, location: Location) -> void
713
854
  def initialize(arguments, keyword_loc, location)
714
855
  @arguments = arguments
715
856
  @keyword_loc = keyword_loc
@@ -726,6 +867,15 @@ module YARP
726
867
  [arguments]
727
868
  end
728
869
 
870
+ # def copy: (**params) -> BreakNode
871
+ def copy(**params)
872
+ BreakNode.new(
873
+ params.fetch(:arguments) { arguments },
874
+ params.fetch(:keyword_loc) { keyword_loc },
875
+ params.fetch(:location) { location },
876
+ )
877
+ end
878
+
729
879
  # def deconstruct: () -> Array[nil | Node]
730
880
  alias deconstruct child_nodes
731
881
 
@@ -772,13 +922,13 @@ module YARP
772
922
  # attr_reader opening_loc: Location?
773
923
  attr_reader :opening_loc
774
924
 
775
- # attr_reader arguments: Node?
925
+ # attr_reader arguments: ArgumentsNode?
776
926
  attr_reader :arguments
777
927
 
778
928
  # attr_reader closing_loc: Location?
779
929
  attr_reader :closing_loc
780
930
 
781
- # attr_reader block: Node?
931
+ # attr_reader block: BlockNode?
782
932
  attr_reader :block
783
933
 
784
934
  # attr_reader flags: Integer
@@ -787,7 +937,7 @@ module YARP
787
937
  # attr_reader name: String
788
938
  attr_reader :name
789
939
 
790
- # def initialize: (receiver: Node?, operator_loc: Location?, message_loc: Location?, opening_loc: Location?, arguments: Node?, closing_loc: Location?, block: Node?, flags: Integer, name: String, location: Location) -> void
940
+ # def initialize: (receiver: Node?, operator_loc: Location?, message_loc: Location?, opening_loc: Location?, arguments: ArgumentsNode?, closing_loc: Location?, block: BlockNode?, flags: Integer, name: String, location: Location) -> void
791
941
  def initialize(receiver, operator_loc, message_loc, opening_loc, arguments, closing_loc, block, flags, name, location)
792
942
  @receiver = receiver
793
943
  @operator_loc = operator_loc
@@ -811,6 +961,22 @@ module YARP
811
961
  [receiver, arguments, block]
812
962
  end
813
963
 
964
+ # def copy: (**params) -> CallNode
965
+ def copy(**params)
966
+ CallNode.new(
967
+ params.fetch(:receiver) { receiver },
968
+ params.fetch(:operator_loc) { operator_loc },
969
+ params.fetch(:message_loc) { message_loc },
970
+ params.fetch(:opening_loc) { opening_loc },
971
+ params.fetch(:arguments) { arguments },
972
+ params.fetch(:closing_loc) { closing_loc },
973
+ params.fetch(:block) { block },
974
+ params.fetch(:flags) { flags },
975
+ params.fetch(:name) { name },
976
+ params.fetch(:location) { location },
977
+ )
978
+ end
979
+
814
980
  # def deconstruct: () -> Array[nil | Node]
815
981
  alias deconstruct child_nodes
816
982
 
@@ -855,7 +1021,7 @@ module YARP
855
1021
  # foo.bar &&= value
856
1022
  # ^^^^^^^^^^^^^^^^^
857
1023
  class CallOperatorAndWriteNode < Node
858
- # attr_reader target: Node
1024
+ # attr_reader target: CallNode
859
1025
  attr_reader :target
860
1026
 
861
1027
  # attr_reader operator_loc: Location
@@ -864,7 +1030,7 @@ module YARP
864
1030
  # attr_reader value: Node
865
1031
  attr_reader :value
866
1032
 
867
- # def initialize: (target: Node, operator_loc: Location, value: Node, location: Location) -> void
1033
+ # def initialize: (target: CallNode, operator_loc: Location, value: Node, location: Location) -> void
868
1034
  def initialize(target, operator_loc, value, location)
869
1035
  @target = target
870
1036
  @operator_loc = operator_loc
@@ -882,6 +1048,16 @@ module YARP
882
1048
  [target, value]
883
1049
  end
884
1050
 
1051
+ # def copy: (**params) -> CallOperatorAndWriteNode
1052
+ def copy(**params)
1053
+ CallOperatorAndWriteNode.new(
1054
+ params.fetch(:target) { target },
1055
+ params.fetch(:operator_loc) { operator_loc },
1056
+ params.fetch(:value) { value },
1057
+ params.fetch(:location) { location },
1058
+ )
1059
+ end
1060
+
885
1061
  # def deconstruct: () -> Array[nil | Node]
886
1062
  alias deconstruct child_nodes
887
1063
 
@@ -901,7 +1077,7 @@ module YARP
901
1077
  # foo.bar ||= value
902
1078
  # ^^^^^^^^^^^^^^^^^
903
1079
  class CallOperatorOrWriteNode < Node
904
- # attr_reader target: Node
1080
+ # attr_reader target: CallNode
905
1081
  attr_reader :target
906
1082
 
907
1083
  # attr_reader value: Node
@@ -910,7 +1086,7 @@ module YARP
910
1086
  # attr_reader operator_loc: Location
911
1087
  attr_reader :operator_loc
912
1088
 
913
- # def initialize: (target: Node, value: Node, operator_loc: Location, location: Location) -> void
1089
+ # def initialize: (target: CallNode, value: Node, operator_loc: Location, location: Location) -> void
914
1090
  def initialize(target, value, operator_loc, location)
915
1091
  @target = target
916
1092
  @value = value
@@ -928,6 +1104,16 @@ module YARP
928
1104
  [target, value]
929
1105
  end
930
1106
 
1107
+ # def copy: (**params) -> CallOperatorOrWriteNode
1108
+ def copy(**params)
1109
+ CallOperatorOrWriteNode.new(
1110
+ params.fetch(:target) { target },
1111
+ params.fetch(:value) { value },
1112
+ params.fetch(:operator_loc) { operator_loc },
1113
+ params.fetch(:location) { location },
1114
+ )
1115
+ end
1116
+
931
1117
  # def deconstruct: () -> Array[nil | Node]
932
1118
  alias deconstruct child_nodes
933
1119
 
@@ -947,7 +1133,7 @@ module YARP
947
1133
  # foo.bar += baz
948
1134
  # ^^^^^^^^^^^^^^
949
1135
  class CallOperatorWriteNode < Node
950
- # attr_reader target: Node
1136
+ # attr_reader target: CallNode
951
1137
  attr_reader :target
952
1138
 
953
1139
  # attr_reader operator_loc: Location
@@ -959,7 +1145,7 @@ module YARP
959
1145
  # attr_reader operator_id: Symbol
960
1146
  attr_reader :operator_id
961
1147
 
962
- # def initialize: (target: Node, operator_loc: Location, value: Node, operator_id: Symbol, location: Location) -> void
1148
+ # def initialize: (target: CallNode, operator_loc: Location, value: Node, operator_id: Symbol, location: Location) -> void
963
1149
  def initialize(target, operator_loc, value, operator_id, location)
964
1150
  @target = target
965
1151
  @operator_loc = operator_loc
@@ -978,6 +1164,17 @@ module YARP
978
1164
  [target, value]
979
1165
  end
980
1166
 
1167
+ # def copy: (**params) -> CallOperatorWriteNode
1168
+ def copy(**params)
1169
+ CallOperatorWriteNode.new(
1170
+ params.fetch(:target) { target },
1171
+ params.fetch(:operator_loc) { operator_loc },
1172
+ params.fetch(:value) { value },
1173
+ params.fetch(:operator_id) { operator_id },
1174
+ params.fetch(:location) { location },
1175
+ )
1176
+ end
1177
+
981
1178
  # def deconstruct: () -> Array[nil | Node]
982
1179
  alias deconstruct child_nodes
983
1180
 
@@ -1024,6 +1221,16 @@ module YARP
1024
1221
  [value, target]
1025
1222
  end
1026
1223
 
1224
+ # def copy: (**params) -> CapturePatternNode
1225
+ def copy(**params)
1226
+ CapturePatternNode.new(
1227
+ params.fetch(:value) { value },
1228
+ params.fetch(:target) { target },
1229
+ params.fetch(:operator_loc) { operator_loc },
1230
+ params.fetch(:location) { location },
1231
+ )
1232
+ end
1233
+
1027
1234
  # def deconstruct: () -> Array[nil | Node]
1028
1235
  alias deconstruct child_nodes
1029
1236
 
@@ -1051,7 +1258,7 @@ module YARP
1051
1258
  # attr_reader conditions: Array[Node]
1052
1259
  attr_reader :conditions
1053
1260
 
1054
- # attr_reader consequent: Node?
1261
+ # attr_reader consequent: ElseNode?
1055
1262
  attr_reader :consequent
1056
1263
 
1057
1264
  # attr_reader case_keyword_loc: Location
@@ -1060,7 +1267,7 @@ module YARP
1060
1267
  # attr_reader end_keyword_loc: Location
1061
1268
  attr_reader :end_keyword_loc
1062
1269
 
1063
- # def initialize: (predicate: Node?, conditions: Array[Node], consequent: Node?, case_keyword_loc: Location, end_keyword_loc: Location, location: Location) -> void
1270
+ # def initialize: (predicate: Node?, conditions: Array[Node], consequent: ElseNode?, case_keyword_loc: Location, end_keyword_loc: Location, location: Location) -> void
1064
1271
  def initialize(predicate, conditions, consequent, case_keyword_loc, end_keyword_loc, location)
1065
1272
  @predicate = predicate
1066
1273
  @conditions = conditions
@@ -1080,6 +1287,18 @@ module YARP
1080
1287
  [predicate, *conditions, consequent]
1081
1288
  end
1082
1289
 
1290
+ # def copy: (**params) -> CaseNode
1291
+ def copy(**params)
1292
+ CaseNode.new(
1293
+ params.fetch(:predicate) { predicate },
1294
+ params.fetch(:conditions) { conditions },
1295
+ params.fetch(:consequent) { consequent },
1296
+ params.fetch(:case_keyword_loc) { case_keyword_loc },
1297
+ params.fetch(:end_keyword_loc) { end_keyword_loc },
1298
+ params.fetch(:location) { location },
1299
+ )
1300
+ end
1301
+
1083
1302
  # def deconstruct: () -> Array[nil | Node]
1084
1303
  alias deconstruct child_nodes
1085
1304
 
@@ -1119,21 +1338,25 @@ module YARP
1119
1338
  # attr_reader superclass: Node?
1120
1339
  attr_reader :superclass
1121
1340
 
1122
- # attr_reader statements: Node?
1123
- attr_reader :statements
1341
+ # attr_reader body: Node?
1342
+ attr_reader :body
1124
1343
 
1125
1344
  # attr_reader end_keyword_loc: Location
1126
1345
  attr_reader :end_keyword_loc
1127
1346
 
1128
- # def initialize: (locals: Array[Symbol], class_keyword_loc: Location, constant_path: Node, inheritance_operator_loc: Location?, superclass: Node?, statements: Node?, end_keyword_loc: Location, location: Location) -> void
1129
- def initialize(locals, class_keyword_loc, constant_path, inheritance_operator_loc, superclass, statements, end_keyword_loc, location)
1347
+ # attr_reader name: String
1348
+ attr_reader :name
1349
+
1350
+ # def initialize: (locals: Array[Symbol], class_keyword_loc: Location, constant_path: Node, inheritance_operator_loc: Location?, superclass: Node?, body: Node?, end_keyword_loc: Location, name: String, location: Location) -> void
1351
+ def initialize(locals, class_keyword_loc, constant_path, inheritance_operator_loc, superclass, body, end_keyword_loc, name, location)
1130
1352
  @locals = locals
1131
1353
  @class_keyword_loc = class_keyword_loc
1132
1354
  @constant_path = constant_path
1133
1355
  @inheritance_operator_loc = inheritance_operator_loc
1134
1356
  @superclass = superclass
1135
- @statements = statements
1357
+ @body = body
1136
1358
  @end_keyword_loc = end_keyword_loc
1359
+ @name = name
1137
1360
  @location = location
1138
1361
  end
1139
1362
 
@@ -1144,7 +1367,22 @@ module YARP
1144
1367
 
1145
1368
  # def child_nodes: () -> Array[nil | Node]
1146
1369
  def child_nodes
1147
- [constant_path, superclass, statements]
1370
+ [constant_path, superclass, body]
1371
+ end
1372
+
1373
+ # def copy: (**params) -> ClassNode
1374
+ def copy(**params)
1375
+ ClassNode.new(
1376
+ params.fetch(:locals) { locals },
1377
+ params.fetch(:class_keyword_loc) { class_keyword_loc },
1378
+ params.fetch(:constant_path) { constant_path },
1379
+ params.fetch(:inheritance_operator_loc) { inheritance_operator_loc },
1380
+ params.fetch(:superclass) { superclass },
1381
+ params.fetch(:body) { body },
1382
+ params.fetch(:end_keyword_loc) { end_keyword_loc },
1383
+ params.fetch(:name) { name },
1384
+ params.fetch(:location) { location },
1385
+ )
1148
1386
  end
1149
1387
 
1150
1388
  # def deconstruct: () -> Array[nil | Node]
@@ -1152,7 +1390,7 @@ module YARP
1152
1390
 
1153
1391
  # def deconstruct_keys: (keys: Array[Symbol]) -> Hash[Symbol, nil | Node | Array[Node] | String | Token | Array[Token] | Location]
1154
1392
  def deconstruct_keys(keys)
1155
- { locals: locals, class_keyword_loc: class_keyword_loc, constant_path: constant_path, inheritance_operator_loc: inheritance_operator_loc, superclass: superclass, statements: statements, end_keyword_loc: end_keyword_loc, location: location }
1393
+ { locals: locals, class_keyword_loc: class_keyword_loc, constant_path: constant_path, inheritance_operator_loc: inheritance_operator_loc, superclass: superclass, body: body, end_keyword_loc: end_keyword_loc, name: name, location: location }
1156
1394
  end
1157
1395
 
1158
1396
  # def class_keyword: () -> String
@@ -1175,7 +1413,7 @@ module YARP
1175
1413
  #
1176
1414
  # @@target &&= value
1177
1415
  # ^^^^^^^^^^^^^^^^
1178
- class ClassVariableOperatorAndWriteNode < Node
1416
+ class ClassVariableAndWriteNode < Node
1179
1417
  # attr_reader name_loc: Location
1180
1418
  attr_reader :name_loc
1181
1419
 
@@ -1195,7 +1433,7 @@ module YARP
1195
1433
 
1196
1434
  # def accept: (visitor: Visitor) -> void
1197
1435
  def accept(visitor)
1198
- visitor.visit_class_variable_operator_and_write_node(self)
1436
+ visitor.visit_class_variable_and_write_node(self)
1199
1437
  end
1200
1438
 
1201
1439
  # def child_nodes: () -> Array[nil | Node]
@@ -1203,6 +1441,16 @@ module YARP
1203
1441
  [value]
1204
1442
  end
1205
1443
 
1444
+ # def copy: (**params) -> ClassVariableAndWriteNode
1445
+ def copy(**params)
1446
+ ClassVariableAndWriteNode.new(
1447
+ params.fetch(:name_loc) { name_loc },
1448
+ params.fetch(:operator_loc) { operator_loc },
1449
+ params.fetch(:value) { value },
1450
+ params.fetch(:location) { location },
1451
+ )
1452
+ end
1453
+
1206
1454
  # def deconstruct: () -> Array[nil | Node]
1207
1455
  alias deconstruct child_nodes
1208
1456
 
@@ -1222,11 +1470,11 @@ module YARP
1222
1470
  end
1223
1471
  end
1224
1472
 
1225
- # Represents the use of the `||=` operator for assignment to a class variable.
1473
+ # Represents assigning to a class variable using an operator that isn't `=`.
1226
1474
  #
1227
- # @@target ||= value
1228
- # ^^^^^^^^^^^^^^^^^^
1229
- class ClassVariableOperatorOrWriteNode < Node
1475
+ # @@target += value
1476
+ # ^^^^^^^^^^^^^^^^^
1477
+ class ClassVariableOperatorWriteNode < Node
1230
1478
  # attr_reader name_loc: Location
1231
1479
  attr_reader :name_loc
1232
1480
 
@@ -1236,17 +1484,21 @@ module YARP
1236
1484
  # attr_reader value: Node
1237
1485
  attr_reader :value
1238
1486
 
1239
- # def initialize: (name_loc: Location, operator_loc: Location, value: Node, location: Location) -> void
1240
- def initialize(name_loc, operator_loc, value, location)
1487
+ # attr_reader operator: Symbol
1488
+ attr_reader :operator
1489
+
1490
+ # def initialize: (name_loc: Location, operator_loc: Location, value: Node, operator: Symbol, location: Location) -> void
1491
+ def initialize(name_loc, operator_loc, value, operator, location)
1241
1492
  @name_loc = name_loc
1242
1493
  @operator_loc = operator_loc
1243
1494
  @value = value
1495
+ @operator = operator
1244
1496
  @location = location
1245
1497
  end
1246
1498
 
1247
1499
  # def accept: (visitor: Visitor) -> void
1248
1500
  def accept(visitor)
1249
- visitor.visit_class_variable_operator_or_write_node(self)
1501
+ visitor.visit_class_variable_operator_write_node(self)
1250
1502
  end
1251
1503
 
1252
1504
  # def child_nodes: () -> Array[nil | Node]
@@ -1254,30 +1506,36 @@ module YARP
1254
1506
  [value]
1255
1507
  end
1256
1508
 
1509
+ # def copy: (**params) -> ClassVariableOperatorWriteNode
1510
+ def copy(**params)
1511
+ ClassVariableOperatorWriteNode.new(
1512
+ params.fetch(:name_loc) { name_loc },
1513
+ params.fetch(:operator_loc) { operator_loc },
1514
+ params.fetch(:value) { value },
1515
+ params.fetch(:operator) { operator },
1516
+ params.fetch(:location) { location },
1517
+ )
1518
+ end
1519
+
1257
1520
  # def deconstruct: () -> Array[nil | Node]
1258
1521
  alias deconstruct child_nodes
1259
1522
 
1260
1523
  # def deconstruct_keys: (keys: Array[Symbol]) -> Hash[Symbol, nil | Node | Array[Node] | String | Token | Array[Token] | Location]
1261
1524
  def deconstruct_keys(keys)
1262
- { name_loc: name_loc, operator_loc: operator_loc, value: value, location: location }
1525
+ { name_loc: name_loc, operator_loc: operator_loc, value: value, operator: operator, location: location }
1263
1526
  end
1264
1527
 
1265
1528
  # def name: () -> String
1266
1529
  def name
1267
1530
  name_loc.slice
1268
1531
  end
1269
-
1270
- # def operator: () -> String
1271
- def operator
1272
- operator_loc.slice
1273
- end
1274
1532
  end
1275
1533
 
1276
- # Represents assigning to a class variable using an operator that isn't `=`.
1534
+ # Represents the use of the `||=` operator for assignment to a class variable.
1277
1535
  #
1278
- # @@target += value
1279
- # ^^^^^^^^^^^^^^^^^
1280
- class ClassVariableOperatorWriteNode < Node
1536
+ # @@target ||= value
1537
+ # ^^^^^^^^^^^^^^^^^^
1538
+ class ClassVariableOrWriteNode < Node
1281
1539
  # attr_reader name_loc: Location
1282
1540
  attr_reader :name_loc
1283
1541
 
@@ -1287,21 +1545,17 @@ module YARP
1287
1545
  # attr_reader value: Node
1288
1546
  attr_reader :value
1289
1547
 
1290
- # attr_reader operator: Symbol
1291
- attr_reader :operator
1292
-
1293
- # def initialize: (name_loc: Location, operator_loc: Location, value: Node, operator: Symbol, location: Location) -> void
1294
- def initialize(name_loc, operator_loc, value, operator, location)
1548
+ # def initialize: (name_loc: Location, operator_loc: Location, value: Node, location: Location) -> void
1549
+ def initialize(name_loc, operator_loc, value, location)
1295
1550
  @name_loc = name_loc
1296
1551
  @operator_loc = operator_loc
1297
1552
  @value = value
1298
- @operator = operator
1299
1553
  @location = location
1300
1554
  end
1301
1555
 
1302
1556
  # def accept: (visitor: Visitor) -> void
1303
1557
  def accept(visitor)
1304
- visitor.visit_class_variable_operator_write_node(self)
1558
+ visitor.visit_class_variable_or_write_node(self)
1305
1559
  end
1306
1560
 
1307
1561
  # def child_nodes: () -> Array[nil | Node]
@@ -1309,18 +1563,33 @@ module YARP
1309
1563
  [value]
1310
1564
  end
1311
1565
 
1566
+ # def copy: (**params) -> ClassVariableOrWriteNode
1567
+ def copy(**params)
1568
+ ClassVariableOrWriteNode.new(
1569
+ params.fetch(:name_loc) { name_loc },
1570
+ params.fetch(:operator_loc) { operator_loc },
1571
+ params.fetch(:value) { value },
1572
+ params.fetch(:location) { location },
1573
+ )
1574
+ end
1575
+
1312
1576
  # def deconstruct: () -> Array[nil | Node]
1313
1577
  alias deconstruct child_nodes
1314
1578
 
1315
1579
  # def deconstruct_keys: (keys: Array[Symbol]) -> Hash[Symbol, nil | Node | Array[Node] | String | Token | Array[Token] | Location]
1316
1580
  def deconstruct_keys(keys)
1317
- { name_loc: name_loc, operator_loc: operator_loc, value: value, operator: operator, location: location }
1581
+ { name_loc: name_loc, operator_loc: operator_loc, value: value, location: location }
1318
1582
  end
1319
1583
 
1320
1584
  # def name: () -> String
1321
1585
  def name
1322
1586
  name_loc.slice
1323
1587
  end
1588
+
1589
+ # def operator: () -> String
1590
+ def operator
1591
+ operator_loc.slice
1592
+ end
1324
1593
  end
1325
1594
 
1326
1595
  # Represents referencing a class variable.
@@ -1343,6 +1612,49 @@ module YARP
1343
1612
  []
1344
1613
  end
1345
1614
 
1615
+ # def copy: (**params) -> ClassVariableReadNode
1616
+ def copy(**params)
1617
+ ClassVariableReadNode.new(
1618
+ params.fetch(:location) { location },
1619
+ )
1620
+ end
1621
+
1622
+ # def deconstruct: () -> Array[nil | Node]
1623
+ alias deconstruct child_nodes
1624
+
1625
+ # def deconstruct_keys: (keys: Array[Symbol]) -> Hash[Symbol, nil | Node | Array[Node] | String | Token | Array[Token] | Location]
1626
+ def deconstruct_keys(keys)
1627
+ { location: location }
1628
+ end
1629
+ end
1630
+
1631
+ # Represents writing to a class variable in a context that doesn't have an explicit value.
1632
+ #
1633
+ # @@foo, @@bar = baz
1634
+ # ^^^^^ ^^^^^
1635
+ class ClassVariableTargetNode < Node
1636
+ # def initialize: (location: Location) -> void
1637
+ def initialize(location)
1638
+ @location = location
1639
+ end
1640
+
1641
+ # def accept: (visitor: Visitor) -> void
1642
+ def accept(visitor)
1643
+ visitor.visit_class_variable_target_node(self)
1644
+ end
1645
+
1646
+ # def child_nodes: () -> Array[nil | Node]
1647
+ def child_nodes
1648
+ []
1649
+ end
1650
+
1651
+ # def copy: (**params) -> ClassVariableTargetNode
1652
+ def copy(**params)
1653
+ ClassVariableTargetNode.new(
1654
+ params.fetch(:location) { location },
1655
+ )
1656
+ end
1657
+
1346
1658
  # def deconstruct: () -> Array[nil | Node]
1347
1659
  alias deconstruct child_nodes
1348
1660
 
@@ -1384,6 +1696,16 @@ module YARP
1384
1696
  [value]
1385
1697
  end
1386
1698
 
1699
+ # def copy: (**params) -> ClassVariableWriteNode
1700
+ def copy(**params)
1701
+ ClassVariableWriteNode.new(
1702
+ params.fetch(:name_loc) { name_loc },
1703
+ params.fetch(:value) { value },
1704
+ params.fetch(:operator_loc) { operator_loc },
1705
+ params.fetch(:location) { location },
1706
+ )
1707
+ end
1708
+
1387
1709
  # def deconstruct: () -> Array[nil | Node]
1388
1710
  alias deconstruct child_nodes
1389
1711
 
@@ -1407,7 +1729,7 @@ module YARP
1407
1729
  #
1408
1730
  # Target &&= value
1409
1731
  # ^^^^^^^^^^^^^^^^
1410
- class ConstantOperatorAndWriteNode < Node
1732
+ class ConstantAndWriteNode < Node
1411
1733
  # attr_reader name_loc: Location
1412
1734
  attr_reader :name_loc
1413
1735
 
@@ -1427,7 +1749,7 @@ module YARP
1427
1749
 
1428
1750
  # def accept: (visitor: Visitor) -> void
1429
1751
  def accept(visitor)
1430
- visitor.visit_constant_operator_and_write_node(self)
1752
+ visitor.visit_constant_and_write_node(self)
1431
1753
  end
1432
1754
 
1433
1755
  # def child_nodes: () -> Array[nil | Node]
@@ -1435,6 +1757,16 @@ module YARP
1435
1757
  [value]
1436
1758
  end
1437
1759
 
1760
+ # def copy: (**params) -> ConstantAndWriteNode
1761
+ def copy(**params)
1762
+ ConstantAndWriteNode.new(
1763
+ params.fetch(:name_loc) { name_loc },
1764
+ params.fetch(:operator_loc) { operator_loc },
1765
+ params.fetch(:value) { value },
1766
+ params.fetch(:location) { location },
1767
+ )
1768
+ end
1769
+
1438
1770
  # def deconstruct: () -> Array[nil | Node]
1439
1771
  alias deconstruct child_nodes
1440
1772
 
@@ -1454,11 +1786,72 @@ module YARP
1454
1786
  end
1455
1787
  end
1456
1788
 
1789
+ # Represents assigning to a constant using an operator that isn't `=`.
1790
+ #
1791
+ # Target += value
1792
+ # ^^^^^^^^^^^^^^^
1793
+ class ConstantOperatorWriteNode < Node
1794
+ # attr_reader name_loc: Location
1795
+ attr_reader :name_loc
1796
+
1797
+ # attr_reader operator_loc: Location
1798
+ attr_reader :operator_loc
1799
+
1800
+ # attr_reader value: Node
1801
+ attr_reader :value
1802
+
1803
+ # attr_reader operator: Symbol
1804
+ attr_reader :operator
1805
+
1806
+ # def initialize: (name_loc: Location, operator_loc: Location, value: Node, operator: Symbol, location: Location) -> void
1807
+ def initialize(name_loc, operator_loc, value, operator, location)
1808
+ @name_loc = name_loc
1809
+ @operator_loc = operator_loc
1810
+ @value = value
1811
+ @operator = operator
1812
+ @location = location
1813
+ end
1814
+
1815
+ # def accept: (visitor: Visitor) -> void
1816
+ def accept(visitor)
1817
+ visitor.visit_constant_operator_write_node(self)
1818
+ end
1819
+
1820
+ # def child_nodes: () -> Array[nil | Node]
1821
+ def child_nodes
1822
+ [value]
1823
+ end
1824
+
1825
+ # def copy: (**params) -> ConstantOperatorWriteNode
1826
+ def copy(**params)
1827
+ ConstantOperatorWriteNode.new(
1828
+ params.fetch(:name_loc) { name_loc },
1829
+ params.fetch(:operator_loc) { operator_loc },
1830
+ params.fetch(:value) { value },
1831
+ params.fetch(:operator) { operator },
1832
+ params.fetch(:location) { location },
1833
+ )
1834
+ end
1835
+
1836
+ # def deconstruct: () -> Array[nil | Node]
1837
+ alias deconstruct child_nodes
1838
+
1839
+ # def deconstruct_keys: (keys: Array[Symbol]) -> Hash[Symbol, nil | Node | Array[Node] | String | Token | Array[Token] | Location]
1840
+ def deconstruct_keys(keys)
1841
+ { name_loc: name_loc, operator_loc: operator_loc, value: value, operator: operator, location: location }
1842
+ end
1843
+
1844
+ # def name: () -> String
1845
+ def name
1846
+ name_loc.slice
1847
+ end
1848
+ end
1849
+
1457
1850
  # Represents the use of the `||=` operator for assignment to a constant.
1458
1851
  #
1459
1852
  # Target ||= value
1460
1853
  # ^^^^^^^^^^^^^^^^
1461
- class ConstantOperatorOrWriteNode < Node
1854
+ class ConstantOrWriteNode < Node
1462
1855
  # attr_reader name_loc: Location
1463
1856
  attr_reader :name_loc
1464
1857
 
@@ -1478,7 +1871,7 @@ module YARP
1478
1871
 
1479
1872
  # def accept: (visitor: Visitor) -> void
1480
1873
  def accept(visitor)
1481
- visitor.visit_constant_operator_or_write_node(self)
1874
+ visitor.visit_constant_or_write_node(self)
1482
1875
  end
1483
1876
 
1484
1877
  # def child_nodes: () -> Array[nil | Node]
@@ -1486,6 +1879,16 @@ module YARP
1486
1879
  [value]
1487
1880
  end
1488
1881
 
1882
+ # def copy: (**params) -> ConstantOrWriteNode
1883
+ def copy(**params)
1884
+ ConstantOrWriteNode.new(
1885
+ params.fetch(:name_loc) { name_loc },
1886
+ params.fetch(:operator_loc) { operator_loc },
1887
+ params.fetch(:value) { value },
1888
+ params.fetch(:location) { location },
1889
+ )
1890
+ end
1891
+
1489
1892
  # def deconstruct: () -> Array[nil | Node]
1490
1893
  alias deconstruct child_nodes
1491
1894
 
@@ -1505,13 +1908,13 @@ module YARP
1505
1908
  end
1506
1909
  end
1507
1910
 
1508
- # Represents assigning to a constant using an operator that isn't `=`.
1911
+ # Represents the use of the `&&=` operator for assignment to a constant path.
1509
1912
  #
1510
- # Target += value
1511
- # ^^^^^^^^^^^^^^^
1512
- class ConstantOperatorWriteNode < Node
1513
- # attr_reader name_loc: Location
1514
- attr_reader :name_loc
1913
+ # Parent::Child &&= value
1914
+ # ^^^^^^^^^^^^^^^^^^^^^^^
1915
+ class ConstantPathAndWriteNode < Node
1916
+ # attr_reader target: ConstantPathNode
1917
+ attr_reader :target
1515
1918
 
1516
1919
  # attr_reader operator_loc: Location
1517
1920
  attr_reader :operator_loc
@@ -1519,26 +1922,32 @@ module YARP
1519
1922
  # attr_reader value: Node
1520
1923
  attr_reader :value
1521
1924
 
1522
- # attr_reader operator: Symbol
1523
- attr_reader :operator
1524
-
1525
- # def initialize: (name_loc: Location, operator_loc: Location, value: Node, operator: Symbol, location: Location) -> void
1526
- def initialize(name_loc, operator_loc, value, operator, location)
1527
- @name_loc = name_loc
1925
+ # def initialize: (target: ConstantPathNode, operator_loc: Location, value: Node, location: Location) -> void
1926
+ def initialize(target, operator_loc, value, location)
1927
+ @target = target
1528
1928
  @operator_loc = operator_loc
1529
1929
  @value = value
1530
- @operator = operator
1531
1930
  @location = location
1532
1931
  end
1533
1932
 
1534
1933
  # def accept: (visitor: Visitor) -> void
1535
1934
  def accept(visitor)
1536
- visitor.visit_constant_operator_write_node(self)
1935
+ visitor.visit_constant_path_and_write_node(self)
1537
1936
  end
1538
1937
 
1539
1938
  # def child_nodes: () -> Array[nil | Node]
1540
1939
  def child_nodes
1541
- [value]
1940
+ [target, value]
1941
+ end
1942
+
1943
+ # def copy: (**params) -> ConstantPathAndWriteNode
1944
+ def copy(**params)
1945
+ ConstantPathAndWriteNode.new(
1946
+ params.fetch(:target) { target },
1947
+ params.fetch(:operator_loc) { operator_loc },
1948
+ params.fetch(:value) { value },
1949
+ params.fetch(:location) { location },
1950
+ )
1542
1951
  end
1543
1952
 
1544
1953
  # def deconstruct: () -> Array[nil | Node]
@@ -1546,12 +1955,12 @@ module YARP
1546
1955
 
1547
1956
  # def deconstruct_keys: (keys: Array[Symbol]) -> Hash[Symbol, nil | Node | Array[Node] | String | Token | Array[Token] | Location]
1548
1957
  def deconstruct_keys(keys)
1549
- { name_loc: name_loc, operator_loc: operator_loc, value: value, operator: operator, location: location }
1958
+ { target: target, operator_loc: operator_loc, value: value, location: location }
1550
1959
  end
1551
1960
 
1552
- # def name: () -> String
1553
- def name
1554
- name_loc.slice
1961
+ # def operator: () -> String
1962
+ def operator
1963
+ operator_loc.slice
1555
1964
  end
1556
1965
  end
1557
1966
 
@@ -1587,6 +1996,16 @@ module YARP
1587
1996
  [parent, child]
1588
1997
  end
1589
1998
 
1999
+ # def copy: (**params) -> ConstantPathNode
2000
+ def copy(**params)
2001
+ ConstantPathNode.new(
2002
+ params.fetch(:parent) { parent },
2003
+ params.fetch(:child) { child },
2004
+ params.fetch(:delimiter_loc) { delimiter_loc },
2005
+ params.fetch(:location) { location },
2006
+ )
2007
+ end
2008
+
1590
2009
  # def deconstruct: () -> Array[nil | Node]
1591
2010
  alias deconstruct child_nodes
1592
2011
 
@@ -1601,12 +2020,12 @@ module YARP
1601
2020
  end
1602
2021
  end
1603
2022
 
1604
- # Represents the use of the `&&=` operator for assignment to a constant path.
2023
+ # Represents assigning to a constant path using an operator that isn't `=`.
1605
2024
  #
1606
- # Parent::Child &&= value
1607
- # ^^^^^^^^^^^^^^^^^^^^^^^
1608
- class ConstantPathOperatorAndWriteNode < Node
1609
- # attr_reader target: Node
2025
+ # Parent::Child += value
2026
+ # ^^^^^^^^^^^^^^^^^^^^^^
2027
+ class ConstantPathOperatorWriteNode < Node
2028
+ # attr_reader target: ConstantPathNode
1610
2029
  attr_reader :target
1611
2030
 
1612
2031
  # attr_reader operator_loc: Location
@@ -1615,17 +2034,21 @@ module YARP
1615
2034
  # attr_reader value: Node
1616
2035
  attr_reader :value
1617
2036
 
1618
- # def initialize: (target: Node, operator_loc: Location, value: Node, location: Location) -> void
1619
- def initialize(target, operator_loc, value, location)
2037
+ # attr_reader operator: Symbol
2038
+ attr_reader :operator
2039
+
2040
+ # def initialize: (target: ConstantPathNode, operator_loc: Location, value: Node, operator: Symbol, location: Location) -> void
2041
+ def initialize(target, operator_loc, value, operator, location)
1620
2042
  @target = target
1621
2043
  @operator_loc = operator_loc
1622
2044
  @value = value
2045
+ @operator = operator
1623
2046
  @location = location
1624
2047
  end
1625
2048
 
1626
2049
  # def accept: (visitor: Visitor) -> void
1627
2050
  def accept(visitor)
1628
- visitor.visit_constant_path_operator_and_write_node(self)
2051
+ visitor.visit_constant_path_operator_write_node(self)
1629
2052
  end
1630
2053
 
1631
2054
  # def child_nodes: () -> Array[nil | Node]
@@ -1633,17 +2056,23 @@ module YARP
1633
2056
  [target, value]
1634
2057
  end
1635
2058
 
2059
+ # def copy: (**params) -> ConstantPathOperatorWriteNode
2060
+ def copy(**params)
2061
+ ConstantPathOperatorWriteNode.new(
2062
+ params.fetch(:target) { target },
2063
+ params.fetch(:operator_loc) { operator_loc },
2064
+ params.fetch(:value) { value },
2065
+ params.fetch(:operator) { operator },
2066
+ params.fetch(:location) { location },
2067
+ )
2068
+ end
2069
+
1636
2070
  # def deconstruct: () -> Array[nil | Node]
1637
2071
  alias deconstruct child_nodes
1638
2072
 
1639
2073
  # def deconstruct_keys: (keys: Array[Symbol]) -> Hash[Symbol, nil | Node | Array[Node] | String | Token | Array[Token] | Location]
1640
2074
  def deconstruct_keys(keys)
1641
- { target: target, operator_loc: operator_loc, value: value, location: location }
1642
- end
1643
-
1644
- # def operator: () -> String
1645
- def operator
1646
- operator_loc.slice
2075
+ { target: target, operator_loc: operator_loc, value: value, operator: operator, location: location }
1647
2076
  end
1648
2077
  end
1649
2078
 
@@ -1651,8 +2080,8 @@ module YARP
1651
2080
  #
1652
2081
  # Parent::Child ||= value
1653
2082
  # ^^^^^^^^^^^^^^^^^^^^^^^
1654
- class ConstantPathOperatorOrWriteNode < Node
1655
- # attr_reader target: Node
2083
+ class ConstantPathOrWriteNode < Node
2084
+ # attr_reader target: ConstantPathNode
1656
2085
  attr_reader :target
1657
2086
 
1658
2087
  # attr_reader operator_loc: Location
@@ -1661,7 +2090,7 @@ module YARP
1661
2090
  # attr_reader value: Node
1662
2091
  attr_reader :value
1663
2092
 
1664
- # def initialize: (target: Node, operator_loc: Location, value: Node, location: Location) -> void
2093
+ # def initialize: (target: ConstantPathNode, operator_loc: Location, value: Node, location: Location) -> void
1665
2094
  def initialize(target, operator_loc, value, location)
1666
2095
  @target = target
1667
2096
  @operator_loc = operator_loc
@@ -1671,7 +2100,7 @@ module YARP
1671
2100
 
1672
2101
  # def accept: (visitor: Visitor) -> void
1673
2102
  def accept(visitor)
1674
- visitor.visit_constant_path_operator_or_write_node(self)
2103
+ visitor.visit_constant_path_or_write_node(self)
1675
2104
  end
1676
2105
 
1677
2106
  # def child_nodes: () -> Array[nil | Node]
@@ -1679,6 +2108,16 @@ module YARP
1679
2108
  [target, value]
1680
2109
  end
1681
2110
 
2111
+ # def copy: (**params) -> ConstantPathOrWriteNode
2112
+ def copy(**params)
2113
+ ConstantPathOrWriteNode.new(
2114
+ params.fetch(:target) { target },
2115
+ params.fetch(:operator_loc) { operator_loc },
2116
+ params.fetch(:value) { value },
2117
+ params.fetch(:location) { location },
2118
+ )
2119
+ end
2120
+
1682
2121
  # def deconstruct: () -> Array[nil | Node]
1683
2122
  alias deconstruct child_nodes
1684
2123
 
@@ -1693,40 +2132,46 @@ module YARP
1693
2132
  end
1694
2133
  end
1695
2134
 
1696
- # Represents assigning to a constant path using an operator that isn't `=`.
2135
+ # Represents writing to a constant path in a context that doesn't have an explicit value.
1697
2136
  #
1698
- # Parent::Child += value
1699
- # ^^^^^^^^^^^^^^^^^^^^^^
1700
- class ConstantPathOperatorWriteNode < Node
1701
- # attr_reader target: Node
1702
- attr_reader :target
1703
-
1704
- # attr_reader operator_loc: Location
1705
- attr_reader :operator_loc
2137
+ # Foo::Foo, Bar::Bar = baz
2138
+ # ^^^^^^^^ ^^^^^^^^
2139
+ class ConstantPathTargetNode < Node
2140
+ # attr_reader parent: Node?
2141
+ attr_reader :parent
1706
2142
 
1707
- # attr_reader value: Node
1708
- attr_reader :value
2143
+ # attr_reader child: Node
2144
+ attr_reader :child
1709
2145
 
1710
- # attr_reader operator: Symbol
1711
- attr_reader :operator
2146
+ # attr_reader delimiter_loc: Location
2147
+ attr_reader :delimiter_loc
1712
2148
 
1713
- # def initialize: (target: Node, operator_loc: Location, value: Node, operator: Symbol, location: Location) -> void
1714
- def initialize(target, operator_loc, value, operator, location)
1715
- @target = target
1716
- @operator_loc = operator_loc
1717
- @value = value
1718
- @operator = operator
2149
+ # def initialize: (parent: Node?, child: Node, delimiter_loc: Location, location: Location) -> void
2150
+ def initialize(parent, child, delimiter_loc, location)
2151
+ @parent = parent
2152
+ @child = child
2153
+ @delimiter_loc = delimiter_loc
1719
2154
  @location = location
1720
2155
  end
1721
2156
 
1722
2157
  # def accept: (visitor: Visitor) -> void
1723
2158
  def accept(visitor)
1724
- visitor.visit_constant_path_operator_write_node(self)
2159
+ visitor.visit_constant_path_target_node(self)
1725
2160
  end
1726
2161
 
1727
2162
  # def child_nodes: () -> Array[nil | Node]
1728
2163
  def child_nodes
1729
- [target, value]
2164
+ [parent, child]
2165
+ end
2166
+
2167
+ # def copy: (**params) -> ConstantPathTargetNode
2168
+ def copy(**params)
2169
+ ConstantPathTargetNode.new(
2170
+ params.fetch(:parent) { parent },
2171
+ params.fetch(:child) { child },
2172
+ params.fetch(:delimiter_loc) { delimiter_loc },
2173
+ params.fetch(:location) { location },
2174
+ )
1730
2175
  end
1731
2176
 
1732
2177
  # def deconstruct: () -> Array[nil | Node]
@@ -1734,7 +2179,12 @@ module YARP
1734
2179
 
1735
2180
  # def deconstruct_keys: (keys: Array[Symbol]) -> Hash[Symbol, nil | Node | Array[Node] | String | Token | Array[Token] | Location]
1736
2181
  def deconstruct_keys(keys)
1737
- { target: target, operator_loc: operator_loc, value: value, operator: operator, location: location }
2182
+ { parent: parent, child: child, delimiter_loc: delimiter_loc, location: location }
2183
+ end
2184
+
2185
+ # def delimiter: () -> String
2186
+ def delimiter
2187
+ delimiter_loc.slice
1738
2188
  end
1739
2189
  end
1740
2190
 
@@ -1749,16 +2199,16 @@ module YARP
1749
2199
  # ::Foo::Bar = 1
1750
2200
  # ^^^^^^^^^^^^^^
1751
2201
  class ConstantPathWriteNode < Node
1752
- # attr_reader target: Node
2202
+ # attr_reader target: ConstantPathNode
1753
2203
  attr_reader :target
1754
2204
 
1755
- # attr_reader operator_loc: Location?
2205
+ # attr_reader operator_loc: Location
1756
2206
  attr_reader :operator_loc
1757
2207
 
1758
- # attr_reader value: Node?
2208
+ # attr_reader value: Node
1759
2209
  attr_reader :value
1760
2210
 
1761
- # def initialize: (target: Node, operator_loc: Location?, value: Node?, location: Location) -> void
2211
+ # def initialize: (target: ConstantPathNode, operator_loc: Location, value: Node, location: Location) -> void
1762
2212
  def initialize(target, operator_loc, value, location)
1763
2213
  @target = target
1764
2214
  @operator_loc = operator_loc
@@ -1776,6 +2226,16 @@ module YARP
1776
2226
  [target, value]
1777
2227
  end
1778
2228
 
2229
+ # def copy: (**params) -> ConstantPathWriteNode
2230
+ def copy(**params)
2231
+ ConstantPathWriteNode.new(
2232
+ params.fetch(:target) { target },
2233
+ params.fetch(:operator_loc) { operator_loc },
2234
+ params.fetch(:value) { value },
2235
+ params.fetch(:location) { location },
2236
+ )
2237
+ end
2238
+
1779
2239
  # def deconstruct: () -> Array[nil | Node]
1780
2240
  alias deconstruct child_nodes
1781
2241
 
@@ -1784,9 +2244,9 @@ module YARP
1784
2244
  { target: target, operator_loc: operator_loc, value: value, location: location }
1785
2245
  end
1786
2246
 
1787
- # def operator: () -> String?
2247
+ # def operator: () -> String
1788
2248
  def operator
1789
- operator_loc&.slice
2249
+ operator_loc.slice
1790
2250
  end
1791
2251
  end
1792
2252
 
@@ -1810,6 +2270,49 @@ module YARP
1810
2270
  []
1811
2271
  end
1812
2272
 
2273
+ # def copy: (**params) -> ConstantReadNode
2274
+ def copy(**params)
2275
+ ConstantReadNode.new(
2276
+ params.fetch(:location) { location },
2277
+ )
2278
+ end
2279
+
2280
+ # def deconstruct: () -> Array[nil | Node]
2281
+ alias deconstruct child_nodes
2282
+
2283
+ # def deconstruct_keys: (keys: Array[Symbol]) -> Hash[Symbol, nil | Node | Array[Node] | String | Token | Array[Token] | Location]
2284
+ def deconstruct_keys(keys)
2285
+ { location: location }
2286
+ end
2287
+ end
2288
+
2289
+ # Represents writing to a constant in a context that doesn't have an explicit value.
2290
+ #
2291
+ # Foo, Bar = baz
2292
+ # ^^^ ^^^
2293
+ class ConstantTargetNode < Node
2294
+ # def initialize: (location: Location) -> void
2295
+ def initialize(location)
2296
+ @location = location
2297
+ end
2298
+
2299
+ # def accept: (visitor: Visitor) -> void
2300
+ def accept(visitor)
2301
+ visitor.visit_constant_target_node(self)
2302
+ end
2303
+
2304
+ # def child_nodes: () -> Array[nil | Node]
2305
+ def child_nodes
2306
+ []
2307
+ end
2308
+
2309
+ # def copy: (**params) -> ConstantTargetNode
2310
+ def copy(**params)
2311
+ ConstantTargetNode.new(
2312
+ params.fetch(:location) { location },
2313
+ )
2314
+ end
2315
+
1813
2316
  # def deconstruct: () -> Array[nil | Node]
1814
2317
  alias deconstruct child_nodes
1815
2318
 
@@ -1827,13 +2330,13 @@ module YARP
1827
2330
  # attr_reader name_loc: Location
1828
2331
  attr_reader :name_loc
1829
2332
 
1830
- # attr_reader value: Node?
2333
+ # attr_reader value: Node
1831
2334
  attr_reader :value
1832
2335
 
1833
- # attr_reader operator_loc: Location?
2336
+ # attr_reader operator_loc: Location
1834
2337
  attr_reader :operator_loc
1835
2338
 
1836
- # def initialize: (name_loc: Location, value: Node?, operator_loc: Location?, location: Location) -> void
2339
+ # def initialize: (name_loc: Location, value: Node, operator_loc: Location, location: Location) -> void
1837
2340
  def initialize(name_loc, value, operator_loc, location)
1838
2341
  @name_loc = name_loc
1839
2342
  @value = value
@@ -1851,6 +2354,16 @@ module YARP
1851
2354
  [value]
1852
2355
  end
1853
2356
 
2357
+ # def copy: (**params) -> ConstantWriteNode
2358
+ def copy(**params)
2359
+ ConstantWriteNode.new(
2360
+ params.fetch(:name_loc) { name_loc },
2361
+ params.fetch(:value) { value },
2362
+ params.fetch(:operator_loc) { operator_loc },
2363
+ params.fetch(:location) { location },
2364
+ )
2365
+ end
2366
+
1854
2367
  # def deconstruct: () -> Array[nil | Node]
1855
2368
  alias deconstruct child_nodes
1856
2369
 
@@ -1864,9 +2377,9 @@ module YARP
1864
2377
  name_loc.slice
1865
2378
  end
1866
2379
 
1867
- # def operator: () -> String?
2380
+ # def operator: () -> String
1868
2381
  def operator
1869
- operator_loc&.slice
2382
+ operator_loc.slice
1870
2383
  end
1871
2384
  end
1872
2385
 
@@ -1882,11 +2395,11 @@ module YARP
1882
2395
  # attr_reader receiver: Node?
1883
2396
  attr_reader :receiver
1884
2397
 
1885
- # attr_reader parameters: Node?
2398
+ # attr_reader parameters: ParametersNode?
1886
2399
  attr_reader :parameters
1887
2400
 
1888
- # attr_reader statements: Node?
1889
- attr_reader :statements
2401
+ # attr_reader body: Node?
2402
+ attr_reader :body
1890
2403
 
1891
2404
  # attr_reader locals: Array[Symbol]
1892
2405
  attr_reader :locals
@@ -1909,12 +2422,12 @@ module YARP
1909
2422
  # attr_reader end_keyword_loc: Location?
1910
2423
  attr_reader :end_keyword_loc
1911
2424
 
1912
- # def initialize: (name_loc: Location, receiver: Node?, parameters: Node?, statements: Node?, locals: Array[Symbol], def_keyword_loc: Location, operator_loc: Location?, lparen_loc: Location?, rparen_loc: Location?, equal_loc: Location?, end_keyword_loc: Location?, location: Location) -> void
1913
- def initialize(name_loc, receiver, parameters, statements, locals, def_keyword_loc, operator_loc, lparen_loc, rparen_loc, equal_loc, end_keyword_loc, location)
2425
+ # def initialize: (name_loc: Location, receiver: Node?, parameters: ParametersNode?, body: Node?, locals: Array[Symbol], def_keyword_loc: Location, operator_loc: Location?, lparen_loc: Location?, rparen_loc: Location?, equal_loc: Location?, end_keyword_loc: Location?, location: Location) -> void
2426
+ def initialize(name_loc, receiver, parameters, body, locals, def_keyword_loc, operator_loc, lparen_loc, rparen_loc, equal_loc, end_keyword_loc, location)
1914
2427
  @name_loc = name_loc
1915
2428
  @receiver = receiver
1916
2429
  @parameters = parameters
1917
- @statements = statements
2430
+ @body = body
1918
2431
  @locals = locals
1919
2432
  @def_keyword_loc = def_keyword_loc
1920
2433
  @operator_loc = operator_loc
@@ -1932,7 +2445,25 @@ module YARP
1932
2445
 
1933
2446
  # def child_nodes: () -> Array[nil | Node]
1934
2447
  def child_nodes
1935
- [receiver, parameters, statements]
2448
+ [receiver, parameters, body]
2449
+ end
2450
+
2451
+ # def copy: (**params) -> DefNode
2452
+ def copy(**params)
2453
+ DefNode.new(
2454
+ params.fetch(:name_loc) { name_loc },
2455
+ params.fetch(:receiver) { receiver },
2456
+ params.fetch(:parameters) { parameters },
2457
+ params.fetch(:body) { body },
2458
+ params.fetch(:locals) { locals },
2459
+ params.fetch(:def_keyword_loc) { def_keyword_loc },
2460
+ params.fetch(:operator_loc) { operator_loc },
2461
+ params.fetch(:lparen_loc) { lparen_loc },
2462
+ params.fetch(:rparen_loc) { rparen_loc },
2463
+ params.fetch(:equal_loc) { equal_loc },
2464
+ params.fetch(:end_keyword_loc) { end_keyword_loc },
2465
+ params.fetch(:location) { location },
2466
+ )
1936
2467
  end
1937
2468
 
1938
2469
  # def deconstruct: () -> Array[nil | Node]
@@ -1940,7 +2471,7 @@ module YARP
1940
2471
 
1941
2472
  # def deconstruct_keys: (keys: Array[Symbol]) -> Hash[Symbol, nil | Node | Array[Node] | String | Token | Array[Token] | Location]
1942
2473
  def deconstruct_keys(keys)
1943
- { name_loc: name_loc, receiver: receiver, parameters: parameters, statements: statements, locals: locals, def_keyword_loc: def_keyword_loc, operator_loc: operator_loc, lparen_loc: lparen_loc, rparen_loc: rparen_loc, equal_loc: equal_loc, end_keyword_loc: end_keyword_loc, location: location }
2474
+ { name_loc: name_loc, receiver: receiver, parameters: parameters, body: body, locals: locals, def_keyword_loc: def_keyword_loc, operator_loc: operator_loc, lparen_loc: lparen_loc, rparen_loc: rparen_loc, equal_loc: equal_loc, end_keyword_loc: end_keyword_loc, location: location }
1944
2475
  end
1945
2476
 
1946
2477
  # def name: () -> String
@@ -2015,6 +2546,17 @@ module YARP
2015
2546
  [value]
2016
2547
  end
2017
2548
 
2549
+ # def copy: (**params) -> DefinedNode
2550
+ def copy(**params)
2551
+ DefinedNode.new(
2552
+ params.fetch(:lparen_loc) { lparen_loc },
2553
+ params.fetch(:value) { value },
2554
+ params.fetch(:rparen_loc) { rparen_loc },
2555
+ params.fetch(:keyword_loc) { keyword_loc },
2556
+ params.fetch(:location) { location },
2557
+ )
2558
+ end
2559
+
2018
2560
  # def deconstruct: () -> Array[nil | Node]
2019
2561
  alias deconstruct child_nodes
2020
2562
 
@@ -2047,13 +2589,13 @@ module YARP
2047
2589
  # attr_reader else_keyword_loc: Location
2048
2590
  attr_reader :else_keyword_loc
2049
2591
 
2050
- # attr_reader statements: Node?
2592
+ # attr_reader statements: StatementsNode?
2051
2593
  attr_reader :statements
2052
2594
 
2053
2595
  # attr_reader end_keyword_loc: Location?
2054
2596
  attr_reader :end_keyword_loc
2055
2597
 
2056
- # def initialize: (else_keyword_loc: Location, statements: Node?, end_keyword_loc: Location?, location: Location) -> void
2598
+ # def initialize: (else_keyword_loc: Location, statements: StatementsNode?, end_keyword_loc: Location?, location: Location) -> void
2057
2599
  def initialize(else_keyword_loc, statements, end_keyword_loc, location)
2058
2600
  @else_keyword_loc = else_keyword_loc
2059
2601
  @statements = statements
@@ -2071,6 +2613,16 @@ module YARP
2071
2613
  [statements]
2072
2614
  end
2073
2615
 
2616
+ # def copy: (**params) -> ElseNode
2617
+ def copy(**params)
2618
+ ElseNode.new(
2619
+ params.fetch(:else_keyword_loc) { else_keyword_loc },
2620
+ params.fetch(:statements) { statements },
2621
+ params.fetch(:end_keyword_loc) { end_keyword_loc },
2622
+ params.fetch(:location) { location },
2623
+ )
2624
+ end
2625
+
2074
2626
  # def deconstruct: () -> Array[nil | Node]
2075
2627
  alias deconstruct child_nodes
2076
2628
 
@@ -2098,13 +2650,13 @@ module YARP
2098
2650
  # attr_reader opening_loc: Location
2099
2651
  attr_reader :opening_loc
2100
2652
 
2101
- # attr_reader statements: Node?
2653
+ # attr_reader statements: StatementsNode?
2102
2654
  attr_reader :statements
2103
2655
 
2104
2656
  # attr_reader closing_loc: Location
2105
2657
  attr_reader :closing_loc
2106
2658
 
2107
- # def initialize: (opening_loc: Location, statements: Node?, closing_loc: Location, location: Location) -> void
2659
+ # def initialize: (opening_loc: Location, statements: StatementsNode?, closing_loc: Location, location: Location) -> void
2108
2660
  def initialize(opening_loc, statements, closing_loc, location)
2109
2661
  @opening_loc = opening_loc
2110
2662
  @statements = statements
@@ -2122,6 +2674,16 @@ module YARP
2122
2674
  [statements]
2123
2675
  end
2124
2676
 
2677
+ # def copy: (**params) -> EmbeddedStatementsNode
2678
+ def copy(**params)
2679
+ EmbeddedStatementsNode.new(
2680
+ params.fetch(:opening_loc) { opening_loc },
2681
+ params.fetch(:statements) { statements },
2682
+ params.fetch(:closing_loc) { closing_loc },
2683
+ params.fetch(:location) { location },
2684
+ )
2685
+ end
2686
+
2125
2687
  # def deconstruct: () -> Array[nil | Node]
2126
2688
  alias deconstruct child_nodes
2127
2689
 
@@ -2169,6 +2731,15 @@ module YARP
2169
2731
  [variable]
2170
2732
  end
2171
2733
 
2734
+ # def copy: (**params) -> EmbeddedVariableNode
2735
+ def copy(**params)
2736
+ EmbeddedVariableNode.new(
2737
+ params.fetch(:operator_loc) { operator_loc },
2738
+ params.fetch(:variable) { variable },
2739
+ params.fetch(:location) { location },
2740
+ )
2741
+ end
2742
+
2172
2743
  # def deconstruct: () -> Array[nil | Node]
2173
2744
  alias deconstruct child_nodes
2174
2745
 
@@ -2195,13 +2766,13 @@ module YARP
2195
2766
  # attr_reader ensure_keyword_loc: Location
2196
2767
  attr_reader :ensure_keyword_loc
2197
2768
 
2198
- # attr_reader statements: Node?
2769
+ # attr_reader statements: StatementsNode?
2199
2770
  attr_reader :statements
2200
2771
 
2201
2772
  # attr_reader end_keyword_loc: Location
2202
2773
  attr_reader :end_keyword_loc
2203
2774
 
2204
- # def initialize: (ensure_keyword_loc: Location, statements: Node?, end_keyword_loc: Location, location: Location) -> void
2775
+ # def initialize: (ensure_keyword_loc: Location, statements: StatementsNode?, end_keyword_loc: Location, location: Location) -> void
2205
2776
  def initialize(ensure_keyword_loc, statements, end_keyword_loc, location)
2206
2777
  @ensure_keyword_loc = ensure_keyword_loc
2207
2778
  @statements = statements
@@ -2219,6 +2790,16 @@ module YARP
2219
2790
  [statements]
2220
2791
  end
2221
2792
 
2793
+ # def copy: (**params) -> EnsureNode
2794
+ def copy(**params)
2795
+ EnsureNode.new(
2796
+ params.fetch(:ensure_keyword_loc) { ensure_keyword_loc },
2797
+ params.fetch(:statements) { statements },
2798
+ params.fetch(:end_keyword_loc) { end_keyword_loc },
2799
+ params.fetch(:location) { location },
2800
+ )
2801
+ end
2802
+
2222
2803
  # def deconstruct: () -> Array[nil | Node]
2223
2804
  alias deconstruct child_nodes
2224
2805
 
@@ -2258,6 +2839,13 @@ module YARP
2258
2839
  []
2259
2840
  end
2260
2841
 
2842
+ # def copy: (**params) -> FalseNode
2843
+ def copy(**params)
2844
+ FalseNode.new(
2845
+ params.fetch(:location) { location },
2846
+ )
2847
+ end
2848
+
2261
2849
  # def deconstruct: () -> Array[nil | Node]
2262
2850
  alias deconstruct child_nodes
2263
2851
 
@@ -2317,6 +2905,19 @@ module YARP
2317
2905
  [constant, left, *requireds, right]
2318
2906
  end
2319
2907
 
2908
+ # def copy: (**params) -> FindPatternNode
2909
+ def copy(**params)
2910
+ FindPatternNode.new(
2911
+ params.fetch(:constant) { constant },
2912
+ params.fetch(:left) { left },
2913
+ params.fetch(:requireds) { requireds },
2914
+ params.fetch(:right) { right },
2915
+ params.fetch(:opening_loc) { opening_loc },
2916
+ params.fetch(:closing_loc) { closing_loc },
2917
+ params.fetch(:location) { location },
2918
+ )
2919
+ end
2920
+
2320
2921
  # def deconstruct: () -> Array[nil | Node]
2321
2922
  alias deconstruct child_nodes
2322
2923
 
@@ -2372,6 +2973,17 @@ module YARP
2372
2973
  [left, right]
2373
2974
  end
2374
2975
 
2976
+ # def copy: (**params) -> FlipFlopNode
2977
+ def copy(**params)
2978
+ FlipFlopNode.new(
2979
+ params.fetch(:left) { left },
2980
+ params.fetch(:right) { right },
2981
+ params.fetch(:operator_loc) { operator_loc },
2982
+ params.fetch(:flags) { flags },
2983
+ params.fetch(:location) { location },
2984
+ )
2985
+ end
2986
+
2375
2987
  # def deconstruct: () -> Array[nil | Node]
2376
2988
  alias deconstruct child_nodes
2377
2989
 
@@ -2411,6 +3023,13 @@ module YARP
2411
3023
  []
2412
3024
  end
2413
3025
 
3026
+ # def copy: (**params) -> FloatNode
3027
+ def copy(**params)
3028
+ FloatNode.new(
3029
+ params.fetch(:location) { location },
3030
+ )
3031
+ end
3032
+
2414
3033
  # def deconstruct: () -> Array[nil | Node]
2415
3034
  alias deconstruct child_nodes
2416
3035
 
@@ -2431,7 +3050,7 @@ module YARP
2431
3050
  # attr_reader collection: Node
2432
3051
  attr_reader :collection
2433
3052
 
2434
- # attr_reader statements: Node?
3053
+ # attr_reader statements: StatementsNode?
2435
3054
  attr_reader :statements
2436
3055
 
2437
3056
  # attr_reader for_keyword_loc: Location
@@ -2446,7 +3065,7 @@ module YARP
2446
3065
  # attr_reader end_keyword_loc: Location
2447
3066
  attr_reader :end_keyword_loc
2448
3067
 
2449
- # def initialize: (index: Node, collection: Node, statements: Node?, for_keyword_loc: Location, in_keyword_loc: Location, do_keyword_loc: Location?, end_keyword_loc: Location, location: Location) -> void
3068
+ # def initialize: (index: Node, collection: Node, statements: StatementsNode?, for_keyword_loc: Location, in_keyword_loc: Location, do_keyword_loc: Location?, end_keyword_loc: Location, location: Location) -> void
2450
3069
  def initialize(index, collection, statements, for_keyword_loc, in_keyword_loc, do_keyword_loc, end_keyword_loc, location)
2451
3070
  @index = index
2452
3071
  @collection = collection
@@ -2468,6 +3087,20 @@ module YARP
2468
3087
  [index, collection, statements]
2469
3088
  end
2470
3089
 
3090
+ # def copy: (**params) -> ForNode
3091
+ def copy(**params)
3092
+ ForNode.new(
3093
+ params.fetch(:index) { index },
3094
+ params.fetch(:collection) { collection },
3095
+ params.fetch(:statements) { statements },
3096
+ params.fetch(:for_keyword_loc) { for_keyword_loc },
3097
+ params.fetch(:in_keyword_loc) { in_keyword_loc },
3098
+ params.fetch(:do_keyword_loc) { do_keyword_loc },
3099
+ params.fetch(:end_keyword_loc) { end_keyword_loc },
3100
+ params.fetch(:location) { location },
3101
+ )
3102
+ end
3103
+
2471
3104
  # def deconstruct: () -> Array[nil | Node]
2472
3105
  alias deconstruct child_nodes
2473
3106
 
@@ -2519,6 +3152,13 @@ module YARP
2519
3152
  []
2520
3153
  end
2521
3154
 
3155
+ # def copy: (**params) -> ForwardingArgumentsNode
3156
+ def copy(**params)
3157
+ ForwardingArgumentsNode.new(
3158
+ params.fetch(:location) { location },
3159
+ )
3160
+ end
3161
+
2522
3162
  # def deconstruct: () -> Array[nil | Node]
2523
3163
  alias deconstruct child_nodes
2524
3164
 
@@ -2549,6 +3189,13 @@ module YARP
2549
3189
  []
2550
3190
  end
2551
3191
 
3192
+ # def copy: (**params) -> ForwardingParameterNode
3193
+ def copy(**params)
3194
+ ForwardingParameterNode.new(
3195
+ params.fetch(:location) { location },
3196
+ )
3197
+ end
3198
+
2552
3199
  # def deconstruct: () -> Array[nil | Node]
2553
3200
  alias deconstruct child_nodes
2554
3201
 
@@ -2563,10 +3210,10 @@ module YARP
2563
3210
  # super
2564
3211
  # ^^^^^
2565
3212
  class ForwardingSuperNode < Node
2566
- # attr_reader block: Node?
3213
+ # attr_reader block: BlockNode?
2567
3214
  attr_reader :block
2568
3215
 
2569
- # def initialize: (block: Node?, location: Location) -> void
3216
+ # def initialize: (block: BlockNode?, location: Location) -> void
2570
3217
  def initialize(block, location)
2571
3218
  @block = block
2572
3219
  @location = location
@@ -2582,6 +3229,14 @@ module YARP
2582
3229
  [block]
2583
3230
  end
2584
3231
 
3232
+ # def copy: (**params) -> ForwardingSuperNode
3233
+ def copy(**params)
3234
+ ForwardingSuperNode.new(
3235
+ params.fetch(:block) { block },
3236
+ params.fetch(:location) { location },
3237
+ )
3238
+ end
3239
+
2585
3240
  # def deconstruct: () -> Array[nil | Node]
2586
3241
  alias deconstruct child_nodes
2587
3242
 
@@ -2595,7 +3250,7 @@ module YARP
2595
3250
  #
2596
3251
  # $target &&= value
2597
3252
  # ^^^^^^^^^^^^^^^^^
2598
- class GlobalVariableOperatorAndWriteNode < Node
3253
+ class GlobalVariableAndWriteNode < Node
2599
3254
  # attr_reader name_loc: Location
2600
3255
  attr_reader :name_loc
2601
3256
 
@@ -2615,7 +3270,7 @@ module YARP
2615
3270
 
2616
3271
  # def accept: (visitor: Visitor) -> void
2617
3272
  def accept(visitor)
2618
- visitor.visit_global_variable_operator_and_write_node(self)
3273
+ visitor.visit_global_variable_and_write_node(self)
2619
3274
  end
2620
3275
 
2621
3276
  # def child_nodes: () -> Array[nil | Node]
@@ -2623,6 +3278,16 @@ module YARP
2623
3278
  [value]
2624
3279
  end
2625
3280
 
3281
+ # def copy: (**params) -> GlobalVariableAndWriteNode
3282
+ def copy(**params)
3283
+ GlobalVariableAndWriteNode.new(
3284
+ params.fetch(:name_loc) { name_loc },
3285
+ params.fetch(:operator_loc) { operator_loc },
3286
+ params.fetch(:value) { value },
3287
+ params.fetch(:location) { location },
3288
+ )
3289
+ end
3290
+
2626
3291
  # def deconstruct: () -> Array[nil | Node]
2627
3292
  alias deconstruct child_nodes
2628
3293
 
@@ -2642,11 +3307,11 @@ module YARP
2642
3307
  end
2643
3308
  end
2644
3309
 
2645
- # Represents the use of the `||=` operator for assignment to a global variable.
3310
+ # Represents assigning to a global variable using an operator that isn't `=`.
2646
3311
  #
2647
- # $target ||= value
2648
- # ^^^^^^^^^^^^^^^^^
2649
- class GlobalVariableOperatorOrWriteNode < Node
3312
+ # $target += value
3313
+ # ^^^^^^^^^^^^^^^^
3314
+ class GlobalVariableOperatorWriteNode < Node
2650
3315
  # attr_reader name_loc: Location
2651
3316
  attr_reader :name_loc
2652
3317
 
@@ -2656,17 +3321,21 @@ module YARP
2656
3321
  # attr_reader value: Node
2657
3322
  attr_reader :value
2658
3323
 
2659
- # def initialize: (name_loc: Location, operator_loc: Location, value: Node, location: Location) -> void
2660
- def initialize(name_loc, operator_loc, value, location)
3324
+ # attr_reader operator: Symbol
3325
+ attr_reader :operator
3326
+
3327
+ # def initialize: (name_loc: Location, operator_loc: Location, value: Node, operator: Symbol, location: Location) -> void
3328
+ def initialize(name_loc, operator_loc, value, operator, location)
2661
3329
  @name_loc = name_loc
2662
3330
  @operator_loc = operator_loc
2663
3331
  @value = value
3332
+ @operator = operator
2664
3333
  @location = location
2665
3334
  end
2666
3335
 
2667
3336
  # def accept: (visitor: Visitor) -> void
2668
3337
  def accept(visitor)
2669
- visitor.visit_global_variable_operator_or_write_node(self)
3338
+ visitor.visit_global_variable_operator_write_node(self)
2670
3339
  end
2671
3340
 
2672
3341
  # def child_nodes: () -> Array[nil | Node]
@@ -2674,30 +3343,36 @@ module YARP
2674
3343
  [value]
2675
3344
  end
2676
3345
 
3346
+ # def copy: (**params) -> GlobalVariableOperatorWriteNode
3347
+ def copy(**params)
3348
+ GlobalVariableOperatorWriteNode.new(
3349
+ params.fetch(:name_loc) { name_loc },
3350
+ params.fetch(:operator_loc) { operator_loc },
3351
+ params.fetch(:value) { value },
3352
+ params.fetch(:operator) { operator },
3353
+ params.fetch(:location) { location },
3354
+ )
3355
+ end
3356
+
2677
3357
  # def deconstruct: () -> Array[nil | Node]
2678
3358
  alias deconstruct child_nodes
2679
3359
 
2680
3360
  # def deconstruct_keys: (keys: Array[Symbol]) -> Hash[Symbol, nil | Node | Array[Node] | String | Token | Array[Token] | Location]
2681
3361
  def deconstruct_keys(keys)
2682
- { name_loc: name_loc, operator_loc: operator_loc, value: value, location: location }
3362
+ { name_loc: name_loc, operator_loc: operator_loc, value: value, operator: operator, location: location }
2683
3363
  end
2684
3364
 
2685
3365
  # def name: () -> String
2686
3366
  def name
2687
3367
  name_loc.slice
2688
3368
  end
2689
-
2690
- # def operator: () -> String
2691
- def operator
2692
- operator_loc.slice
2693
- end
2694
3369
  end
2695
3370
 
2696
- # Represents assigning to a global variable using an operator that isn't `=`.
3371
+ # Represents the use of the `||=` operator for assignment to a global variable.
2697
3372
  #
2698
- # $target += value
2699
- # ^^^^^^^^^^^^^^^^
2700
- class GlobalVariableOperatorWriteNode < Node
3373
+ # $target ||= value
3374
+ # ^^^^^^^^^^^^^^^^^
3375
+ class GlobalVariableOrWriteNode < Node
2701
3376
  # attr_reader name_loc: Location
2702
3377
  attr_reader :name_loc
2703
3378
 
@@ -2707,21 +3382,17 @@ module YARP
2707
3382
  # attr_reader value: Node
2708
3383
  attr_reader :value
2709
3384
 
2710
- # attr_reader operator: Symbol
2711
- attr_reader :operator
2712
-
2713
- # def initialize: (name_loc: Location, operator_loc: Location, value: Node, operator: Symbol, location: Location) -> void
2714
- def initialize(name_loc, operator_loc, value, operator, location)
3385
+ # def initialize: (name_loc: Location, operator_loc: Location, value: Node, location: Location) -> void
3386
+ def initialize(name_loc, operator_loc, value, location)
2715
3387
  @name_loc = name_loc
2716
3388
  @operator_loc = operator_loc
2717
3389
  @value = value
2718
- @operator = operator
2719
3390
  @location = location
2720
3391
  end
2721
3392
 
2722
3393
  # def accept: (visitor: Visitor) -> void
2723
3394
  def accept(visitor)
2724
- visitor.visit_global_variable_operator_write_node(self)
3395
+ visitor.visit_global_variable_or_write_node(self)
2725
3396
  end
2726
3397
 
2727
3398
  # def child_nodes: () -> Array[nil | Node]
@@ -2729,18 +3400,33 @@ module YARP
2729
3400
  [value]
2730
3401
  end
2731
3402
 
3403
+ # def copy: (**params) -> GlobalVariableOrWriteNode
3404
+ def copy(**params)
3405
+ GlobalVariableOrWriteNode.new(
3406
+ params.fetch(:name_loc) { name_loc },
3407
+ params.fetch(:operator_loc) { operator_loc },
3408
+ params.fetch(:value) { value },
3409
+ params.fetch(:location) { location },
3410
+ )
3411
+ end
3412
+
2732
3413
  # def deconstruct: () -> Array[nil | Node]
2733
3414
  alias deconstruct child_nodes
2734
3415
 
2735
3416
  # def deconstruct_keys: (keys: Array[Symbol]) -> Hash[Symbol, nil | Node | Array[Node] | String | Token | Array[Token] | Location]
2736
3417
  def deconstruct_keys(keys)
2737
- { name_loc: name_loc, operator_loc: operator_loc, value: value, operator: operator, location: location }
3418
+ { name_loc: name_loc, operator_loc: operator_loc, value: value, location: location }
2738
3419
  end
2739
3420
 
2740
3421
  # def name: () -> String
2741
3422
  def name
2742
3423
  name_loc.slice
2743
3424
  end
3425
+
3426
+ # def operator: () -> String
3427
+ def operator
3428
+ operator_loc.slice
3429
+ end
2744
3430
  end
2745
3431
 
2746
3432
  # Represents referencing a global variable.
@@ -2763,6 +3449,49 @@ module YARP
2763
3449
  []
2764
3450
  end
2765
3451
 
3452
+ # def copy: (**params) -> GlobalVariableReadNode
3453
+ def copy(**params)
3454
+ GlobalVariableReadNode.new(
3455
+ params.fetch(:location) { location },
3456
+ )
3457
+ end
3458
+
3459
+ # def deconstruct: () -> Array[nil | Node]
3460
+ alias deconstruct child_nodes
3461
+
3462
+ # def deconstruct_keys: (keys: Array[Symbol]) -> Hash[Symbol, nil | Node | Array[Node] | String | Token | Array[Token] | Location]
3463
+ def deconstruct_keys(keys)
3464
+ { location: location }
3465
+ end
3466
+ end
3467
+
3468
+ # Represents writing to a global variable in a context that doesn't have an explicit value.
3469
+ #
3470
+ # $foo, $bar = baz
3471
+ # ^^^^ ^^^^
3472
+ class GlobalVariableTargetNode < Node
3473
+ # def initialize: (location: Location) -> void
3474
+ def initialize(location)
3475
+ @location = location
3476
+ end
3477
+
3478
+ # def accept: (visitor: Visitor) -> void
3479
+ def accept(visitor)
3480
+ visitor.visit_global_variable_target_node(self)
3481
+ end
3482
+
3483
+ # def child_nodes: () -> Array[nil | Node]
3484
+ def child_nodes
3485
+ []
3486
+ end
3487
+
3488
+ # def copy: (**params) -> GlobalVariableTargetNode
3489
+ def copy(**params)
3490
+ GlobalVariableTargetNode.new(
3491
+ params.fetch(:location) { location },
3492
+ )
3493
+ end
3494
+
2766
3495
  # def deconstruct: () -> Array[nil | Node]
2767
3496
  alias deconstruct child_nodes
2768
3497
 
@@ -2780,13 +3509,13 @@ module YARP
2780
3509
  # attr_reader name_loc: Location
2781
3510
  attr_reader :name_loc
2782
3511
 
2783
- # attr_reader operator_loc: Location?
3512
+ # attr_reader operator_loc: Location
2784
3513
  attr_reader :operator_loc
2785
3514
 
2786
- # attr_reader value: Node?
3515
+ # attr_reader value: Node
2787
3516
  attr_reader :value
2788
3517
 
2789
- # def initialize: (name_loc: Location, operator_loc: Location?, value: Node?, location: Location) -> void
3518
+ # def initialize: (name_loc: Location, operator_loc: Location, value: Node, location: Location) -> void
2790
3519
  def initialize(name_loc, operator_loc, value, location)
2791
3520
  @name_loc = name_loc
2792
3521
  @operator_loc = operator_loc
@@ -2804,6 +3533,16 @@ module YARP
2804
3533
  [value]
2805
3534
  end
2806
3535
 
3536
+ # def copy: (**params) -> GlobalVariableWriteNode
3537
+ def copy(**params)
3538
+ GlobalVariableWriteNode.new(
3539
+ params.fetch(:name_loc) { name_loc },
3540
+ params.fetch(:operator_loc) { operator_loc },
3541
+ params.fetch(:value) { value },
3542
+ params.fetch(:location) { location },
3543
+ )
3544
+ end
3545
+
2807
3546
  # def deconstruct: () -> Array[nil | Node]
2808
3547
  alias deconstruct child_nodes
2809
3548
 
@@ -2817,9 +3556,9 @@ module YARP
2817
3556
  name_loc.slice
2818
3557
  end
2819
3558
 
2820
- # def operator: () -> String?
3559
+ # def operator: () -> String
2821
3560
  def operator
2822
- operator_loc&.slice
3561
+ operator_loc.slice
2823
3562
  end
2824
3563
  end
2825
3564
 
@@ -2855,6 +3594,16 @@ module YARP
2855
3594
  [*elements]
2856
3595
  end
2857
3596
 
3597
+ # def copy: (**params) -> HashNode
3598
+ def copy(**params)
3599
+ HashNode.new(
3600
+ params.fetch(:opening_loc) { opening_loc },
3601
+ params.fetch(:elements) { elements },
3602
+ params.fetch(:closing_loc) { closing_loc },
3603
+ params.fetch(:location) { location },
3604
+ )
3605
+ end
3606
+
2858
3607
  # def deconstruct: () -> Array[nil | Node]
2859
3608
  alias deconstruct child_nodes
2860
3609
 
@@ -2917,6 +3666,18 @@ module YARP
2917
3666
  [constant, *assocs, kwrest]
2918
3667
  end
2919
3668
 
3669
+ # def copy: (**params) -> HashPatternNode
3670
+ def copy(**params)
3671
+ HashPatternNode.new(
3672
+ params.fetch(:constant) { constant },
3673
+ params.fetch(:assocs) { assocs },
3674
+ params.fetch(:kwrest) { kwrest },
3675
+ params.fetch(:opening_loc) { opening_loc },
3676
+ params.fetch(:closing_loc) { closing_loc },
3677
+ params.fetch(:location) { location },
3678
+ )
3679
+ end
3680
+
2920
3681
  # def deconstruct: () -> Array[nil | Node]
2921
3682
  alias deconstruct child_nodes
2922
3683
 
@@ -2950,7 +3711,7 @@ module YARP
2950
3711
  # attr_reader predicate: Node
2951
3712
  attr_reader :predicate
2952
3713
 
2953
- # attr_reader statements: Node?
3714
+ # attr_reader statements: StatementsNode?
2954
3715
  attr_reader :statements
2955
3716
 
2956
3717
  # attr_reader consequent: Node?
@@ -2959,7 +3720,7 @@ module YARP
2959
3720
  # attr_reader end_keyword_loc: Location?
2960
3721
  attr_reader :end_keyword_loc
2961
3722
 
2962
- # def initialize: (if_keyword_loc: Location?, predicate: Node, statements: Node?, consequent: Node?, end_keyword_loc: Location?, location: Location) -> void
3723
+ # def initialize: (if_keyword_loc: Location?, predicate: Node, statements: StatementsNode?, consequent: Node?, end_keyword_loc: Location?, location: Location) -> void
2963
3724
  def initialize(if_keyword_loc, predicate, statements, consequent, end_keyword_loc, location)
2964
3725
  @if_keyword_loc = if_keyword_loc
2965
3726
  @predicate = predicate
@@ -2983,6 +3744,18 @@ module YARP
2983
3744
  [predicate, statements, consequent]
2984
3745
  end
2985
3746
 
3747
+ # def copy: (**params) -> IfNode
3748
+ def copy(**params)
3749
+ IfNode.new(
3750
+ params.fetch(:if_keyword_loc) { if_keyword_loc },
3751
+ params.fetch(:predicate) { predicate },
3752
+ params.fetch(:statements) { statements },
3753
+ params.fetch(:consequent) { consequent },
3754
+ params.fetch(:end_keyword_loc) { end_keyword_loc },
3755
+ params.fetch(:location) { location },
3756
+ )
3757
+ end
3758
+
2986
3759
  # def deconstruct: () -> Array[nil | Node]
2987
3760
  alias deconstruct child_nodes
2988
3761
 
@@ -3026,6 +3799,14 @@ module YARP
3026
3799
  [numeric]
3027
3800
  end
3028
3801
 
3802
+ # def copy: (**params) -> ImaginaryNode
3803
+ def copy(**params)
3804
+ ImaginaryNode.new(
3805
+ params.fetch(:numeric) { numeric },
3806
+ params.fetch(:location) { location },
3807
+ )
3808
+ end
3809
+
3029
3810
  # def deconstruct: () -> Array[nil | Node]
3030
3811
  alias deconstruct child_nodes
3031
3812
 
@@ -3043,7 +3824,7 @@ module YARP
3043
3824
  # attr_reader pattern: Node
3044
3825
  attr_reader :pattern
3045
3826
 
3046
- # attr_reader statements: Node?
3827
+ # attr_reader statements: StatementsNode?
3047
3828
  attr_reader :statements
3048
3829
 
3049
3830
  # attr_reader in_loc: Location
@@ -3052,7 +3833,7 @@ module YARP
3052
3833
  # attr_reader then_loc: Location?
3053
3834
  attr_reader :then_loc
3054
3835
 
3055
- # def initialize: (pattern: Node, statements: Node?, in_loc: Location, then_loc: Location?, location: Location) -> void
3836
+ # def initialize: (pattern: Node, statements: StatementsNode?, in_loc: Location, then_loc: Location?, location: Location) -> void
3056
3837
  def initialize(pattern, statements, in_loc, then_loc, location)
3057
3838
  @pattern = pattern
3058
3839
  @statements = statements
@@ -3071,6 +3852,17 @@ module YARP
3071
3852
  [pattern, statements]
3072
3853
  end
3073
3854
 
3855
+ # def copy: (**params) -> InNode
3856
+ def copy(**params)
3857
+ InNode.new(
3858
+ params.fetch(:pattern) { pattern },
3859
+ params.fetch(:statements) { statements },
3860
+ params.fetch(:in_loc) { in_loc },
3861
+ params.fetch(:then_loc) { then_loc },
3862
+ params.fetch(:location) { location },
3863
+ )
3864
+ end
3865
+
3074
3866
  # def deconstruct: () -> Array[nil | Node]
3075
3867
  alias deconstruct child_nodes
3076
3868
 
@@ -3094,7 +3886,7 @@ module YARP
3094
3886
  #
3095
3887
  # @target &&= value
3096
3888
  # ^^^^^^^^^^^^^^^^^
3097
- class InstanceVariableOperatorAndWriteNode < Node
3889
+ class InstanceVariableAndWriteNode < Node
3098
3890
  # attr_reader name_loc: Location
3099
3891
  attr_reader :name_loc
3100
3892
 
@@ -3114,7 +3906,7 @@ module YARP
3114
3906
 
3115
3907
  # def accept: (visitor: Visitor) -> void
3116
3908
  def accept(visitor)
3117
- visitor.visit_instance_variable_operator_and_write_node(self)
3909
+ visitor.visit_instance_variable_and_write_node(self)
3118
3910
  end
3119
3911
 
3120
3912
  # def child_nodes: () -> Array[nil | Node]
@@ -3122,6 +3914,16 @@ module YARP
3122
3914
  [value]
3123
3915
  end
3124
3916
 
3917
+ # def copy: (**params) -> InstanceVariableAndWriteNode
3918
+ def copy(**params)
3919
+ InstanceVariableAndWriteNode.new(
3920
+ params.fetch(:name_loc) { name_loc },
3921
+ params.fetch(:operator_loc) { operator_loc },
3922
+ params.fetch(:value) { value },
3923
+ params.fetch(:location) { location },
3924
+ )
3925
+ end
3926
+
3125
3927
  # def deconstruct: () -> Array[nil | Node]
3126
3928
  alias deconstruct child_nodes
3127
3929
 
@@ -3141,11 +3943,11 @@ module YARP
3141
3943
  end
3142
3944
  end
3143
3945
 
3144
- # Represents the use of the `||=` operator for assignment to an instance variable.
3946
+ # Represents assigning to an instance variable using an operator that isn't `=`.
3145
3947
  #
3146
- # @target ||= value
3147
- # ^^^^^^^^^^^^^^^^^
3148
- class InstanceVariableOperatorOrWriteNode < Node
3948
+ # @target += value
3949
+ # ^^^^^^^^^^^^^^^^
3950
+ class InstanceVariableOperatorWriteNode < Node
3149
3951
  # attr_reader name_loc: Location
3150
3952
  attr_reader :name_loc
3151
3953
 
@@ -3155,17 +3957,21 @@ module YARP
3155
3957
  # attr_reader value: Node
3156
3958
  attr_reader :value
3157
3959
 
3158
- # def initialize: (name_loc: Location, operator_loc: Location, value: Node, location: Location) -> void
3159
- def initialize(name_loc, operator_loc, value, location)
3960
+ # attr_reader operator: Symbol
3961
+ attr_reader :operator
3962
+
3963
+ # def initialize: (name_loc: Location, operator_loc: Location, value: Node, operator: Symbol, location: Location) -> void
3964
+ def initialize(name_loc, operator_loc, value, operator, location)
3160
3965
  @name_loc = name_loc
3161
3966
  @operator_loc = operator_loc
3162
3967
  @value = value
3968
+ @operator = operator
3163
3969
  @location = location
3164
3970
  end
3165
3971
 
3166
3972
  # def accept: (visitor: Visitor) -> void
3167
3973
  def accept(visitor)
3168
- visitor.visit_instance_variable_operator_or_write_node(self)
3974
+ visitor.visit_instance_variable_operator_write_node(self)
3169
3975
  end
3170
3976
 
3171
3977
  # def child_nodes: () -> Array[nil | Node]
@@ -3173,30 +3979,36 @@ module YARP
3173
3979
  [value]
3174
3980
  end
3175
3981
 
3982
+ # def copy: (**params) -> InstanceVariableOperatorWriteNode
3983
+ def copy(**params)
3984
+ InstanceVariableOperatorWriteNode.new(
3985
+ params.fetch(:name_loc) { name_loc },
3986
+ params.fetch(:operator_loc) { operator_loc },
3987
+ params.fetch(:value) { value },
3988
+ params.fetch(:operator) { operator },
3989
+ params.fetch(:location) { location },
3990
+ )
3991
+ end
3992
+
3176
3993
  # def deconstruct: () -> Array[nil | Node]
3177
3994
  alias deconstruct child_nodes
3178
3995
 
3179
3996
  # def deconstruct_keys: (keys: Array[Symbol]) -> Hash[Symbol, nil | Node | Array[Node] | String | Token | Array[Token] | Location]
3180
3997
  def deconstruct_keys(keys)
3181
- { name_loc: name_loc, operator_loc: operator_loc, value: value, location: location }
3998
+ { name_loc: name_loc, operator_loc: operator_loc, value: value, operator: operator, location: location }
3182
3999
  end
3183
4000
 
3184
4001
  # def name: () -> String
3185
4002
  def name
3186
4003
  name_loc.slice
3187
4004
  end
3188
-
3189
- # def operator: () -> String
3190
- def operator
3191
- operator_loc.slice
3192
- end
3193
4005
  end
3194
4006
 
3195
- # Represents assigning to an instance variable using an operator that isn't `=`.
4007
+ # Represents the use of the `||=` operator for assignment to an instance variable.
3196
4008
  #
3197
- # @target += value
3198
- # ^^^^^^^^^^^^^^^^
3199
- class InstanceVariableOperatorWriteNode < Node
4009
+ # @target ||= value
4010
+ # ^^^^^^^^^^^^^^^^^
4011
+ class InstanceVariableOrWriteNode < Node
3200
4012
  # attr_reader name_loc: Location
3201
4013
  attr_reader :name_loc
3202
4014
 
@@ -3206,21 +4018,17 @@ module YARP
3206
4018
  # attr_reader value: Node
3207
4019
  attr_reader :value
3208
4020
 
3209
- # attr_reader operator: Symbol
3210
- attr_reader :operator
3211
-
3212
- # def initialize: (name_loc: Location, operator_loc: Location, value: Node, operator: Symbol, location: Location) -> void
3213
- def initialize(name_loc, operator_loc, value, operator, location)
4021
+ # def initialize: (name_loc: Location, operator_loc: Location, value: Node, location: Location) -> void
4022
+ def initialize(name_loc, operator_loc, value, location)
3214
4023
  @name_loc = name_loc
3215
4024
  @operator_loc = operator_loc
3216
4025
  @value = value
3217
- @operator = operator
3218
4026
  @location = location
3219
4027
  end
3220
4028
 
3221
4029
  # def accept: (visitor: Visitor) -> void
3222
4030
  def accept(visitor)
3223
- visitor.visit_instance_variable_operator_write_node(self)
4031
+ visitor.visit_instance_variable_or_write_node(self)
3224
4032
  end
3225
4033
 
3226
4034
  # def child_nodes: () -> Array[nil | Node]
@@ -3228,18 +4036,33 @@ module YARP
3228
4036
  [value]
3229
4037
  end
3230
4038
 
4039
+ # def copy: (**params) -> InstanceVariableOrWriteNode
4040
+ def copy(**params)
4041
+ InstanceVariableOrWriteNode.new(
4042
+ params.fetch(:name_loc) { name_loc },
4043
+ params.fetch(:operator_loc) { operator_loc },
4044
+ params.fetch(:value) { value },
4045
+ params.fetch(:location) { location },
4046
+ )
4047
+ end
4048
+
3231
4049
  # def deconstruct: () -> Array[nil | Node]
3232
4050
  alias deconstruct child_nodes
3233
4051
 
3234
4052
  # def deconstruct_keys: (keys: Array[Symbol]) -> Hash[Symbol, nil | Node | Array[Node] | String | Token | Array[Token] | Location]
3235
4053
  def deconstruct_keys(keys)
3236
- { name_loc: name_loc, operator_loc: operator_loc, value: value, operator: operator, location: location }
4054
+ { name_loc: name_loc, operator_loc: operator_loc, value: value, location: location }
3237
4055
  end
3238
4056
 
3239
4057
  # def name: () -> String
3240
4058
  def name
3241
4059
  name_loc.slice
3242
4060
  end
4061
+
4062
+ # def operator: () -> String
4063
+ def operator
4064
+ operator_loc.slice
4065
+ end
3243
4066
  end
3244
4067
 
3245
4068
  # Represents referencing an instance variable.
@@ -3262,6 +4085,49 @@ module YARP
3262
4085
  []
3263
4086
  end
3264
4087
 
4088
+ # def copy: (**params) -> InstanceVariableReadNode
4089
+ def copy(**params)
4090
+ InstanceVariableReadNode.new(
4091
+ params.fetch(:location) { location },
4092
+ )
4093
+ end
4094
+
4095
+ # def deconstruct: () -> Array[nil | Node]
4096
+ alias deconstruct child_nodes
4097
+
4098
+ # def deconstruct_keys: (keys: Array[Symbol]) -> Hash[Symbol, nil | Node | Array[Node] | String | Token | Array[Token] | Location]
4099
+ def deconstruct_keys(keys)
4100
+ { location: location }
4101
+ end
4102
+ end
4103
+
4104
+ # Represents writing to an instance variable in a context that doesn't have an explicit value.
4105
+ #
4106
+ # @foo, @bar = baz
4107
+ # ^^^^ ^^^^
4108
+ class InstanceVariableTargetNode < Node
4109
+ # def initialize: (location: Location) -> void
4110
+ def initialize(location)
4111
+ @location = location
4112
+ end
4113
+
4114
+ # def accept: (visitor: Visitor) -> void
4115
+ def accept(visitor)
4116
+ visitor.visit_instance_variable_target_node(self)
4117
+ end
4118
+
4119
+ # def child_nodes: () -> Array[nil | Node]
4120
+ def child_nodes
4121
+ []
4122
+ end
4123
+
4124
+ # def copy: (**params) -> InstanceVariableTargetNode
4125
+ def copy(**params)
4126
+ InstanceVariableTargetNode.new(
4127
+ params.fetch(:location) { location },
4128
+ )
4129
+ end
4130
+
3265
4131
  # def deconstruct: () -> Array[nil | Node]
3266
4132
  alias deconstruct child_nodes
3267
4133
 
@@ -3279,13 +4145,13 @@ module YARP
3279
4145
  # attr_reader name_loc: Location
3280
4146
  attr_reader :name_loc
3281
4147
 
3282
- # attr_reader value: Node?
4148
+ # attr_reader value: Node
3283
4149
  attr_reader :value
3284
4150
 
3285
- # attr_reader operator_loc: Location?
4151
+ # attr_reader operator_loc: Location
3286
4152
  attr_reader :operator_loc
3287
4153
 
3288
- # def initialize: (name_loc: Location, value: Node?, operator_loc: Location?, location: Location) -> void
4154
+ # def initialize: (name_loc: Location, value: Node, operator_loc: Location, location: Location) -> void
3289
4155
  def initialize(name_loc, value, operator_loc, location)
3290
4156
  @name_loc = name_loc
3291
4157
  @value = value
@@ -3303,6 +4169,16 @@ module YARP
3303
4169
  [value]
3304
4170
  end
3305
4171
 
4172
+ # def copy: (**params) -> InstanceVariableWriteNode
4173
+ def copy(**params)
4174
+ InstanceVariableWriteNode.new(
4175
+ params.fetch(:name_loc) { name_loc },
4176
+ params.fetch(:value) { value },
4177
+ params.fetch(:operator_loc) { operator_loc },
4178
+ params.fetch(:location) { location },
4179
+ )
4180
+ end
4181
+
3306
4182
  # def deconstruct: () -> Array[nil | Node]
3307
4183
  alias deconstruct child_nodes
3308
4184
 
@@ -3316,9 +4192,9 @@ module YARP
3316
4192
  name_loc.slice
3317
4193
  end
3318
4194
 
3319
- # def operator: () -> String?
4195
+ # def operator: () -> String
3320
4196
  def operator
3321
- operator_loc&.slice
4197
+ operator_loc.slice
3322
4198
  end
3323
4199
  end
3324
4200
 
@@ -3342,6 +4218,13 @@ module YARP
3342
4218
  []
3343
4219
  end
3344
4220
 
4221
+ # def copy: (**params) -> IntegerNode
4222
+ def copy(**params)
4223
+ IntegerNode.new(
4224
+ params.fetch(:location) { location },
4225
+ )
4226
+ end
4227
+
3345
4228
  # def deconstruct: () -> Array[nil | Node]
3346
4229
  alias deconstruct child_nodes
3347
4230
 
@@ -3392,6 +4275,17 @@ module YARP
3392
4275
  [*parts]
3393
4276
  end
3394
4277
 
4278
+ # def copy: (**params) -> InterpolatedRegularExpressionNode
4279
+ def copy(**params)
4280
+ InterpolatedRegularExpressionNode.new(
4281
+ params.fetch(:opening_loc) { opening_loc },
4282
+ params.fetch(:parts) { parts },
4283
+ params.fetch(:closing_loc) { closing_loc },
4284
+ params.fetch(:flags) { flags },
4285
+ params.fetch(:location) { location },
4286
+ )
4287
+ end
4288
+
3395
4289
  # def deconstruct: () -> Array[nil | Node]
3396
4290
  alias deconstruct child_nodes
3397
4291
 
@@ -3488,6 +4382,16 @@ module YARP
3488
4382
  [*parts]
3489
4383
  end
3490
4384
 
4385
+ # def copy: (**params) -> InterpolatedStringNode
4386
+ def copy(**params)
4387
+ InterpolatedStringNode.new(
4388
+ params.fetch(:opening_loc) { opening_loc },
4389
+ params.fetch(:parts) { parts },
4390
+ params.fetch(:closing_loc) { closing_loc },
4391
+ params.fetch(:location) { location },
4392
+ )
4393
+ end
4394
+
3491
4395
  # def deconstruct: () -> Array[nil | Node]
3492
4396
  alias deconstruct child_nodes
3493
4397
 
@@ -3544,6 +4448,16 @@ module YARP
3544
4448
  [*parts]
3545
4449
  end
3546
4450
 
4451
+ # def copy: (**params) -> InterpolatedSymbolNode
4452
+ def copy(**params)
4453
+ InterpolatedSymbolNode.new(
4454
+ params.fetch(:opening_loc) { opening_loc },
4455
+ params.fetch(:parts) { parts },
4456
+ params.fetch(:closing_loc) { closing_loc },
4457
+ params.fetch(:location) { location },
4458
+ )
4459
+ end
4460
+
3547
4461
  # def deconstruct: () -> Array[nil | Node]
3548
4462
  alias deconstruct child_nodes
3549
4463
 
@@ -3600,6 +4514,16 @@ module YARP
3600
4514
  [*parts]
3601
4515
  end
3602
4516
 
4517
+ # def copy: (**params) -> InterpolatedXStringNode
4518
+ def copy(**params)
4519
+ InterpolatedXStringNode.new(
4520
+ params.fetch(:opening_loc) { opening_loc },
4521
+ params.fetch(:parts) { parts },
4522
+ params.fetch(:closing_loc) { closing_loc },
4523
+ params.fetch(:location) { location },
4524
+ )
4525
+ end
4526
+
3603
4527
  # def deconstruct: () -> Array[nil | Node]
3604
4528
  alias deconstruct child_nodes
3605
4529
 
@@ -3643,6 +4567,14 @@ module YARP
3643
4567
  [*elements]
3644
4568
  end
3645
4569
 
4570
+ # def copy: (**params) -> KeywordHashNode
4571
+ def copy(**params)
4572
+ KeywordHashNode.new(
4573
+ params.fetch(:elements) { elements },
4574
+ params.fetch(:location) { location },
4575
+ )
4576
+ end
4577
+
3646
4578
  # def deconstruct: () -> Array[nil | Node]
3647
4579
  alias deconstruct child_nodes
3648
4580
 
@@ -3685,6 +4617,15 @@ module YARP
3685
4617
  [value]
3686
4618
  end
3687
4619
 
4620
+ # def copy: (**params) -> KeywordParameterNode
4621
+ def copy(**params)
4622
+ KeywordParameterNode.new(
4623
+ params.fetch(:name_loc) { name_loc },
4624
+ params.fetch(:value) { value },
4625
+ params.fetch(:location) { location },
4626
+ )
4627
+ end
4628
+
3688
4629
  # def deconstruct: () -> Array[nil | Node]
3689
4630
  alias deconstruct child_nodes
3690
4631
 
@@ -3728,6 +4669,15 @@ module YARP
3728
4669
  []
3729
4670
  end
3730
4671
 
4672
+ # def copy: (**params) -> KeywordRestParameterNode
4673
+ def copy(**params)
4674
+ KeywordRestParameterNode.new(
4675
+ params.fetch(:operator_loc) { operator_loc },
4676
+ params.fetch(:name_loc) { name_loc },
4677
+ params.fetch(:location) { location },
4678
+ )
4679
+ end
4680
+
3731
4681
  # def deconstruct: () -> Array[nil | Node]
3732
4682
  alias deconstruct child_nodes
3733
4683
 
@@ -3755,21 +4705,29 @@ module YARP
3755
4705
  # attr_reader locals: Array[Symbol]
3756
4706
  attr_reader :locals
3757
4707
 
4708
+ # attr_reader operator_loc: Location
4709
+ attr_reader :operator_loc
4710
+
3758
4711
  # attr_reader opening_loc: Location
3759
4712
  attr_reader :opening_loc
3760
4713
 
3761
- # attr_reader parameters: Node?
4714
+ # attr_reader closing_loc: Location
4715
+ attr_reader :closing_loc
4716
+
4717
+ # attr_reader parameters: BlockParametersNode?
3762
4718
  attr_reader :parameters
3763
4719
 
3764
- # attr_reader statements: Node?
3765
- attr_reader :statements
4720
+ # attr_reader body: Node?
4721
+ attr_reader :body
3766
4722
 
3767
- # def initialize: (locals: Array[Symbol], opening_loc: Location, parameters: Node?, statements: Node?, location: Location) -> void
3768
- def initialize(locals, opening_loc, parameters, statements, location)
4723
+ # def initialize: (locals: Array[Symbol], operator_loc: Location, opening_loc: Location, closing_loc: Location, parameters: BlockParametersNode?, body: Node?, location: Location) -> void
4724
+ def initialize(locals, operator_loc, opening_loc, closing_loc, parameters, body, location)
3769
4725
  @locals = locals
4726
+ @operator_loc = operator_loc
3770
4727
  @opening_loc = opening_loc
4728
+ @closing_loc = closing_loc
3771
4729
  @parameters = parameters
3772
- @statements = statements
4730
+ @body = body
3773
4731
  @location = location
3774
4732
  end
3775
4733
 
@@ -3780,7 +4738,20 @@ module YARP
3780
4738
 
3781
4739
  # def child_nodes: () -> Array[nil | Node]
3782
4740
  def child_nodes
3783
- [parameters, statements]
4741
+ [parameters, body]
4742
+ end
4743
+
4744
+ # def copy: (**params) -> LambdaNode
4745
+ def copy(**params)
4746
+ LambdaNode.new(
4747
+ params.fetch(:locals) { locals },
4748
+ params.fetch(:operator_loc) { operator_loc },
4749
+ params.fetch(:opening_loc) { opening_loc },
4750
+ params.fetch(:closing_loc) { closing_loc },
4751
+ params.fetch(:parameters) { parameters },
4752
+ params.fetch(:body) { body },
4753
+ params.fetch(:location) { location },
4754
+ )
3784
4755
  end
3785
4756
 
3786
4757
  # def deconstruct: () -> Array[nil | Node]
@@ -3788,20 +4759,30 @@ module YARP
3788
4759
 
3789
4760
  # def deconstruct_keys: (keys: Array[Symbol]) -> Hash[Symbol, nil | Node | Array[Node] | String | Token | Array[Token] | Location]
3790
4761
  def deconstruct_keys(keys)
3791
- { locals: locals, opening_loc: opening_loc, parameters: parameters, statements: statements, location: location }
4762
+ { locals: locals, operator_loc: operator_loc, opening_loc: opening_loc, closing_loc: closing_loc, parameters: parameters, body: body, location: location }
4763
+ end
4764
+
4765
+ # def operator: () -> String
4766
+ def operator
4767
+ operator_loc.slice
3792
4768
  end
3793
4769
 
3794
4770
  # def opening: () -> String
3795
4771
  def opening
3796
4772
  opening_loc.slice
3797
4773
  end
4774
+
4775
+ # def closing: () -> String
4776
+ def closing
4777
+ closing_loc.slice
4778
+ end
3798
4779
  end
3799
4780
 
3800
4781
  # Represents the use of the `&&=` operator for assignment to a local variable.
3801
4782
  #
3802
4783
  # target &&= value
3803
4784
  # ^^^^^^^^^^^^^^^^
3804
- class LocalVariableOperatorAndWriteNode < Node
4785
+ class LocalVariableAndWriteNode < Node
3805
4786
  # attr_reader name_loc: Location
3806
4787
  attr_reader :name_loc
3807
4788
 
@@ -3814,18 +4795,22 @@ module YARP
3814
4795
  # attr_reader constant_id: Symbol
3815
4796
  attr_reader :constant_id
3816
4797
 
3817
- # def initialize: (name_loc: Location, operator_loc: Location, value: Node, constant_id: Symbol, location: Location) -> void
3818
- def initialize(name_loc, operator_loc, value, constant_id, location)
4798
+ # attr_reader depth: Integer
4799
+ attr_reader :depth
4800
+
4801
+ # def initialize: (name_loc: Location, operator_loc: Location, value: Node, constant_id: Symbol, depth: Integer, location: Location) -> void
4802
+ def initialize(name_loc, operator_loc, value, constant_id, depth, location)
3819
4803
  @name_loc = name_loc
3820
4804
  @operator_loc = operator_loc
3821
4805
  @value = value
3822
4806
  @constant_id = constant_id
4807
+ @depth = depth
3823
4808
  @location = location
3824
4809
  end
3825
4810
 
3826
4811
  # def accept: (visitor: Visitor) -> void
3827
4812
  def accept(visitor)
3828
- visitor.visit_local_variable_operator_and_write_node(self)
4813
+ visitor.visit_local_variable_and_write_node(self)
3829
4814
  end
3830
4815
 
3831
4816
  # def child_nodes: () -> Array[nil | Node]
@@ -3833,12 +4818,24 @@ module YARP
3833
4818
  [value]
3834
4819
  end
3835
4820
 
4821
+ # def copy: (**params) -> LocalVariableAndWriteNode
4822
+ def copy(**params)
4823
+ LocalVariableAndWriteNode.new(
4824
+ params.fetch(:name_loc) { name_loc },
4825
+ params.fetch(:operator_loc) { operator_loc },
4826
+ params.fetch(:value) { value },
4827
+ params.fetch(:constant_id) { constant_id },
4828
+ params.fetch(:depth) { depth },
4829
+ params.fetch(:location) { location },
4830
+ )
4831
+ end
4832
+
3836
4833
  # def deconstruct: () -> Array[nil | Node]
3837
4834
  alias deconstruct child_nodes
3838
4835
 
3839
4836
  # def deconstruct_keys: (keys: Array[Symbol]) -> Hash[Symbol, nil | Node | Array[Node] | String | Token | Array[Token] | Location]
3840
4837
  def deconstruct_keys(keys)
3841
- { name_loc: name_loc, operator_loc: operator_loc, value: value, constant_id: constant_id, location: location }
4838
+ { name_loc: name_loc, operator_loc: operator_loc, value: value, constant_id: constant_id, depth: depth, location: location }
3842
4839
  end
3843
4840
 
3844
4841
  # def name: () -> String
@@ -3852,11 +4849,11 @@ module YARP
3852
4849
  end
3853
4850
  end
3854
4851
 
3855
- # Represents the use of the `||=` operator for assignment to a local variable.
4852
+ # Represents assigning to a local variable using an operator that isn't `=`.
3856
4853
  #
3857
- # target ||= value
3858
- # ^^^^^^^^^^^^^^^^
3859
- class LocalVariableOperatorOrWriteNode < Node
4854
+ # target += value
4855
+ # ^^^^^^^^^^^^^^^
4856
+ class LocalVariableOperatorWriteNode < Node
3860
4857
  # attr_reader name_loc: Location
3861
4858
  attr_reader :name_loc
3862
4859
 
@@ -3869,18 +4866,26 @@ module YARP
3869
4866
  # attr_reader constant_id: Symbol
3870
4867
  attr_reader :constant_id
3871
4868
 
3872
- # def initialize: (name_loc: Location, operator_loc: Location, value: Node, constant_id: Symbol, location: Location) -> void
3873
- def initialize(name_loc, operator_loc, value, constant_id, location)
4869
+ # attr_reader operator_id: Symbol
4870
+ attr_reader :operator_id
4871
+
4872
+ # attr_reader depth: Integer
4873
+ attr_reader :depth
4874
+
4875
+ # def initialize: (name_loc: Location, operator_loc: Location, value: Node, constant_id: Symbol, operator_id: Symbol, depth: Integer, location: Location) -> void
4876
+ def initialize(name_loc, operator_loc, value, constant_id, operator_id, depth, location)
3874
4877
  @name_loc = name_loc
3875
4878
  @operator_loc = operator_loc
3876
4879
  @value = value
3877
4880
  @constant_id = constant_id
4881
+ @operator_id = operator_id
4882
+ @depth = depth
3878
4883
  @location = location
3879
4884
  end
3880
4885
 
3881
4886
  # def accept: (visitor: Visitor) -> void
3882
4887
  def accept(visitor)
3883
- visitor.visit_local_variable_operator_or_write_node(self)
4888
+ visitor.visit_local_variable_operator_write_node(self)
3884
4889
  end
3885
4890
 
3886
4891
  # def child_nodes: () -> Array[nil | Node]
@@ -3888,12 +4893,25 @@ module YARP
3888
4893
  [value]
3889
4894
  end
3890
4895
 
4896
+ # def copy: (**params) -> LocalVariableOperatorWriteNode
4897
+ def copy(**params)
4898
+ LocalVariableOperatorWriteNode.new(
4899
+ params.fetch(:name_loc) { name_loc },
4900
+ params.fetch(:operator_loc) { operator_loc },
4901
+ params.fetch(:value) { value },
4902
+ params.fetch(:constant_id) { constant_id },
4903
+ params.fetch(:operator_id) { operator_id },
4904
+ params.fetch(:depth) { depth },
4905
+ params.fetch(:location) { location },
4906
+ )
4907
+ end
4908
+
3891
4909
  # def deconstruct: () -> Array[nil | Node]
3892
4910
  alias deconstruct child_nodes
3893
4911
 
3894
4912
  # def deconstruct_keys: (keys: Array[Symbol]) -> Hash[Symbol, nil | Node | Array[Node] | String | Token | Array[Token] | Location]
3895
4913
  def deconstruct_keys(keys)
3896
- { name_loc: name_loc, operator_loc: operator_loc, value: value, constant_id: constant_id, location: location }
4914
+ { name_loc: name_loc, operator_loc: operator_loc, value: value, constant_id: constant_id, operator_id: operator_id, depth: depth, location: location }
3897
4915
  end
3898
4916
 
3899
4917
  # def name: () -> String
@@ -3907,11 +4925,11 @@ module YARP
3907
4925
  end
3908
4926
  end
3909
4927
 
3910
- # Represents assigning to a local variable using an operator that isn't `=`.
4928
+ # Represents the use of the `||=` operator for assignment to a local variable.
3911
4929
  #
3912
- # target += value
3913
- # ^^^^^^^^^^^^^^^
3914
- class LocalVariableOperatorWriteNode < Node
4930
+ # target ||= value
4931
+ # ^^^^^^^^^^^^^^^^
4932
+ class LocalVariableOrWriteNode < Node
3915
4933
  # attr_reader name_loc: Location
3916
4934
  attr_reader :name_loc
3917
4935
 
@@ -3924,22 +4942,22 @@ module YARP
3924
4942
  # attr_reader constant_id: Symbol
3925
4943
  attr_reader :constant_id
3926
4944
 
3927
- # attr_reader operator_id: Symbol
3928
- attr_reader :operator_id
4945
+ # attr_reader depth: Integer
4946
+ attr_reader :depth
3929
4947
 
3930
- # def initialize: (name_loc: Location, operator_loc: Location, value: Node, constant_id: Symbol, operator_id: Symbol, location: Location) -> void
3931
- def initialize(name_loc, operator_loc, value, constant_id, operator_id, location)
4948
+ # def initialize: (name_loc: Location, operator_loc: Location, value: Node, constant_id: Symbol, depth: Integer, location: Location) -> void
4949
+ def initialize(name_loc, operator_loc, value, constant_id, depth, location)
3932
4950
  @name_loc = name_loc
3933
4951
  @operator_loc = operator_loc
3934
4952
  @value = value
3935
4953
  @constant_id = constant_id
3936
- @operator_id = operator_id
4954
+ @depth = depth
3937
4955
  @location = location
3938
4956
  end
3939
4957
 
3940
4958
  # def accept: (visitor: Visitor) -> void
3941
4959
  def accept(visitor)
3942
- visitor.visit_local_variable_operator_write_node(self)
4960
+ visitor.visit_local_variable_or_write_node(self)
3943
4961
  end
3944
4962
 
3945
4963
  # def child_nodes: () -> Array[nil | Node]
@@ -3947,12 +4965,24 @@ module YARP
3947
4965
  [value]
3948
4966
  end
3949
4967
 
4968
+ # def copy: (**params) -> LocalVariableOrWriteNode
4969
+ def copy(**params)
4970
+ LocalVariableOrWriteNode.new(
4971
+ params.fetch(:name_loc) { name_loc },
4972
+ params.fetch(:operator_loc) { operator_loc },
4973
+ params.fetch(:value) { value },
4974
+ params.fetch(:constant_id) { constant_id },
4975
+ params.fetch(:depth) { depth },
4976
+ params.fetch(:location) { location },
4977
+ )
4978
+ end
4979
+
3950
4980
  # def deconstruct: () -> Array[nil | Node]
3951
4981
  alias deconstruct child_nodes
3952
4982
 
3953
4983
  # def deconstruct_keys: (keys: Array[Symbol]) -> Hash[Symbol, nil | Node | Array[Node] | String | Token | Array[Token] | Location]
3954
4984
  def deconstruct_keys(keys)
3955
- { name_loc: name_loc, operator_loc: operator_loc, value: value, constant_id: constant_id, operator_id: operator_id, location: location }
4985
+ { name_loc: name_loc, operator_loc: operator_loc, value: value, constant_id: constant_id, depth: depth, location: location }
3956
4986
  end
3957
4987
 
3958
4988
  # def name: () -> String
@@ -3996,6 +5026,61 @@ module YARP
3996
5026
  []
3997
5027
  end
3998
5028
 
5029
+ # def copy: (**params) -> LocalVariableReadNode
5030
+ def copy(**params)
5031
+ LocalVariableReadNode.new(
5032
+ params.fetch(:constant_id) { constant_id },
5033
+ params.fetch(:depth) { depth },
5034
+ params.fetch(:location) { location },
5035
+ )
5036
+ end
5037
+
5038
+ # def deconstruct: () -> Array[nil | Node]
5039
+ alias deconstruct child_nodes
5040
+
5041
+ # def deconstruct_keys: (keys: Array[Symbol]) -> Hash[Symbol, nil | Node | Array[Node] | String | Token | Array[Token] | Location]
5042
+ def deconstruct_keys(keys)
5043
+ { constant_id: constant_id, depth: depth, location: location }
5044
+ end
5045
+ end
5046
+
5047
+ # Represents writing to a local variable in a context that doesn't have an explicit value.
5048
+ #
5049
+ # foo, bar = baz
5050
+ # ^^^ ^^^
5051
+ class LocalVariableTargetNode < Node
5052
+ # attr_reader constant_id: Symbol
5053
+ attr_reader :constant_id
5054
+
5055
+ # attr_reader depth: Integer
5056
+ attr_reader :depth
5057
+
5058
+ # def initialize: (constant_id: Symbol, depth: Integer, location: Location) -> void
5059
+ def initialize(constant_id, depth, location)
5060
+ @constant_id = constant_id
5061
+ @depth = depth
5062
+ @location = location
5063
+ end
5064
+
5065
+ # def accept: (visitor: Visitor) -> void
5066
+ def accept(visitor)
5067
+ visitor.visit_local_variable_target_node(self)
5068
+ end
5069
+
5070
+ # def child_nodes: () -> Array[nil | Node]
5071
+ def child_nodes
5072
+ []
5073
+ end
5074
+
5075
+ # def copy: (**params) -> LocalVariableTargetNode
5076
+ def copy(**params)
5077
+ LocalVariableTargetNode.new(
5078
+ params.fetch(:constant_id) { constant_id },
5079
+ params.fetch(:depth) { depth },
5080
+ params.fetch(:location) { location },
5081
+ )
5082
+ end
5083
+
3999
5084
  # def deconstruct: () -> Array[nil | Node]
4000
5085
  alias deconstruct child_nodes
4001
5086
 
@@ -4016,16 +5101,16 @@ module YARP
4016
5101
  # attr_reader depth: Integer
4017
5102
  attr_reader :depth
4018
5103
 
4019
- # attr_reader value: Node?
5104
+ # attr_reader value: Node
4020
5105
  attr_reader :value
4021
5106
 
4022
5107
  # attr_reader name_loc: Location
4023
5108
  attr_reader :name_loc
4024
5109
 
4025
- # attr_reader operator_loc: Location?
5110
+ # attr_reader operator_loc: Location
4026
5111
  attr_reader :operator_loc
4027
5112
 
4028
- # def initialize: (constant_id: Symbol, depth: Integer, value: Node?, name_loc: Location, operator_loc: Location?, location: Location) -> void
5113
+ # def initialize: (constant_id: Symbol, depth: Integer, value: Node, name_loc: Location, operator_loc: Location, location: Location) -> void
4029
5114
  def initialize(constant_id, depth, value, name_loc, operator_loc, location)
4030
5115
  @constant_id = constant_id
4031
5116
  @depth = depth
@@ -4045,6 +5130,18 @@ module YARP
4045
5130
  [value]
4046
5131
  end
4047
5132
 
5133
+ # def copy: (**params) -> LocalVariableWriteNode
5134
+ def copy(**params)
5135
+ LocalVariableWriteNode.new(
5136
+ params.fetch(:constant_id) { constant_id },
5137
+ params.fetch(:depth) { depth },
5138
+ params.fetch(:value) { value },
5139
+ params.fetch(:name_loc) { name_loc },
5140
+ params.fetch(:operator_loc) { operator_loc },
5141
+ params.fetch(:location) { location },
5142
+ )
5143
+ end
5144
+
4048
5145
  # def deconstruct: () -> Array[nil | Node]
4049
5146
  alias deconstruct child_nodes
4050
5147
 
@@ -4058,9 +5155,9 @@ module YARP
4058
5155
  name_loc.slice
4059
5156
  end
4060
5157
 
4061
- # def operator: () -> String?
5158
+ # def operator: () -> String
4062
5159
  def operator
4063
- operator_loc&.slice
5160
+ operator_loc.slice
4064
5161
  end
4065
5162
  end
4066
5163
 
@@ -4096,6 +5193,16 @@ module YARP
4096
5193
  [value, pattern]
4097
5194
  end
4098
5195
 
5196
+ # def copy: (**params) -> MatchPredicateNode
5197
+ def copy(**params)
5198
+ MatchPredicateNode.new(
5199
+ params.fetch(:value) { value },
5200
+ params.fetch(:pattern) { pattern },
5201
+ params.fetch(:operator_loc) { operator_loc },
5202
+ params.fetch(:location) { location },
5203
+ )
5204
+ end
5205
+
4099
5206
  # def deconstruct: () -> Array[nil | Node]
4100
5207
  alias deconstruct child_nodes
4101
5208
 
@@ -4142,6 +5249,16 @@ module YARP
4142
5249
  [value, pattern]
4143
5250
  end
4144
5251
 
5252
+ # def copy: (**params) -> MatchRequiredNode
5253
+ def copy(**params)
5254
+ MatchRequiredNode.new(
5255
+ params.fetch(:value) { value },
5256
+ params.fetch(:pattern) { pattern },
5257
+ params.fetch(:operator_loc) { operator_loc },
5258
+ params.fetch(:location) { location },
5259
+ )
5260
+ end
5261
+
4145
5262
  # def deconstruct: () -> Array[nil | Node]
4146
5263
  alias deconstruct child_nodes
4147
5264
 
@@ -4174,6 +5291,13 @@ module YARP
4174
5291
  []
4175
5292
  end
4176
5293
 
5294
+ # def copy: (**params) -> MissingNode
5295
+ def copy(**params)
5296
+ MissingNode.new(
5297
+ params.fetch(:location) { location },
5298
+ )
5299
+ end
5300
+
4177
5301
  # def deconstruct: () -> Array[nil | Node]
4178
5302
  alias deconstruct child_nodes
4179
5303
 
@@ -4197,19 +5321,23 @@ module YARP
4197
5321
  # attr_reader constant_path: Node
4198
5322
  attr_reader :constant_path
4199
5323
 
4200
- # attr_reader statements: Node?
4201
- attr_reader :statements
5324
+ # attr_reader body: Node?
5325
+ attr_reader :body
4202
5326
 
4203
5327
  # attr_reader end_keyword_loc: Location
4204
5328
  attr_reader :end_keyword_loc
4205
5329
 
4206
- # def initialize: (locals: Array[Symbol], module_keyword_loc: Location, constant_path: Node, statements: Node?, end_keyword_loc: Location, location: Location) -> void
4207
- def initialize(locals, module_keyword_loc, constant_path, statements, end_keyword_loc, location)
5330
+ # attr_reader name: String
5331
+ attr_reader :name
5332
+
5333
+ # def initialize: (locals: Array[Symbol], module_keyword_loc: Location, constant_path: Node, body: Node?, end_keyword_loc: Location, name: String, location: Location) -> void
5334
+ def initialize(locals, module_keyword_loc, constant_path, body, end_keyword_loc, name, location)
4208
5335
  @locals = locals
4209
5336
  @module_keyword_loc = module_keyword_loc
4210
5337
  @constant_path = constant_path
4211
- @statements = statements
5338
+ @body = body
4212
5339
  @end_keyword_loc = end_keyword_loc
5340
+ @name = name
4213
5341
  @location = location
4214
5342
  end
4215
5343
 
@@ -4220,7 +5348,20 @@ module YARP
4220
5348
 
4221
5349
  # def child_nodes: () -> Array[nil | Node]
4222
5350
  def child_nodes
4223
- [constant_path, statements]
5351
+ [constant_path, body]
5352
+ end
5353
+
5354
+ # def copy: (**params) -> ModuleNode
5355
+ def copy(**params)
5356
+ ModuleNode.new(
5357
+ params.fetch(:locals) { locals },
5358
+ params.fetch(:module_keyword_loc) { module_keyword_loc },
5359
+ params.fetch(:constant_path) { constant_path },
5360
+ params.fetch(:body) { body },
5361
+ params.fetch(:end_keyword_loc) { end_keyword_loc },
5362
+ params.fetch(:name) { name },
5363
+ params.fetch(:location) { location },
5364
+ )
4224
5365
  end
4225
5366
 
4226
5367
  # def deconstruct: () -> Array[nil | Node]
@@ -4228,7 +5369,7 @@ module YARP
4228
5369
 
4229
5370
  # def deconstruct_keys: (keys: Array[Symbol]) -> Hash[Symbol, nil | Node | Array[Node] | String | Token | Array[Token] | Location]
4230
5371
  def deconstruct_keys(keys)
4231
- { locals: locals, module_keyword_loc: module_keyword_loc, constant_path: constant_path, statements: statements, end_keyword_loc: end_keyword_loc, location: location }
5372
+ { locals: locals, module_keyword_loc: module_keyword_loc, constant_path: constant_path, body: body, end_keyword_loc: end_keyword_loc, name: name, location: location }
4232
5373
  end
4233
5374
 
4234
5375
  # def module_keyword: () -> String
@@ -4282,6 +5423,18 @@ module YARP
4282
5423
  [*targets, value]
4283
5424
  end
4284
5425
 
5426
+ # def copy: (**params) -> MultiWriteNode
5427
+ def copy(**params)
5428
+ MultiWriteNode.new(
5429
+ params.fetch(:targets) { targets },
5430
+ params.fetch(:operator_loc) { operator_loc },
5431
+ params.fetch(:value) { value },
5432
+ params.fetch(:lparen_loc) { lparen_loc },
5433
+ params.fetch(:rparen_loc) { rparen_loc },
5434
+ params.fetch(:location) { location },
5435
+ )
5436
+ end
5437
+
4285
5438
  # def deconstruct: () -> Array[nil | Node]
4286
5439
  alias deconstruct child_nodes
4287
5440
 
@@ -4311,13 +5464,13 @@ module YARP
4311
5464
  # next 1
4312
5465
  # ^^^^^^
4313
5466
  class NextNode < Node
4314
- # attr_reader arguments: Node?
5467
+ # attr_reader arguments: ArgumentsNode?
4315
5468
  attr_reader :arguments
4316
5469
 
4317
5470
  # attr_reader keyword_loc: Location
4318
5471
  attr_reader :keyword_loc
4319
5472
 
4320
- # def initialize: (arguments: Node?, keyword_loc: Location, location: Location) -> void
5473
+ # def initialize: (arguments: ArgumentsNode?, keyword_loc: Location, location: Location) -> void
4321
5474
  def initialize(arguments, keyword_loc, location)
4322
5475
  @arguments = arguments
4323
5476
  @keyword_loc = keyword_loc
@@ -4334,6 +5487,15 @@ module YARP
4334
5487
  [arguments]
4335
5488
  end
4336
5489
 
5490
+ # def copy: (**params) -> NextNode
5491
+ def copy(**params)
5492
+ NextNode.new(
5493
+ params.fetch(:arguments) { arguments },
5494
+ params.fetch(:keyword_loc) { keyword_loc },
5495
+ params.fetch(:location) { location },
5496
+ )
5497
+ end
5498
+
4337
5499
  # def deconstruct: () -> Array[nil | Node]
4338
5500
  alias deconstruct child_nodes
4339
5501
 
@@ -4368,6 +5530,13 @@ module YARP
4368
5530
  []
4369
5531
  end
4370
5532
 
5533
+ # def copy: (**params) -> NilNode
5534
+ def copy(**params)
5535
+ NilNode.new(
5536
+ params.fetch(:location) { location },
5537
+ )
5538
+ end
5539
+
4371
5540
  # def deconstruct: () -> Array[nil | Node]
4372
5541
  alias deconstruct child_nodes
4373
5542
 
@@ -4406,6 +5575,15 @@ module YARP
4406
5575
  []
4407
5576
  end
4408
5577
 
5578
+ # def copy: (**params) -> NoKeywordsParameterNode
5579
+ def copy(**params)
5580
+ NoKeywordsParameterNode.new(
5581
+ params.fetch(:operator_loc) { operator_loc },
5582
+ params.fetch(:keyword_loc) { keyword_loc },
5583
+ params.fetch(:location) { location },
5584
+ )
5585
+ end
5586
+
4409
5587
  # def deconstruct: () -> Array[nil | Node]
4410
5588
  alias deconstruct child_nodes
4411
5589
 
@@ -4445,6 +5623,13 @@ module YARP
4445
5623
  []
4446
5624
  end
4447
5625
 
5626
+ # def copy: (**params) -> NumberedReferenceReadNode
5627
+ def copy(**params)
5628
+ NumberedReferenceReadNode.new(
5629
+ params.fetch(:location) { location },
5630
+ )
5631
+ end
5632
+
4448
5633
  # def deconstruct: () -> Array[nil | Node]
4449
5634
  alias deconstruct child_nodes
4450
5635
 
@@ -4491,6 +5676,17 @@ module YARP
4491
5676
  [value]
4492
5677
  end
4493
5678
 
5679
+ # def copy: (**params) -> OptionalParameterNode
5680
+ def copy(**params)
5681
+ OptionalParameterNode.new(
5682
+ params.fetch(:constant_id) { constant_id },
5683
+ params.fetch(:name_loc) { name_loc },
5684
+ params.fetch(:operator_loc) { operator_loc },
5685
+ params.fetch(:value) { value },
5686
+ params.fetch(:location) { location },
5687
+ )
5688
+ end
5689
+
4494
5690
  # def deconstruct: () -> Array[nil | Node]
4495
5691
  alias deconstruct child_nodes
4496
5692
 
@@ -4542,6 +5738,16 @@ module YARP
4542
5738
  [left, right]
4543
5739
  end
4544
5740
 
5741
+ # def copy: (**params) -> OrNode
5742
+ def copy(**params)
5743
+ OrNode.new(
5744
+ params.fetch(:left) { left },
5745
+ params.fetch(:right) { right },
5746
+ params.fetch(:operator_loc) { operator_loc },
5747
+ params.fetch(:location) { location },
5748
+ )
5749
+ end
5750
+
4545
5751
  # def deconstruct: () -> Array[nil | Node]
4546
5752
  alias deconstruct child_nodes
4547
5753
 
@@ -4571,7 +5777,7 @@ module YARP
4571
5777
  # attr_reader posts: Array[Node]
4572
5778
  attr_reader :posts
4573
5779
 
4574
- # attr_reader rest: Node?
5780
+ # attr_reader rest: RestParameterNode?
4575
5781
  attr_reader :rest
4576
5782
 
4577
5783
  # attr_reader keywords: Array[Node]
@@ -4580,10 +5786,10 @@ module YARP
4580
5786
  # attr_reader keyword_rest: Node?
4581
5787
  attr_reader :keyword_rest
4582
5788
 
4583
- # attr_reader block: Node?
5789
+ # attr_reader block: BlockParameterNode?
4584
5790
  attr_reader :block
4585
5791
 
4586
- # def initialize: (requireds: Array[Node], optionals: Array[Node], posts: Array[Node], rest: Node?, keywords: Array[Node], keyword_rest: Node?, block: Node?, location: Location) -> void
5792
+ # def initialize: (requireds: Array[Node], optionals: Array[Node], posts: Array[Node], rest: RestParameterNode?, keywords: Array[Node], keyword_rest: Node?, block: BlockParameterNode?, location: Location) -> void
4587
5793
  def initialize(requireds, optionals, posts, rest, keywords, keyword_rest, block, location)
4588
5794
  @requireds = requireds
4589
5795
  @optionals = optionals
@@ -4605,6 +5811,20 @@ module YARP
4605
5811
  [*requireds, *optionals, *posts, rest, *keywords, keyword_rest, block]
4606
5812
  end
4607
5813
 
5814
+ # def copy: (**params) -> ParametersNode
5815
+ def copy(**params)
5816
+ ParametersNode.new(
5817
+ params.fetch(:requireds) { requireds },
5818
+ params.fetch(:optionals) { optionals },
5819
+ params.fetch(:posts) { posts },
5820
+ params.fetch(:rest) { rest },
5821
+ params.fetch(:keywords) { keywords },
5822
+ params.fetch(:keyword_rest) { keyword_rest },
5823
+ params.fetch(:block) { block },
5824
+ params.fetch(:location) { location },
5825
+ )
5826
+ end
5827
+
4608
5828
  # def deconstruct: () -> Array[nil | Node]
4609
5829
  alias deconstruct child_nodes
4610
5830
 
@@ -4619,8 +5839,8 @@ module YARP
4619
5839
  # (10 + 34)
4620
5840
  # ^^^^^^^^^
4621
5841
  class ParenthesesNode < Node
4622
- # attr_reader statements: Node?
4623
- attr_reader :statements
5842
+ # attr_reader body: Node?
5843
+ attr_reader :body
4624
5844
 
4625
5845
  # attr_reader opening_loc: Location
4626
5846
  attr_reader :opening_loc
@@ -4628,9 +5848,9 @@ module YARP
4628
5848
  # attr_reader closing_loc: Location
4629
5849
  attr_reader :closing_loc
4630
5850
 
4631
- # def initialize: (statements: Node?, opening_loc: Location, closing_loc: Location, location: Location) -> void
4632
- def initialize(statements, opening_loc, closing_loc, location)
4633
- @statements = statements
5851
+ # def initialize: (body: Node?, opening_loc: Location, closing_loc: Location, location: Location) -> void
5852
+ def initialize(body, opening_loc, closing_loc, location)
5853
+ @body = body
4634
5854
  @opening_loc = opening_loc
4635
5855
  @closing_loc = closing_loc
4636
5856
  @location = location
@@ -4647,7 +5867,17 @@ module YARP
4647
5867
 
4648
5868
  # def child_nodes: () -> Array[nil | Node]
4649
5869
  def child_nodes
4650
- [statements]
5870
+ [body]
5871
+ end
5872
+
5873
+ # def copy: (**params) -> ParenthesesNode
5874
+ def copy(**params)
5875
+ ParenthesesNode.new(
5876
+ params.fetch(:body) { body },
5877
+ params.fetch(:opening_loc) { opening_loc },
5878
+ params.fetch(:closing_loc) { closing_loc },
5879
+ params.fetch(:location) { location },
5880
+ )
4651
5881
  end
4652
5882
 
4653
5883
  # def deconstruct: () -> Array[nil | Node]
@@ -4655,7 +5885,7 @@ module YARP
4655
5885
 
4656
5886
  # def deconstruct_keys: (keys: Array[Symbol]) -> Hash[Symbol, nil | Node | Array[Node] | String | Token | Array[Token] | Location]
4657
5887
  def deconstruct_keys(keys)
4658
- { statements: statements, opening_loc: opening_loc, closing_loc: closing_loc, location: location }
5888
+ { body: body, opening_loc: opening_loc, closing_loc: closing_loc, location: location }
4659
5889
  end
4660
5890
 
4661
5891
  # def opening: () -> String
@@ -4706,6 +5936,17 @@ module YARP
4706
5936
  [expression]
4707
5937
  end
4708
5938
 
5939
+ # def copy: (**params) -> PinnedExpressionNode
5940
+ def copy(**params)
5941
+ PinnedExpressionNode.new(
5942
+ params.fetch(:expression) { expression },
5943
+ params.fetch(:operator_loc) { operator_loc },
5944
+ params.fetch(:lparen_loc) { lparen_loc },
5945
+ params.fetch(:rparen_loc) { rparen_loc },
5946
+ params.fetch(:location) { location },
5947
+ )
5948
+ end
5949
+
4709
5950
  # def deconstruct: () -> Array[nil | Node]
4710
5951
  alias deconstruct child_nodes
4711
5952
 
@@ -4759,6 +6000,15 @@ module YARP
4759
6000
  [variable]
4760
6001
  end
4761
6002
 
6003
+ # def copy: (**params) -> PinnedVariableNode
6004
+ def copy(**params)
6005
+ PinnedVariableNode.new(
6006
+ params.fetch(:variable) { variable },
6007
+ params.fetch(:operator_loc) { operator_loc },
6008
+ params.fetch(:location) { location },
6009
+ )
6010
+ end
6011
+
4762
6012
  # def deconstruct: () -> Array[nil | Node]
4763
6013
  alias deconstruct child_nodes
4764
6014
 
@@ -4778,7 +6028,7 @@ module YARP
4778
6028
  # END { foo }
4779
6029
  # ^^^^^^^^^^^
4780
6030
  class PostExecutionNode < Node
4781
- # attr_reader statements: Node?
6031
+ # attr_reader statements: StatementsNode?
4782
6032
  attr_reader :statements
4783
6033
 
4784
6034
  # attr_reader keyword_loc: Location
@@ -4790,7 +6040,7 @@ module YARP
4790
6040
  # attr_reader closing_loc: Location
4791
6041
  attr_reader :closing_loc
4792
6042
 
4793
- # def initialize: (statements: Node?, keyword_loc: Location, opening_loc: Location, closing_loc: Location, location: Location) -> void
6043
+ # def initialize: (statements: StatementsNode?, keyword_loc: Location, opening_loc: Location, closing_loc: Location, location: Location) -> void
4794
6044
  def initialize(statements, keyword_loc, opening_loc, closing_loc, location)
4795
6045
  @statements = statements
4796
6046
  @keyword_loc = keyword_loc
@@ -4809,6 +6059,17 @@ module YARP
4809
6059
  [statements]
4810
6060
  end
4811
6061
 
6062
+ # def copy: (**params) -> PostExecutionNode
6063
+ def copy(**params)
6064
+ PostExecutionNode.new(
6065
+ params.fetch(:statements) { statements },
6066
+ params.fetch(:keyword_loc) { keyword_loc },
6067
+ params.fetch(:opening_loc) { opening_loc },
6068
+ params.fetch(:closing_loc) { closing_loc },
6069
+ params.fetch(:location) { location },
6070
+ )
6071
+ end
6072
+
4812
6073
  # def deconstruct: () -> Array[nil | Node]
4813
6074
  alias deconstruct child_nodes
4814
6075
 
@@ -4838,7 +6099,7 @@ module YARP
4838
6099
  # BEGIN { foo }
4839
6100
  # ^^^^^^^^^^^^^
4840
6101
  class PreExecutionNode < Node
4841
- # attr_reader statements: Node?
6102
+ # attr_reader statements: StatementsNode?
4842
6103
  attr_reader :statements
4843
6104
 
4844
6105
  # attr_reader keyword_loc: Location
@@ -4850,7 +6111,7 @@ module YARP
4850
6111
  # attr_reader closing_loc: Location
4851
6112
  attr_reader :closing_loc
4852
6113
 
4853
- # def initialize: (statements: Node?, keyword_loc: Location, opening_loc: Location, closing_loc: Location, location: Location) -> void
6114
+ # def initialize: (statements: StatementsNode?, keyword_loc: Location, opening_loc: Location, closing_loc: Location, location: Location) -> void
4854
6115
  def initialize(statements, keyword_loc, opening_loc, closing_loc, location)
4855
6116
  @statements = statements
4856
6117
  @keyword_loc = keyword_loc
@@ -4869,6 +6130,17 @@ module YARP
4869
6130
  [statements]
4870
6131
  end
4871
6132
 
6133
+ # def copy: (**params) -> PreExecutionNode
6134
+ def copy(**params)
6135
+ PreExecutionNode.new(
6136
+ params.fetch(:statements) { statements },
6137
+ params.fetch(:keyword_loc) { keyword_loc },
6138
+ params.fetch(:opening_loc) { opening_loc },
6139
+ params.fetch(:closing_loc) { closing_loc },
6140
+ params.fetch(:location) { location },
6141
+ )
6142
+ end
6143
+
4872
6144
  # def deconstruct: () -> Array[nil | Node]
4873
6145
  alias deconstruct child_nodes
4874
6146
 
@@ -4898,10 +6170,10 @@ module YARP
4898
6170
  # attr_reader locals: Array[Symbol]
4899
6171
  attr_reader :locals
4900
6172
 
4901
- # attr_reader statements: Node
6173
+ # attr_reader statements: StatementsNode
4902
6174
  attr_reader :statements
4903
6175
 
4904
- # def initialize: (locals: Array[Symbol], statements: Node, location: Location) -> void
6176
+ # def initialize: (locals: Array[Symbol], statements: StatementsNode, location: Location) -> void
4905
6177
  def initialize(locals, statements, location)
4906
6178
  @locals = locals
4907
6179
  @statements = statements
@@ -4918,6 +6190,15 @@ module YARP
4918
6190
  [statements]
4919
6191
  end
4920
6192
 
6193
+ # def copy: (**params) -> ProgramNode
6194
+ def copy(**params)
6195
+ ProgramNode.new(
6196
+ params.fetch(:locals) { locals },
6197
+ params.fetch(:statements) { statements },
6198
+ params.fetch(:location) { location },
6199
+ )
6200
+ end
6201
+
4921
6202
  # def deconstruct: () -> Array[nil | Node]
4922
6203
  alias deconstruct child_nodes
4923
6204
 
@@ -4966,6 +6247,17 @@ module YARP
4966
6247
  [left, right]
4967
6248
  end
4968
6249
 
6250
+ # def copy: (**params) -> RangeNode
6251
+ def copy(**params)
6252
+ RangeNode.new(
6253
+ params.fetch(:left) { left },
6254
+ params.fetch(:right) { right },
6255
+ params.fetch(:operator_loc) { operator_loc },
6256
+ params.fetch(:flags) { flags },
6257
+ params.fetch(:location) { location },
6258
+ )
6259
+ end
6260
+
4969
6261
  # def deconstruct: () -> Array[nil | Node]
4970
6262
  alias deconstruct child_nodes
4971
6263
 
@@ -5009,6 +6301,14 @@ module YARP
5009
6301
  [numeric]
5010
6302
  end
5011
6303
 
6304
+ # def copy: (**params) -> RationalNode
6305
+ def copy(**params)
6306
+ RationalNode.new(
6307
+ params.fetch(:numeric) { numeric },
6308
+ params.fetch(:location) { location },
6309
+ )
6310
+ end
6311
+
5012
6312
  # def deconstruct: () -> Array[nil | Node]
5013
6313
  alias deconstruct child_nodes
5014
6314
 
@@ -5038,6 +6338,13 @@ module YARP
5038
6338
  []
5039
6339
  end
5040
6340
 
6341
+ # def copy: (**params) -> RedoNode
6342
+ def copy(**params)
6343
+ RedoNode.new(
6344
+ params.fetch(:location) { location },
6345
+ )
6346
+ end
6347
+
5041
6348
  # def deconstruct: () -> Array[nil | Node]
5042
6349
  alias deconstruct child_nodes
5043
6350
 
@@ -5087,6 +6394,18 @@ module YARP
5087
6394
  []
5088
6395
  end
5089
6396
 
6397
+ # def copy: (**params) -> RegularExpressionNode
6398
+ def copy(**params)
6399
+ RegularExpressionNode.new(
6400
+ params.fetch(:opening_loc) { opening_loc },
6401
+ params.fetch(:content_loc) { content_loc },
6402
+ params.fetch(:closing_loc) { closing_loc },
6403
+ params.fetch(:unescaped) { unescaped },
6404
+ params.fetch(:flags) { flags },
6405
+ params.fetch(:location) { location },
6406
+ )
6407
+ end
6408
+
5090
6409
  # def deconstruct: () -> Array[nil | Node]
5091
6410
  alias deconstruct child_nodes
5092
6411
 
@@ -5184,6 +6503,16 @@ module YARP
5184
6503
  [*parameters]
5185
6504
  end
5186
6505
 
6506
+ # def copy: (**params) -> RequiredDestructuredParameterNode
6507
+ def copy(**params)
6508
+ RequiredDestructuredParameterNode.new(
6509
+ params.fetch(:parameters) { parameters },
6510
+ params.fetch(:opening_loc) { opening_loc },
6511
+ params.fetch(:closing_loc) { closing_loc },
6512
+ params.fetch(:location) { location },
6513
+ )
6514
+ end
6515
+
5187
6516
  # def deconstruct: () -> Array[nil | Node]
5188
6517
  alias deconstruct child_nodes
5189
6518
 
@@ -5228,6 +6557,14 @@ module YARP
5228
6557
  []
5229
6558
  end
5230
6559
 
6560
+ # def copy: (**params) -> RequiredParameterNode
6561
+ def copy(**params)
6562
+ RequiredParameterNode.new(
6563
+ params.fetch(:constant_id) { constant_id },
6564
+ params.fetch(:location) { location },
6565
+ )
6566
+ end
6567
+
5231
6568
  # def deconstruct: () -> Array[nil | Node]
5232
6569
  alias deconstruct child_nodes
5233
6570
 
@@ -5273,6 +6610,16 @@ module YARP
5273
6610
  [expression, rescue_expression]
5274
6611
  end
5275
6612
 
6613
+ # def copy: (**params) -> RescueModifierNode
6614
+ def copy(**params)
6615
+ RescueModifierNode.new(
6616
+ params.fetch(:expression) { expression },
6617
+ params.fetch(:keyword_loc) { keyword_loc },
6618
+ params.fetch(:rescue_expression) { rescue_expression },
6619
+ params.fetch(:location) { location },
6620
+ )
6621
+ end
6622
+
5276
6623
  # def deconstruct: () -> Array[nil | Node]
5277
6624
  alias deconstruct child_nodes
5278
6625
 
@@ -5310,13 +6657,13 @@ module YARP
5310
6657
  # attr_reader reference: Node?
5311
6658
  attr_reader :reference
5312
6659
 
5313
- # attr_reader statements: Node?
6660
+ # attr_reader statements: StatementsNode?
5314
6661
  attr_reader :statements
5315
6662
 
5316
- # attr_reader consequent: Node?
6663
+ # attr_reader consequent: RescueNode?
5317
6664
  attr_reader :consequent
5318
6665
 
5319
- # def initialize: (keyword_loc: Location, exceptions: Array[Node], operator_loc: Location?, reference: Node?, statements: Node?, consequent: Node?, location: Location) -> void
6666
+ # def initialize: (keyword_loc: Location, exceptions: Array[Node], operator_loc: Location?, reference: Node?, statements: StatementsNode?, consequent: RescueNode?, location: Location) -> void
5320
6667
  def initialize(keyword_loc, exceptions, operator_loc, reference, statements, consequent, location)
5321
6668
  @keyword_loc = keyword_loc
5322
6669
  @exceptions = exceptions
@@ -5337,6 +6684,19 @@ module YARP
5337
6684
  [*exceptions, reference, statements, consequent]
5338
6685
  end
5339
6686
 
6687
+ # def copy: (**params) -> RescueNode
6688
+ def copy(**params)
6689
+ RescueNode.new(
6690
+ params.fetch(:keyword_loc) { keyword_loc },
6691
+ params.fetch(:exceptions) { exceptions },
6692
+ params.fetch(:operator_loc) { operator_loc },
6693
+ params.fetch(:reference) { reference },
6694
+ params.fetch(:statements) { statements },
6695
+ params.fetch(:consequent) { consequent },
6696
+ params.fetch(:location) { location },
6697
+ )
6698
+ end
6699
+
5340
6700
  # def deconstruct: () -> Array[nil | Node]
5341
6701
  alias deconstruct child_nodes
5342
6702
 
@@ -5385,6 +6745,15 @@ module YARP
5385
6745
  []
5386
6746
  end
5387
6747
 
6748
+ # def copy: (**params) -> RestParameterNode
6749
+ def copy(**params)
6750
+ RestParameterNode.new(
6751
+ params.fetch(:operator_loc) { operator_loc },
6752
+ params.fetch(:name_loc) { name_loc },
6753
+ params.fetch(:location) { location },
6754
+ )
6755
+ end
6756
+
5388
6757
  # def deconstruct: () -> Array[nil | Node]
5389
6758
  alias deconstruct child_nodes
5390
6759
 
@@ -5424,6 +6793,13 @@ module YARP
5424
6793
  []
5425
6794
  end
5426
6795
 
6796
+ # def copy: (**params) -> RetryNode
6797
+ def copy(**params)
6798
+ RetryNode.new(
6799
+ params.fetch(:location) { location },
6800
+ )
6801
+ end
6802
+
5427
6803
  # def deconstruct: () -> Array[nil | Node]
5428
6804
  alias deconstruct child_nodes
5429
6805
 
@@ -5441,10 +6817,10 @@ module YARP
5441
6817
  # attr_reader keyword_loc: Location
5442
6818
  attr_reader :keyword_loc
5443
6819
 
5444
- # attr_reader arguments: Node?
6820
+ # attr_reader arguments: ArgumentsNode?
5445
6821
  attr_reader :arguments
5446
6822
 
5447
- # def initialize: (keyword_loc: Location, arguments: Node?, location: Location) -> void
6823
+ # def initialize: (keyword_loc: Location, arguments: ArgumentsNode?, location: Location) -> void
5448
6824
  def initialize(keyword_loc, arguments, location)
5449
6825
  @keyword_loc = keyword_loc
5450
6826
  @arguments = arguments
@@ -5461,6 +6837,15 @@ module YARP
5461
6837
  [arguments]
5462
6838
  end
5463
6839
 
6840
+ # def copy: (**params) -> ReturnNode
6841
+ def copy(**params)
6842
+ ReturnNode.new(
6843
+ params.fetch(:keyword_loc) { keyword_loc },
6844
+ params.fetch(:arguments) { arguments },
6845
+ params.fetch(:location) { location },
6846
+ )
6847
+ end
6848
+
5464
6849
  # def deconstruct: () -> Array[nil | Node]
5465
6850
  alias deconstruct child_nodes
5466
6851
 
@@ -5495,6 +6880,13 @@ module YARP
5495
6880
  []
5496
6881
  end
5497
6882
 
6883
+ # def copy: (**params) -> SelfNode
6884
+ def copy(**params)
6885
+ SelfNode.new(
6886
+ params.fetch(:location) { location },
6887
+ )
6888
+ end
6889
+
5498
6890
  # def deconstruct: () -> Array[nil | Node]
5499
6891
  alias deconstruct child_nodes
5500
6892
 
@@ -5521,19 +6913,19 @@ module YARP
5521
6913
  # attr_reader expression: Node
5522
6914
  attr_reader :expression
5523
6915
 
5524
- # attr_reader statements: Node?
5525
- attr_reader :statements
6916
+ # attr_reader body: Node?
6917
+ attr_reader :body
5526
6918
 
5527
6919
  # attr_reader end_keyword_loc: Location
5528
6920
  attr_reader :end_keyword_loc
5529
6921
 
5530
- # def initialize: (locals: Array[Symbol], class_keyword_loc: Location, operator_loc: Location, expression: Node, statements: Node?, end_keyword_loc: Location, location: Location) -> void
5531
- def initialize(locals, class_keyword_loc, operator_loc, expression, statements, end_keyword_loc, location)
6922
+ # def initialize: (locals: Array[Symbol], class_keyword_loc: Location, operator_loc: Location, expression: Node, body: Node?, end_keyword_loc: Location, location: Location) -> void
6923
+ def initialize(locals, class_keyword_loc, operator_loc, expression, body, end_keyword_loc, location)
5532
6924
  @locals = locals
5533
6925
  @class_keyword_loc = class_keyword_loc
5534
6926
  @operator_loc = operator_loc
5535
6927
  @expression = expression
5536
- @statements = statements
6928
+ @body = body
5537
6929
  @end_keyword_loc = end_keyword_loc
5538
6930
  @location = location
5539
6931
  end
@@ -5545,7 +6937,20 @@ module YARP
5545
6937
 
5546
6938
  # def child_nodes: () -> Array[nil | Node]
5547
6939
  def child_nodes
5548
- [expression, statements]
6940
+ [expression, body]
6941
+ end
6942
+
6943
+ # def copy: (**params) -> SingletonClassNode
6944
+ def copy(**params)
6945
+ SingletonClassNode.new(
6946
+ params.fetch(:locals) { locals },
6947
+ params.fetch(:class_keyword_loc) { class_keyword_loc },
6948
+ params.fetch(:operator_loc) { operator_loc },
6949
+ params.fetch(:expression) { expression },
6950
+ params.fetch(:body) { body },
6951
+ params.fetch(:end_keyword_loc) { end_keyword_loc },
6952
+ params.fetch(:location) { location },
6953
+ )
5549
6954
  end
5550
6955
 
5551
6956
  # def deconstruct: () -> Array[nil | Node]
@@ -5553,7 +6958,7 @@ module YARP
5553
6958
 
5554
6959
  # def deconstruct_keys: (keys: Array[Symbol]) -> Hash[Symbol, nil | Node | Array[Node] | String | Token | Array[Token] | Location]
5555
6960
  def deconstruct_keys(keys)
5556
- { locals: locals, class_keyword_loc: class_keyword_loc, operator_loc: operator_loc, expression: expression, statements: statements, end_keyword_loc: end_keyword_loc, location: location }
6961
+ { locals: locals, class_keyword_loc: class_keyword_loc, operator_loc: operator_loc, expression: expression, body: body, end_keyword_loc: end_keyword_loc, location: location }
5557
6962
  end
5558
6963
 
5559
6964
  # def class_keyword: () -> String
@@ -5592,6 +6997,13 @@ module YARP
5592
6997
  []
5593
6998
  end
5594
6999
 
7000
+ # def copy: (**params) -> SourceEncodingNode
7001
+ def copy(**params)
7002
+ SourceEncodingNode.new(
7003
+ params.fetch(:location) { location },
7004
+ )
7005
+ end
7006
+
5595
7007
  # def deconstruct: () -> Array[nil | Node]
5596
7008
  alias deconstruct child_nodes
5597
7009
 
@@ -5625,6 +7037,14 @@ module YARP
5625
7037
  []
5626
7038
  end
5627
7039
 
7040
+ # def copy: (**params) -> SourceFileNode
7041
+ def copy(**params)
7042
+ SourceFileNode.new(
7043
+ params.fetch(:filepath) { filepath },
7044
+ params.fetch(:location) { location },
7045
+ )
7046
+ end
7047
+
5628
7048
  # def deconstruct: () -> Array[nil | Node]
5629
7049
  alias deconstruct child_nodes
5630
7050
 
@@ -5654,6 +7074,13 @@ module YARP
5654
7074
  []
5655
7075
  end
5656
7076
 
7077
+ # def copy: (**params) -> SourceLineNode
7078
+ def copy(**params)
7079
+ SourceLineNode.new(
7080
+ params.fetch(:location) { location },
7081
+ )
7082
+ end
7083
+
5657
7084
  # def deconstruct: () -> Array[nil | Node]
5658
7085
  alias deconstruct child_nodes
5659
7086
 
@@ -5691,6 +7118,15 @@ module YARP
5691
7118
  [expression]
5692
7119
  end
5693
7120
 
7121
+ # def copy: (**params) -> SplatNode
7122
+ def copy(**params)
7123
+ SplatNode.new(
7124
+ params.fetch(:operator_loc) { operator_loc },
7125
+ params.fetch(:expression) { expression },
7126
+ params.fetch(:location) { location },
7127
+ )
7128
+ end
7129
+
5694
7130
  # def deconstruct: () -> Array[nil | Node]
5695
7131
  alias deconstruct child_nodes
5696
7132
 
@@ -5729,6 +7165,14 @@ module YARP
5729
7165
  [*body]
5730
7166
  end
5731
7167
 
7168
+ # def copy: (**params) -> StatementsNode
7169
+ def copy(**params)
7170
+ StatementsNode.new(
7171
+ params.fetch(:body) { body },
7172
+ params.fetch(:location) { location },
7173
+ )
7174
+ end
7175
+
5732
7176
  # def deconstruct: () -> Array[nil | Node]
5733
7177
  alias deconstruct child_nodes
5734
7178
 
@@ -5766,6 +7210,15 @@ module YARP
5766
7210
  [left, right]
5767
7211
  end
5768
7212
 
7213
+ # def copy: (**params) -> StringConcatNode
7214
+ def copy(**params)
7215
+ StringConcatNode.new(
7216
+ params.fetch(:left) { left },
7217
+ params.fetch(:right) { right },
7218
+ params.fetch(:location) { location },
7219
+ )
7220
+ end
7221
+
5769
7222
  # def deconstruct: () -> Array[nil | Node]
5770
7223
  alias deconstruct child_nodes
5771
7224
 
@@ -5818,6 +7271,17 @@ module YARP
5818
7271
  []
5819
7272
  end
5820
7273
 
7274
+ # def copy: (**params) -> StringNode
7275
+ def copy(**params)
7276
+ StringNode.new(
7277
+ params.fetch(:opening_loc) { opening_loc },
7278
+ params.fetch(:content_loc) { content_loc },
7279
+ params.fetch(:closing_loc) { closing_loc },
7280
+ params.fetch(:unescaped) { unescaped },
7281
+ params.fetch(:location) { location },
7282
+ )
7283
+ end
7284
+
5821
7285
  # def deconstruct: () -> Array[nil | Node]
5822
7286
  alias deconstruct child_nodes
5823
7287
 
@@ -5856,16 +7320,16 @@ module YARP
5856
7320
  # attr_reader lparen_loc: Location?
5857
7321
  attr_reader :lparen_loc
5858
7322
 
5859
- # attr_reader arguments: Node?
7323
+ # attr_reader arguments: ArgumentsNode?
5860
7324
  attr_reader :arguments
5861
7325
 
5862
7326
  # attr_reader rparen_loc: Location?
5863
7327
  attr_reader :rparen_loc
5864
7328
 
5865
- # attr_reader block: Node?
7329
+ # attr_reader block: BlockNode?
5866
7330
  attr_reader :block
5867
7331
 
5868
- # def initialize: (keyword_loc: Location, lparen_loc: Location?, arguments: Node?, rparen_loc: Location?, block: Node?, location: Location) -> void
7332
+ # def initialize: (keyword_loc: Location, lparen_loc: Location?, arguments: ArgumentsNode?, rparen_loc: Location?, block: BlockNode?, location: Location) -> void
5869
7333
  def initialize(keyword_loc, lparen_loc, arguments, rparen_loc, block, location)
5870
7334
  @keyword_loc = keyword_loc
5871
7335
  @lparen_loc = lparen_loc
@@ -5885,6 +7349,18 @@ module YARP
5885
7349
  [arguments, block]
5886
7350
  end
5887
7351
 
7352
+ # def copy: (**params) -> SuperNode
7353
+ def copy(**params)
7354
+ SuperNode.new(
7355
+ params.fetch(:keyword_loc) { keyword_loc },
7356
+ params.fetch(:lparen_loc) { lparen_loc },
7357
+ params.fetch(:arguments) { arguments },
7358
+ params.fetch(:rparen_loc) { rparen_loc },
7359
+ params.fetch(:block) { block },
7360
+ params.fetch(:location) { location },
7361
+ )
7362
+ end
7363
+
5888
7364
  # def deconstruct: () -> Array[nil | Node]
5889
7365
  alias deconstruct child_nodes
5890
7366
 
@@ -5920,7 +7396,7 @@ module YARP
5920
7396
  # attr_reader opening_loc: Location?
5921
7397
  attr_reader :opening_loc
5922
7398
 
5923
- # attr_reader value_loc: Location
7399
+ # attr_reader value_loc: Location?
5924
7400
  attr_reader :value_loc
5925
7401
 
5926
7402
  # attr_reader closing_loc: Location?
@@ -5929,7 +7405,7 @@ module YARP
5929
7405
  # attr_reader unescaped: String
5930
7406
  attr_reader :unescaped
5931
7407
 
5932
- # def initialize: (opening_loc: Location?, value_loc: Location, closing_loc: Location?, unescaped: String, location: Location) -> void
7408
+ # def initialize: (opening_loc: Location?, value_loc: Location?, closing_loc: Location?, unescaped: String, location: Location) -> void
5933
7409
  def initialize(opening_loc, value_loc, closing_loc, unescaped, location)
5934
7410
  @opening_loc = opening_loc
5935
7411
  @value_loc = value_loc
@@ -5948,6 +7424,17 @@ module YARP
5948
7424
  []
5949
7425
  end
5950
7426
 
7427
+ # def copy: (**params) -> SymbolNode
7428
+ def copy(**params)
7429
+ SymbolNode.new(
7430
+ params.fetch(:opening_loc) { opening_loc },
7431
+ params.fetch(:value_loc) { value_loc },
7432
+ params.fetch(:closing_loc) { closing_loc },
7433
+ params.fetch(:unescaped) { unescaped },
7434
+ params.fetch(:location) { location },
7435
+ )
7436
+ end
7437
+
5951
7438
  # def deconstruct: () -> Array[nil | Node]
5952
7439
  alias deconstruct child_nodes
5953
7440
 
@@ -5961,9 +7448,9 @@ module YARP
5961
7448
  opening_loc&.slice
5962
7449
  end
5963
7450
 
5964
- # def value: () -> String
7451
+ # def value: () -> String?
5965
7452
  def value
5966
- value_loc.slice
7453
+ value_loc&.slice
5967
7454
  end
5968
7455
 
5969
7456
  # def closing: () -> String?
@@ -5992,6 +7479,13 @@ module YARP
5992
7479
  []
5993
7480
  end
5994
7481
 
7482
+ # def copy: (**params) -> TrueNode
7483
+ def copy(**params)
7484
+ TrueNode.new(
7485
+ params.fetch(:location) { location },
7486
+ )
7487
+ end
7488
+
5995
7489
  # def deconstruct: () -> Array[nil | Node]
5996
7490
  alias deconstruct child_nodes
5997
7491
 
@@ -6029,6 +7523,15 @@ module YARP
6029
7523
  [*names]
6030
7524
  end
6031
7525
 
7526
+ # def copy: (**params) -> UndefNode
7527
+ def copy(**params)
7528
+ UndefNode.new(
7529
+ params.fetch(:names) { names },
7530
+ params.fetch(:keyword_loc) { keyword_loc },
7531
+ params.fetch(:location) { location },
7532
+ )
7533
+ end
7534
+
6032
7535
  # def deconstruct: () -> Array[nil | Node]
6033
7536
  alias deconstruct child_nodes
6034
7537
 
@@ -6057,16 +7560,16 @@ module YARP
6057
7560
  # attr_reader predicate: Node
6058
7561
  attr_reader :predicate
6059
7562
 
6060
- # attr_reader statements: Node?
7563
+ # attr_reader statements: StatementsNode?
6061
7564
  attr_reader :statements
6062
7565
 
6063
- # attr_reader consequent: Node?
7566
+ # attr_reader consequent: ElseNode?
6064
7567
  attr_reader :consequent
6065
7568
 
6066
7569
  # attr_reader end_keyword_loc: Location?
6067
7570
  attr_reader :end_keyword_loc
6068
7571
 
6069
- # def initialize: (keyword_loc: Location, predicate: Node, statements: Node?, consequent: Node?, end_keyword_loc: Location?, location: Location) -> void
7572
+ # def initialize: (keyword_loc: Location, predicate: Node, statements: StatementsNode?, consequent: ElseNode?, end_keyword_loc: Location?, location: Location) -> void
6070
7573
  def initialize(keyword_loc, predicate, statements, consequent, end_keyword_loc, location)
6071
7574
  @keyword_loc = keyword_loc
6072
7575
  @predicate = predicate
@@ -6090,6 +7593,18 @@ module YARP
6090
7593
  [predicate, statements, consequent]
6091
7594
  end
6092
7595
 
7596
+ # def copy: (**params) -> UnlessNode
7597
+ def copy(**params)
7598
+ UnlessNode.new(
7599
+ params.fetch(:keyword_loc) { keyword_loc },
7600
+ params.fetch(:predicate) { predicate },
7601
+ params.fetch(:statements) { statements },
7602
+ params.fetch(:consequent) { consequent },
7603
+ params.fetch(:end_keyword_loc) { end_keyword_loc },
7604
+ params.fetch(:location) { location },
7605
+ )
7606
+ end
7607
+
6093
7608
  # def deconstruct: () -> Array[nil | Node]
6094
7609
  alias deconstruct child_nodes
6095
7610
 
@@ -6120,18 +7635,22 @@ module YARP
6120
7635
  # attr_reader keyword_loc: Location
6121
7636
  attr_reader :keyword_loc
6122
7637
 
7638
+ # attr_reader closing_loc: Location?
7639
+ attr_reader :closing_loc
7640
+
6123
7641
  # attr_reader predicate: Node
6124
7642
  attr_reader :predicate
6125
7643
 
6126
- # attr_reader statements: Node?
7644
+ # attr_reader statements: StatementsNode?
6127
7645
  attr_reader :statements
6128
7646
 
6129
7647
  # attr_reader flags: Integer
6130
7648
  attr_reader :flags
6131
7649
 
6132
- # def initialize: (keyword_loc: Location, predicate: Node, statements: Node?, flags: Integer, location: Location) -> void
6133
- def initialize(keyword_loc, predicate, statements, flags, location)
7650
+ # def initialize: (keyword_loc: Location, closing_loc: Location?, predicate: Node, statements: StatementsNode?, flags: Integer, location: Location) -> void
7651
+ def initialize(keyword_loc, closing_loc, predicate, statements, flags, location)
6134
7652
  @keyword_loc = keyword_loc
7653
+ @closing_loc = closing_loc
6135
7654
  @predicate = predicate
6136
7655
  @statements = statements
6137
7656
  @flags = flags
@@ -6152,12 +7671,24 @@ module YARP
6152
7671
  [predicate, statements]
6153
7672
  end
6154
7673
 
7674
+ # def copy: (**params) -> UntilNode
7675
+ def copy(**params)
7676
+ UntilNode.new(
7677
+ params.fetch(:keyword_loc) { keyword_loc },
7678
+ params.fetch(:closing_loc) { closing_loc },
7679
+ params.fetch(:predicate) { predicate },
7680
+ params.fetch(:statements) { statements },
7681
+ params.fetch(:flags) { flags },
7682
+ params.fetch(:location) { location },
7683
+ )
7684
+ end
7685
+
6155
7686
  # def deconstruct: () -> Array[nil | Node]
6156
7687
  alias deconstruct child_nodes
6157
7688
 
6158
7689
  # def deconstruct_keys: (keys: Array[Symbol]) -> Hash[Symbol, nil | Node | Array[Node] | String | Token | Array[Token] | Location]
6159
7690
  def deconstruct_keys(keys)
6160
- { keyword_loc: keyword_loc, predicate: predicate, statements: statements, flags: flags, location: location }
7691
+ { keyword_loc: keyword_loc, closing_loc: closing_loc, predicate: predicate, statements: statements, flags: flags, location: location }
6161
7692
  end
6162
7693
 
6163
7694
  # def keyword: () -> String
@@ -6165,16 +7696,23 @@ module YARP
6165
7696
  keyword_loc.slice
6166
7697
  end
6167
7698
 
7699
+ # def closing: () -> String?
7700
+ def closing
7701
+ closing_loc&.slice
7702
+ end
7703
+
6168
7704
  # def begin_modifier?: () -> bool
6169
7705
  def begin_modifier?
6170
7706
  flags.anybits?(LoopFlags::BEGIN_MODIFIER)
6171
7707
  end
6172
7708
  end
6173
7709
 
6174
- # case true
6175
- # when true
6176
- # ^^^^^^^^^
6177
- # end
7710
+ # Represents the use of the `when` keyword within a case statement.
7711
+ #
7712
+ # case true
7713
+ # when true
7714
+ # ^^^^^^^^^
7715
+ # end
6178
7716
  class WhenNode < Node
6179
7717
  # attr_reader keyword_loc: Location
6180
7718
  attr_reader :keyword_loc
@@ -6182,10 +7720,10 @@ module YARP
6182
7720
  # attr_reader conditions: Array[Node]
6183
7721
  attr_reader :conditions
6184
7722
 
6185
- # attr_reader statements: Node?
7723
+ # attr_reader statements: StatementsNode?
6186
7724
  attr_reader :statements
6187
7725
 
6188
- # def initialize: (keyword_loc: Location, conditions: Array[Node], statements: Node?, location: Location) -> void
7726
+ # def initialize: (keyword_loc: Location, conditions: Array[Node], statements: StatementsNode?, location: Location) -> void
6189
7727
  def initialize(keyword_loc, conditions, statements, location)
6190
7728
  @keyword_loc = keyword_loc
6191
7729
  @conditions = conditions
@@ -6203,6 +7741,16 @@ module YARP
6203
7741
  [*conditions, statements]
6204
7742
  end
6205
7743
 
7744
+ # def copy: (**params) -> WhenNode
7745
+ def copy(**params)
7746
+ WhenNode.new(
7747
+ params.fetch(:keyword_loc) { keyword_loc },
7748
+ params.fetch(:conditions) { conditions },
7749
+ params.fetch(:statements) { statements },
7750
+ params.fetch(:location) { location },
7751
+ )
7752
+ end
7753
+
6206
7754
  # def deconstruct: () -> Array[nil | Node]
6207
7755
  alias deconstruct child_nodes
6208
7756
 
@@ -6228,18 +7776,22 @@ module YARP
6228
7776
  # attr_reader keyword_loc: Location
6229
7777
  attr_reader :keyword_loc
6230
7778
 
7779
+ # attr_reader closing_loc: Location?
7780
+ attr_reader :closing_loc
7781
+
6231
7782
  # attr_reader predicate: Node
6232
7783
  attr_reader :predicate
6233
7784
 
6234
- # attr_reader statements: Node?
7785
+ # attr_reader statements: StatementsNode?
6235
7786
  attr_reader :statements
6236
7787
 
6237
7788
  # attr_reader flags: Integer
6238
7789
  attr_reader :flags
6239
7790
 
6240
- # def initialize: (keyword_loc: Location, predicate: Node, statements: Node?, flags: Integer, location: Location) -> void
6241
- def initialize(keyword_loc, predicate, statements, flags, location)
7791
+ # def initialize: (keyword_loc: Location, closing_loc: Location?, predicate: Node, statements: StatementsNode?, flags: Integer, location: Location) -> void
7792
+ def initialize(keyword_loc, closing_loc, predicate, statements, flags, location)
6242
7793
  @keyword_loc = keyword_loc
7794
+ @closing_loc = closing_loc
6243
7795
  @predicate = predicate
6244
7796
  @statements = statements
6245
7797
  @flags = flags
@@ -6260,12 +7812,24 @@ module YARP
6260
7812
  [predicate, statements]
6261
7813
  end
6262
7814
 
7815
+ # def copy: (**params) -> WhileNode
7816
+ def copy(**params)
7817
+ WhileNode.new(
7818
+ params.fetch(:keyword_loc) { keyword_loc },
7819
+ params.fetch(:closing_loc) { closing_loc },
7820
+ params.fetch(:predicate) { predicate },
7821
+ params.fetch(:statements) { statements },
7822
+ params.fetch(:flags) { flags },
7823
+ params.fetch(:location) { location },
7824
+ )
7825
+ end
7826
+
6263
7827
  # def deconstruct: () -> Array[nil | Node]
6264
7828
  alias deconstruct child_nodes
6265
7829
 
6266
7830
  # def deconstruct_keys: (keys: Array[Symbol]) -> Hash[Symbol, nil | Node | Array[Node] | String | Token | Array[Token] | Location]
6267
7831
  def deconstruct_keys(keys)
6268
- { keyword_loc: keyword_loc, predicate: predicate, statements: statements, flags: flags, location: location }
7832
+ { keyword_loc: keyword_loc, closing_loc: closing_loc, predicate: predicate, statements: statements, flags: flags, location: location }
6269
7833
  end
6270
7834
 
6271
7835
  # def keyword: () -> String
@@ -6273,6 +7837,11 @@ module YARP
6273
7837
  keyword_loc.slice
6274
7838
  end
6275
7839
 
7840
+ # def closing: () -> String?
7841
+ def closing
7842
+ closing_loc&.slice
7843
+ end
7844
+
6276
7845
  # def begin_modifier?: () -> bool
6277
7846
  def begin_modifier?
6278
7847
  flags.anybits?(LoopFlags::BEGIN_MODIFIER)
@@ -6315,6 +7884,17 @@ module YARP
6315
7884
  []
6316
7885
  end
6317
7886
 
7887
+ # def copy: (**params) -> XStringNode
7888
+ def copy(**params)
7889
+ XStringNode.new(
7890
+ params.fetch(:opening_loc) { opening_loc },
7891
+ params.fetch(:content_loc) { content_loc },
7892
+ params.fetch(:closing_loc) { closing_loc },
7893
+ params.fetch(:unescaped) { unescaped },
7894
+ params.fetch(:location) { location },
7895
+ )
7896
+ end
7897
+
6318
7898
  # def deconstruct: () -> Array[nil | Node]
6319
7899
  alias deconstruct child_nodes
6320
7900
 
@@ -6350,13 +7930,13 @@ module YARP
6350
7930
  # attr_reader lparen_loc: Location?
6351
7931
  attr_reader :lparen_loc
6352
7932
 
6353
- # attr_reader arguments: Node?
7933
+ # attr_reader arguments: ArgumentsNode?
6354
7934
  attr_reader :arguments
6355
7935
 
6356
7936
  # attr_reader rparen_loc: Location?
6357
7937
  attr_reader :rparen_loc
6358
7938
 
6359
- # def initialize: (keyword_loc: Location, lparen_loc: Location?, arguments: Node?, rparen_loc: Location?, location: Location) -> void
7939
+ # def initialize: (keyword_loc: Location, lparen_loc: Location?, arguments: ArgumentsNode?, rparen_loc: Location?, location: Location) -> void
6360
7940
  def initialize(keyword_loc, lparen_loc, arguments, rparen_loc, location)
6361
7941
  @keyword_loc = keyword_loc
6362
7942
  @lparen_loc = lparen_loc
@@ -6375,6 +7955,17 @@ module YARP
6375
7955
  [arguments]
6376
7956
  end
6377
7957
 
7958
+ # def copy: (**params) -> YieldNode
7959
+ def copy(**params)
7960
+ YieldNode.new(
7961
+ params.fetch(:keyword_loc) { keyword_loc },
7962
+ params.fetch(:lparen_loc) { lparen_loc },
7963
+ params.fetch(:arguments) { arguments },
7964
+ params.fetch(:rparen_loc) { rparen_loc },
7965
+ params.fetch(:location) { location },
7966
+ )
7967
+ end
7968
+
6378
7969
  # def deconstruct: () -> Array[nil | Node]
6379
7970
  alias deconstruct child_nodes
6380
7971
 
@@ -6510,48 +8101,57 @@ module YARP
6510
8101
  # Visit a ClassNode node
6511
8102
  alias visit_class_node visit_child_nodes
6512
8103
 
6513
- # Visit a ClassVariableOperatorAndWriteNode node
6514
- alias visit_class_variable_operator_and_write_node visit_child_nodes
6515
-
6516
- # Visit a ClassVariableOperatorOrWriteNode node
6517
- alias visit_class_variable_operator_or_write_node visit_child_nodes
8104
+ # Visit a ClassVariableAndWriteNode node
8105
+ alias visit_class_variable_and_write_node visit_child_nodes
6518
8106
 
6519
8107
  # Visit a ClassVariableOperatorWriteNode node
6520
8108
  alias visit_class_variable_operator_write_node visit_child_nodes
6521
8109
 
8110
+ # Visit a ClassVariableOrWriteNode node
8111
+ alias visit_class_variable_or_write_node visit_child_nodes
8112
+
6522
8113
  # Visit a ClassVariableReadNode node
6523
8114
  alias visit_class_variable_read_node visit_child_nodes
6524
8115
 
8116
+ # Visit a ClassVariableTargetNode node
8117
+ alias visit_class_variable_target_node visit_child_nodes
8118
+
6525
8119
  # Visit a ClassVariableWriteNode node
6526
8120
  alias visit_class_variable_write_node visit_child_nodes
6527
8121
 
6528
- # Visit a ConstantOperatorAndWriteNode node
6529
- alias visit_constant_operator_and_write_node visit_child_nodes
6530
-
6531
- # Visit a ConstantOperatorOrWriteNode node
6532
- alias visit_constant_operator_or_write_node visit_child_nodes
8122
+ # Visit a ConstantAndWriteNode node
8123
+ alias visit_constant_and_write_node visit_child_nodes
6533
8124
 
6534
8125
  # Visit a ConstantOperatorWriteNode node
6535
8126
  alias visit_constant_operator_write_node visit_child_nodes
6536
8127
 
6537
- # Visit a ConstantPathNode node
6538
- alias visit_constant_path_node visit_child_nodes
8128
+ # Visit a ConstantOrWriteNode node
8129
+ alias visit_constant_or_write_node visit_child_nodes
6539
8130
 
6540
- # Visit a ConstantPathOperatorAndWriteNode node
6541
- alias visit_constant_path_operator_and_write_node visit_child_nodes
8131
+ # Visit a ConstantPathAndWriteNode node
8132
+ alias visit_constant_path_and_write_node visit_child_nodes
6542
8133
 
6543
- # Visit a ConstantPathOperatorOrWriteNode node
6544
- alias visit_constant_path_operator_or_write_node visit_child_nodes
8134
+ # Visit a ConstantPathNode node
8135
+ alias visit_constant_path_node visit_child_nodes
6545
8136
 
6546
8137
  # Visit a ConstantPathOperatorWriteNode node
6547
8138
  alias visit_constant_path_operator_write_node visit_child_nodes
6548
8139
 
8140
+ # Visit a ConstantPathOrWriteNode node
8141
+ alias visit_constant_path_or_write_node visit_child_nodes
8142
+
8143
+ # Visit a ConstantPathTargetNode node
8144
+ alias visit_constant_path_target_node visit_child_nodes
8145
+
6549
8146
  # Visit a ConstantPathWriteNode node
6550
8147
  alias visit_constant_path_write_node visit_child_nodes
6551
8148
 
6552
8149
  # Visit a ConstantReadNode node
6553
8150
  alias visit_constant_read_node visit_child_nodes
6554
8151
 
8152
+ # Visit a ConstantTargetNode node
8153
+ alias visit_constant_target_node visit_child_nodes
8154
+
6555
8155
  # Visit a ConstantWriteNode node
6556
8156
  alias visit_constant_write_node visit_child_nodes
6557
8157
 
@@ -6597,18 +8197,21 @@ module YARP
6597
8197
  # Visit a ForwardingSuperNode node
6598
8198
  alias visit_forwarding_super_node visit_child_nodes
6599
8199
 
6600
- # Visit a GlobalVariableOperatorAndWriteNode node
6601
- alias visit_global_variable_operator_and_write_node visit_child_nodes
6602
-
6603
- # Visit a GlobalVariableOperatorOrWriteNode node
6604
- alias visit_global_variable_operator_or_write_node visit_child_nodes
8200
+ # Visit a GlobalVariableAndWriteNode node
8201
+ alias visit_global_variable_and_write_node visit_child_nodes
6605
8202
 
6606
8203
  # Visit a GlobalVariableOperatorWriteNode node
6607
8204
  alias visit_global_variable_operator_write_node visit_child_nodes
6608
8205
 
8206
+ # Visit a GlobalVariableOrWriteNode node
8207
+ alias visit_global_variable_or_write_node visit_child_nodes
8208
+
6609
8209
  # Visit a GlobalVariableReadNode node
6610
8210
  alias visit_global_variable_read_node visit_child_nodes
6611
8211
 
8212
+ # Visit a GlobalVariableTargetNode node
8213
+ alias visit_global_variable_target_node visit_child_nodes
8214
+
6612
8215
  # Visit a GlobalVariableWriteNode node
6613
8216
  alias visit_global_variable_write_node visit_child_nodes
6614
8217
 
@@ -6627,18 +8230,21 @@ module YARP
6627
8230
  # Visit a InNode node
6628
8231
  alias visit_in_node visit_child_nodes
6629
8232
 
6630
- # Visit a InstanceVariableOperatorAndWriteNode node
6631
- alias visit_instance_variable_operator_and_write_node visit_child_nodes
6632
-
6633
- # Visit a InstanceVariableOperatorOrWriteNode node
6634
- alias visit_instance_variable_operator_or_write_node visit_child_nodes
8233
+ # Visit a InstanceVariableAndWriteNode node
8234
+ alias visit_instance_variable_and_write_node visit_child_nodes
6635
8235
 
6636
8236
  # Visit a InstanceVariableOperatorWriteNode node
6637
8237
  alias visit_instance_variable_operator_write_node visit_child_nodes
6638
8238
 
8239
+ # Visit a InstanceVariableOrWriteNode node
8240
+ alias visit_instance_variable_or_write_node visit_child_nodes
8241
+
6639
8242
  # Visit a InstanceVariableReadNode node
6640
8243
  alias visit_instance_variable_read_node visit_child_nodes
6641
8244
 
8245
+ # Visit a InstanceVariableTargetNode node
8246
+ alias visit_instance_variable_target_node visit_child_nodes
8247
+
6642
8248
  # Visit a InstanceVariableWriteNode node
6643
8249
  alias visit_instance_variable_write_node visit_child_nodes
6644
8250
 
@@ -6669,18 +8275,21 @@ module YARP
6669
8275
  # Visit a LambdaNode node
6670
8276
  alias visit_lambda_node visit_child_nodes
6671
8277
 
6672
- # Visit a LocalVariableOperatorAndWriteNode node
6673
- alias visit_local_variable_operator_and_write_node visit_child_nodes
6674
-
6675
- # Visit a LocalVariableOperatorOrWriteNode node
6676
- alias visit_local_variable_operator_or_write_node visit_child_nodes
8278
+ # Visit a LocalVariableAndWriteNode node
8279
+ alias visit_local_variable_and_write_node visit_child_nodes
6677
8280
 
6678
8281
  # Visit a LocalVariableOperatorWriteNode node
6679
8282
  alias visit_local_variable_operator_write_node visit_child_nodes
6680
8283
 
8284
+ # Visit a LocalVariableOrWriteNode node
8285
+ alias visit_local_variable_or_write_node visit_child_nodes
8286
+
6681
8287
  # Visit a LocalVariableReadNode node
6682
8288
  alias visit_local_variable_read_node visit_child_nodes
6683
8289
 
8290
+ # Visit a LocalVariableTargetNode node
8291
+ alias visit_local_variable_target_node visit_child_nodes
8292
+
6684
8293
  # Visit a LocalVariableWriteNode node
6685
8294
  alias visit_local_variable_write_node visit_child_nodes
6686
8295
 
@@ -6893,8 +8502,8 @@ module YARP
6893
8502
  end
6894
8503
 
6895
8504
  # Create a new BlockNode node
6896
- def BlockNode(locals, parameters, statements, opening_loc, closing_loc, location = Location())
6897
- BlockNode.new(locals, parameters, statements, opening_loc, closing_loc, location)
8505
+ def BlockNode(locals, parameters, body, opening_loc, closing_loc, location = Location())
8506
+ BlockNode.new(locals, parameters, body, opening_loc, closing_loc, location)
6898
8507
  end
6899
8508
 
6900
8509
  # Create a new BlockParameterNode node
@@ -6943,18 +8552,13 @@ module YARP
6943
8552
  end
6944
8553
 
6945
8554
  # Create a new ClassNode node
6946
- def ClassNode(locals, class_keyword_loc, constant_path, inheritance_operator_loc, superclass, statements, end_keyword_loc, location = Location())
6947
- ClassNode.new(locals, class_keyword_loc, constant_path, inheritance_operator_loc, superclass, statements, end_keyword_loc, location)
8555
+ def ClassNode(locals, class_keyword_loc, constant_path, inheritance_operator_loc, superclass, body, end_keyword_loc, name, location = Location())
8556
+ ClassNode.new(locals, class_keyword_loc, constant_path, inheritance_operator_loc, superclass, body, end_keyword_loc, name, location)
6948
8557
  end
6949
8558
 
6950
- # Create a new ClassVariableOperatorAndWriteNode node
6951
- def ClassVariableOperatorAndWriteNode(name_loc, operator_loc, value, location = Location())
6952
- ClassVariableOperatorAndWriteNode.new(name_loc, operator_loc, value, location)
6953
- end
6954
-
6955
- # Create a new ClassVariableOperatorOrWriteNode node
6956
- def ClassVariableOperatorOrWriteNode(name_loc, operator_loc, value, location = Location())
6957
- ClassVariableOperatorOrWriteNode.new(name_loc, operator_loc, value, location)
8559
+ # Create a new ClassVariableAndWriteNode node
8560
+ def ClassVariableAndWriteNode(name_loc, operator_loc, value, location = Location())
8561
+ ClassVariableAndWriteNode.new(name_loc, operator_loc, value, location)
6958
8562
  end
6959
8563
 
6960
8564
  # Create a new ClassVariableOperatorWriteNode node
@@ -6962,24 +8566,29 @@ module YARP
6962
8566
  ClassVariableOperatorWriteNode.new(name_loc, operator_loc, value, operator, location)
6963
8567
  end
6964
8568
 
8569
+ # Create a new ClassVariableOrWriteNode node
8570
+ def ClassVariableOrWriteNode(name_loc, operator_loc, value, location = Location())
8571
+ ClassVariableOrWriteNode.new(name_loc, operator_loc, value, location)
8572
+ end
8573
+
6965
8574
  # Create a new ClassVariableReadNode node
6966
8575
  def ClassVariableReadNode(location = Location())
6967
8576
  ClassVariableReadNode.new(location)
6968
8577
  end
6969
8578
 
8579
+ # Create a new ClassVariableTargetNode node
8580
+ def ClassVariableTargetNode(location = Location())
8581
+ ClassVariableTargetNode.new(location)
8582
+ end
8583
+
6970
8584
  # Create a new ClassVariableWriteNode node
6971
8585
  def ClassVariableWriteNode(name_loc, value, operator_loc, location = Location())
6972
8586
  ClassVariableWriteNode.new(name_loc, value, operator_loc, location)
6973
8587
  end
6974
8588
 
6975
- # Create a new ConstantOperatorAndWriteNode node
6976
- def ConstantOperatorAndWriteNode(name_loc, operator_loc, value, location = Location())
6977
- ConstantOperatorAndWriteNode.new(name_loc, operator_loc, value, location)
6978
- end
6979
-
6980
- # Create a new ConstantOperatorOrWriteNode node
6981
- def ConstantOperatorOrWriteNode(name_loc, operator_loc, value, location = Location())
6982
- ConstantOperatorOrWriteNode.new(name_loc, operator_loc, value, location)
8589
+ # Create a new ConstantAndWriteNode node
8590
+ def ConstantAndWriteNode(name_loc, operator_loc, value, location = Location())
8591
+ ConstantAndWriteNode.new(name_loc, operator_loc, value, location)
6983
8592
  end
6984
8593
 
6985
8594
  # Create a new ConstantOperatorWriteNode node
@@ -6987,19 +8596,19 @@ module YARP
6987
8596
  ConstantOperatorWriteNode.new(name_loc, operator_loc, value, operator, location)
6988
8597
  end
6989
8598
 
6990
- # Create a new ConstantPathNode node
6991
- def ConstantPathNode(parent, child, delimiter_loc, location = Location())
6992
- ConstantPathNode.new(parent, child, delimiter_loc, location)
8599
+ # Create a new ConstantOrWriteNode node
8600
+ def ConstantOrWriteNode(name_loc, operator_loc, value, location = Location())
8601
+ ConstantOrWriteNode.new(name_loc, operator_loc, value, location)
6993
8602
  end
6994
8603
 
6995
- # Create a new ConstantPathOperatorAndWriteNode node
6996
- def ConstantPathOperatorAndWriteNode(target, operator_loc, value, location = Location())
6997
- ConstantPathOperatorAndWriteNode.new(target, operator_loc, value, location)
8604
+ # Create a new ConstantPathAndWriteNode node
8605
+ def ConstantPathAndWriteNode(target, operator_loc, value, location = Location())
8606
+ ConstantPathAndWriteNode.new(target, operator_loc, value, location)
6998
8607
  end
6999
8608
 
7000
- # Create a new ConstantPathOperatorOrWriteNode node
7001
- def ConstantPathOperatorOrWriteNode(target, operator_loc, value, location = Location())
7002
- ConstantPathOperatorOrWriteNode.new(target, operator_loc, value, location)
8609
+ # Create a new ConstantPathNode node
8610
+ def ConstantPathNode(parent, child, delimiter_loc, location = Location())
8611
+ ConstantPathNode.new(parent, child, delimiter_loc, location)
7003
8612
  end
7004
8613
 
7005
8614
  # Create a new ConstantPathOperatorWriteNode node
@@ -7007,6 +8616,16 @@ module YARP
7007
8616
  ConstantPathOperatorWriteNode.new(target, operator_loc, value, operator, location)
7008
8617
  end
7009
8618
 
8619
+ # Create a new ConstantPathOrWriteNode node
8620
+ def ConstantPathOrWriteNode(target, operator_loc, value, location = Location())
8621
+ ConstantPathOrWriteNode.new(target, operator_loc, value, location)
8622
+ end
8623
+
8624
+ # Create a new ConstantPathTargetNode node
8625
+ def ConstantPathTargetNode(parent, child, delimiter_loc, location = Location())
8626
+ ConstantPathTargetNode.new(parent, child, delimiter_loc, location)
8627
+ end
8628
+
7010
8629
  # Create a new ConstantPathWriteNode node
7011
8630
  def ConstantPathWriteNode(target, operator_loc, value, location = Location())
7012
8631
  ConstantPathWriteNode.new(target, operator_loc, value, location)
@@ -7017,14 +8636,19 @@ module YARP
7017
8636
  ConstantReadNode.new(location)
7018
8637
  end
7019
8638
 
8639
+ # Create a new ConstantTargetNode node
8640
+ def ConstantTargetNode(location = Location())
8641
+ ConstantTargetNode.new(location)
8642
+ end
8643
+
7020
8644
  # Create a new ConstantWriteNode node
7021
8645
  def ConstantWriteNode(name_loc, value, operator_loc, location = Location())
7022
8646
  ConstantWriteNode.new(name_loc, value, operator_loc, location)
7023
8647
  end
7024
8648
 
7025
8649
  # Create a new DefNode node
7026
- def DefNode(name_loc, receiver, parameters, statements, locals, def_keyword_loc, operator_loc, lparen_loc, rparen_loc, equal_loc, end_keyword_loc, location = Location())
7027
- DefNode.new(name_loc, receiver, parameters, statements, locals, def_keyword_loc, operator_loc, lparen_loc, rparen_loc, equal_loc, end_keyword_loc, location)
8650
+ def DefNode(name_loc, receiver, parameters, body, locals, def_keyword_loc, operator_loc, lparen_loc, rparen_loc, equal_loc, end_keyword_loc, location = Location())
8651
+ DefNode.new(name_loc, receiver, parameters, body, locals, def_keyword_loc, operator_loc, lparen_loc, rparen_loc, equal_loc, end_keyword_loc, location)
7028
8652
  end
7029
8653
 
7030
8654
  # Create a new DefinedNode node
@@ -7092,14 +8716,9 @@ module YARP
7092
8716
  ForwardingSuperNode.new(block, location)
7093
8717
  end
7094
8718
 
7095
- # Create a new GlobalVariableOperatorAndWriteNode node
7096
- def GlobalVariableOperatorAndWriteNode(name_loc, operator_loc, value, location = Location())
7097
- GlobalVariableOperatorAndWriteNode.new(name_loc, operator_loc, value, location)
7098
- end
7099
-
7100
- # Create a new GlobalVariableOperatorOrWriteNode node
7101
- def GlobalVariableOperatorOrWriteNode(name_loc, operator_loc, value, location = Location())
7102
- GlobalVariableOperatorOrWriteNode.new(name_loc, operator_loc, value, location)
8719
+ # Create a new GlobalVariableAndWriteNode node
8720
+ def GlobalVariableAndWriteNode(name_loc, operator_loc, value, location = Location())
8721
+ GlobalVariableAndWriteNode.new(name_loc, operator_loc, value, location)
7103
8722
  end
7104
8723
 
7105
8724
  # Create a new GlobalVariableOperatorWriteNode node
@@ -7107,11 +8726,21 @@ module YARP
7107
8726
  GlobalVariableOperatorWriteNode.new(name_loc, operator_loc, value, operator, location)
7108
8727
  end
7109
8728
 
8729
+ # Create a new GlobalVariableOrWriteNode node
8730
+ def GlobalVariableOrWriteNode(name_loc, operator_loc, value, location = Location())
8731
+ GlobalVariableOrWriteNode.new(name_loc, operator_loc, value, location)
8732
+ end
8733
+
7110
8734
  # Create a new GlobalVariableReadNode node
7111
8735
  def GlobalVariableReadNode(location = Location())
7112
8736
  GlobalVariableReadNode.new(location)
7113
8737
  end
7114
8738
 
8739
+ # Create a new GlobalVariableTargetNode node
8740
+ def GlobalVariableTargetNode(location = Location())
8741
+ GlobalVariableTargetNode.new(location)
8742
+ end
8743
+
7115
8744
  # Create a new GlobalVariableWriteNode node
7116
8745
  def GlobalVariableWriteNode(name_loc, operator_loc, value, location = Location())
7117
8746
  GlobalVariableWriteNode.new(name_loc, operator_loc, value, location)
@@ -7142,14 +8771,9 @@ module YARP
7142
8771
  InNode.new(pattern, statements, in_loc, then_loc, location)
7143
8772
  end
7144
8773
 
7145
- # Create a new InstanceVariableOperatorAndWriteNode node
7146
- def InstanceVariableOperatorAndWriteNode(name_loc, operator_loc, value, location = Location())
7147
- InstanceVariableOperatorAndWriteNode.new(name_loc, operator_loc, value, location)
7148
- end
7149
-
7150
- # Create a new InstanceVariableOperatorOrWriteNode node
7151
- def InstanceVariableOperatorOrWriteNode(name_loc, operator_loc, value, location = Location())
7152
- InstanceVariableOperatorOrWriteNode.new(name_loc, operator_loc, value, location)
8774
+ # Create a new InstanceVariableAndWriteNode node
8775
+ def InstanceVariableAndWriteNode(name_loc, operator_loc, value, location = Location())
8776
+ InstanceVariableAndWriteNode.new(name_loc, operator_loc, value, location)
7153
8777
  end
7154
8778
 
7155
8779
  # Create a new InstanceVariableOperatorWriteNode node
@@ -7157,11 +8781,21 @@ module YARP
7157
8781
  InstanceVariableOperatorWriteNode.new(name_loc, operator_loc, value, operator, location)
7158
8782
  end
7159
8783
 
8784
+ # Create a new InstanceVariableOrWriteNode node
8785
+ def InstanceVariableOrWriteNode(name_loc, operator_loc, value, location = Location())
8786
+ InstanceVariableOrWriteNode.new(name_loc, operator_loc, value, location)
8787
+ end
8788
+
7160
8789
  # Create a new InstanceVariableReadNode node
7161
8790
  def InstanceVariableReadNode(location = Location())
7162
8791
  InstanceVariableReadNode.new(location)
7163
8792
  end
7164
8793
 
8794
+ # Create a new InstanceVariableTargetNode node
8795
+ def InstanceVariableTargetNode(location = Location())
8796
+ InstanceVariableTargetNode.new(location)
8797
+ end
8798
+
7165
8799
  # Create a new InstanceVariableWriteNode node
7166
8800
  def InstanceVariableWriteNode(name_loc, value, operator_loc, location = Location())
7167
8801
  InstanceVariableWriteNode.new(name_loc, value, operator_loc, location)
@@ -7208,23 +8842,23 @@ module YARP
7208
8842
  end
7209
8843
 
7210
8844
  # Create a new LambdaNode node
7211
- def LambdaNode(locals, opening_loc, parameters, statements, location = Location())
7212
- LambdaNode.new(locals, opening_loc, parameters, statements, location)
8845
+ def LambdaNode(locals, operator_loc, opening_loc, closing_loc, parameters, body, location = Location())
8846
+ LambdaNode.new(locals, operator_loc, opening_loc, closing_loc, parameters, body, location)
7213
8847
  end
7214
8848
 
7215
- # Create a new LocalVariableOperatorAndWriteNode node
7216
- def LocalVariableOperatorAndWriteNode(name_loc, operator_loc, value, constant_id, location = Location())
7217
- LocalVariableOperatorAndWriteNode.new(name_loc, operator_loc, value, constant_id, location)
8849
+ # Create a new LocalVariableAndWriteNode node
8850
+ def LocalVariableAndWriteNode(name_loc, operator_loc, value, constant_id, depth, location = Location())
8851
+ LocalVariableAndWriteNode.new(name_loc, operator_loc, value, constant_id, depth, location)
7218
8852
  end
7219
8853
 
7220
- # Create a new LocalVariableOperatorOrWriteNode node
7221
- def LocalVariableOperatorOrWriteNode(name_loc, operator_loc, value, constant_id, location = Location())
7222
- LocalVariableOperatorOrWriteNode.new(name_loc, operator_loc, value, constant_id, location)
8854
+ # Create a new LocalVariableOperatorWriteNode node
8855
+ def LocalVariableOperatorWriteNode(name_loc, operator_loc, value, constant_id, operator_id, depth, location = Location())
8856
+ LocalVariableOperatorWriteNode.new(name_loc, operator_loc, value, constant_id, operator_id, depth, location)
7223
8857
  end
7224
8858
 
7225
- # Create a new LocalVariableOperatorWriteNode node
7226
- def LocalVariableOperatorWriteNode(name_loc, operator_loc, value, constant_id, operator_id, location = Location())
7227
- LocalVariableOperatorWriteNode.new(name_loc, operator_loc, value, constant_id, operator_id, location)
8859
+ # Create a new LocalVariableOrWriteNode node
8860
+ def LocalVariableOrWriteNode(name_loc, operator_loc, value, constant_id, depth, location = Location())
8861
+ LocalVariableOrWriteNode.new(name_loc, operator_loc, value, constant_id, depth, location)
7228
8862
  end
7229
8863
 
7230
8864
  # Create a new LocalVariableReadNode node
@@ -7232,6 +8866,11 @@ module YARP
7232
8866
  LocalVariableReadNode.new(constant_id, depth, location)
7233
8867
  end
7234
8868
 
8869
+ # Create a new LocalVariableTargetNode node
8870
+ def LocalVariableTargetNode(constant_id, depth, location = Location())
8871
+ LocalVariableTargetNode.new(constant_id, depth, location)
8872
+ end
8873
+
7235
8874
  # Create a new LocalVariableWriteNode node
7236
8875
  def LocalVariableWriteNode(constant_id, depth, value, name_loc, operator_loc, location = Location())
7237
8876
  LocalVariableWriteNode.new(constant_id, depth, value, name_loc, operator_loc, location)
@@ -7253,8 +8892,8 @@ module YARP
7253
8892
  end
7254
8893
 
7255
8894
  # Create a new ModuleNode node
7256
- def ModuleNode(locals, module_keyword_loc, constant_path, statements, end_keyword_loc, location = Location())
7257
- ModuleNode.new(locals, module_keyword_loc, constant_path, statements, end_keyword_loc, location)
8895
+ def ModuleNode(locals, module_keyword_loc, constant_path, body, end_keyword_loc, name, location = Location())
8896
+ ModuleNode.new(locals, module_keyword_loc, constant_path, body, end_keyword_loc, name, location)
7258
8897
  end
7259
8898
 
7260
8899
  # Create a new MultiWriteNode node
@@ -7298,8 +8937,8 @@ module YARP
7298
8937
  end
7299
8938
 
7300
8939
  # Create a new ParenthesesNode node
7301
- def ParenthesesNode(statements, opening_loc, closing_loc, location = Location())
7302
- ParenthesesNode.new(statements, opening_loc, closing_loc, location)
8940
+ def ParenthesesNode(body, opening_loc, closing_loc, location = Location())
8941
+ ParenthesesNode.new(body, opening_loc, closing_loc, location)
7303
8942
  end
7304
8943
 
7305
8944
  # Create a new PinnedExpressionNode node
@@ -7388,8 +9027,8 @@ module YARP
7388
9027
  end
7389
9028
 
7390
9029
  # Create a new SingletonClassNode node
7391
- def SingletonClassNode(locals, class_keyword_loc, operator_loc, expression, statements, end_keyword_loc, location = Location())
7392
- SingletonClassNode.new(locals, class_keyword_loc, operator_loc, expression, statements, end_keyword_loc, location)
9030
+ def SingletonClassNode(locals, class_keyword_loc, operator_loc, expression, body, end_keyword_loc, location = Location())
9031
+ SingletonClassNode.new(locals, class_keyword_loc, operator_loc, expression, body, end_keyword_loc, location)
7393
9032
  end
7394
9033
 
7395
9034
  # Create a new SourceEncodingNode node
@@ -7453,8 +9092,8 @@ module YARP
7453
9092
  end
7454
9093
 
7455
9094
  # Create a new UntilNode node
7456
- def UntilNode(keyword_loc, predicate, statements, flags, location = Location())
7457
- UntilNode.new(keyword_loc, predicate, statements, flags, location)
9095
+ def UntilNode(keyword_loc, closing_loc, predicate, statements, flags, location = Location())
9096
+ UntilNode.new(keyword_loc, closing_loc, predicate, statements, flags, location)
7458
9097
  end
7459
9098
 
7460
9099
  # Create a new WhenNode node
@@ -7463,8 +9102,8 @@ module YARP
7463
9102
  end
7464
9103
 
7465
9104
  # Create a new WhileNode node
7466
- def WhileNode(keyword_loc, predicate, statements, flags, location = Location())
7467
- WhileNode.new(keyword_loc, predicate, statements, flags, location)
9105
+ def WhileNode(keyword_loc, closing_loc, predicate, statements, flags, location = Location())
9106
+ WhileNode.new(keyword_loc, closing_loc, predicate, statements, flags, location)
7468
9107
  end
7469
9108
 
7470
9109
  # Create a new XStringNode node