prism 0.15.1 → 0.17.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +35 -1
- data/Makefile +12 -0
- data/README.md +3 -1
- data/config.yml +66 -50
- data/docs/configuration.md +2 -0
- data/docs/fuzzing.md +1 -1
- data/docs/javascript.md +90 -0
- data/docs/releasing.md +27 -0
- data/docs/ruby_api.md +2 -0
- data/docs/serialization.md +28 -29
- data/ext/prism/api_node.c +856 -826
- data/ext/prism/api_pack.c +20 -9
- data/ext/prism/extension.c +494 -119
- data/ext/prism/extension.h +1 -1
- data/include/prism/ast.h +3157 -747
- data/include/prism/defines.h +40 -8
- data/include/prism/diagnostic.h +36 -3
- data/include/prism/enc/pm_encoding.h +119 -28
- data/include/prism/node.h +38 -30
- data/include/prism/options.h +204 -0
- data/include/prism/pack.h +44 -33
- data/include/prism/parser.h +445 -199
- data/include/prism/prettyprint.h +26 -0
- data/include/prism/regexp.h +16 -2
- data/include/prism/util/pm_buffer.h +102 -18
- data/include/prism/util/pm_char.h +162 -48
- data/include/prism/util/pm_constant_pool.h +128 -34
- data/include/prism/util/pm_list.h +68 -38
- data/include/prism/util/pm_memchr.h +18 -3
- data/include/prism/util/pm_newline_list.h +71 -28
- data/include/prism/util/pm_state_stack.h +25 -7
- data/include/prism/util/pm_string.h +115 -27
- data/include/prism/util/pm_string_list.h +25 -6
- data/include/prism/util/pm_strncasecmp.h +32 -0
- data/include/prism/util/pm_strpbrk.h +31 -17
- data/include/prism/version.h +28 -3
- data/include/prism.h +229 -36
- data/lib/prism/compiler.rb +5 -5
- data/lib/prism/debug.rb +43 -13
- data/lib/prism/desugar_compiler.rb +1 -1
- data/lib/prism/dispatcher.rb +27 -26
- data/lib/prism/dsl.rb +16 -16
- data/lib/prism/ffi.rb +138 -61
- data/lib/prism/lex_compat.rb +26 -16
- data/lib/prism/mutation_compiler.rb +11 -11
- data/lib/prism/node.rb +426 -227
- data/lib/prism/node_ext.rb +23 -16
- data/lib/prism/node_inspector.rb +1 -1
- data/lib/prism/pack.rb +79 -40
- data/lib/prism/parse_result/comments.rb +7 -2
- data/lib/prism/parse_result/newlines.rb +4 -0
- data/lib/prism/parse_result.rb +157 -21
- data/lib/prism/pattern.rb +14 -3
- data/lib/prism/ripper_compat.rb +28 -10
- data/lib/prism/serialize.rb +935 -307
- data/lib/prism/visitor.rb +9 -5
- data/lib/prism.rb +20 -2
- data/prism.gemspec +11 -2
- data/rbi/prism.rbi +7305 -0
- data/rbi/prism_static.rbi +196 -0
- data/sig/prism.rbs +4468 -0
- data/sig/prism_static.rbs +123 -0
- data/src/diagnostic.c +56 -53
- data/src/enc/pm_big5.c +1 -0
- data/src/enc/pm_euc_jp.c +1 -0
- data/src/enc/pm_gbk.c +1 -0
- data/src/enc/pm_shift_jis.c +1 -0
- data/src/enc/pm_tables.c +316 -80
- data/src/enc/pm_unicode.c +54 -9
- data/src/enc/pm_windows_31j.c +1 -0
- data/src/node.c +357 -345
- data/src/options.c +170 -0
- data/src/prettyprint.c +7697 -1643
- data/src/prism.c +1964 -1125
- data/src/regexp.c +153 -95
- data/src/serialize.c +432 -397
- data/src/token_type.c +3 -1
- data/src/util/pm_buffer.c +88 -23
- data/src/util/pm_char.c +103 -57
- data/src/util/pm_constant_pool.c +52 -22
- data/src/util/pm_list.c +12 -4
- data/src/util/pm_memchr.c +5 -3
- data/src/util/pm_newline_list.c +25 -63
- data/src/util/pm_state_stack.c +9 -3
- data/src/util/pm_string.c +95 -85
- data/src/util/pm_string_list.c +14 -15
- data/src/util/pm_strncasecmp.c +10 -3
- data/src/util/pm_strpbrk.c +25 -19
- metadata +12 -3
- data/docs/prism.png +0 -0
data/lib/prism/node.rb
CHANGED
@@ -9,13 +9,15 @@ module Prism
|
|
9
9
|
# This represents a node in the tree. It is the parent class of all of the
|
10
10
|
# various node types.
|
11
11
|
class Node
|
12
|
+
# A Location instance that represents the location of this node in the
|
13
|
+
# source.
|
12
14
|
attr_reader :location
|
13
15
|
|
14
|
-
def newline?
|
16
|
+
def newline? # :nodoc:
|
15
17
|
@newline ? true : false
|
16
18
|
end
|
17
19
|
|
18
|
-
def set_newline_flag(newline_marked)
|
20
|
+
def set_newline_flag(newline_marked) # :nodoc:
|
19
21
|
line = location.start_line
|
20
22
|
unless newline_marked[line]
|
21
23
|
newline_marked[line] = true
|
@@ -103,6 +105,7 @@ module Prism
|
|
103
105
|
keyword_loc.slice
|
104
106
|
end
|
105
107
|
|
108
|
+
# def inspect(inspector: NodeInspector) -> String
|
106
109
|
def inspect(inspector = NodeInspector.new)
|
107
110
|
inspector << inspector.header(self)
|
108
111
|
inspector << "├── new_name:\n"
|
@@ -207,6 +210,7 @@ module Prism
|
|
207
210
|
keyword_loc.slice
|
208
211
|
end
|
209
212
|
|
213
|
+
# def inspect(inspector: NodeInspector) -> String
|
210
214
|
def inspect(inspector = NodeInspector.new)
|
211
215
|
inspector << inspector.header(self)
|
212
216
|
inspector << "├── new_name:\n"
|
@@ -311,6 +315,7 @@ module Prism
|
|
311
315
|
operator_loc.slice
|
312
316
|
end
|
313
317
|
|
318
|
+
# def inspect(inspector: NodeInspector) -> String
|
314
319
|
def inspect(inspector = NodeInspector.new)
|
315
320
|
inspector << inspector.header(self)
|
316
321
|
inspector << "├── left:\n"
|
@@ -415,6 +420,7 @@ module Prism
|
|
415
420
|
operator_loc.slice
|
416
421
|
end
|
417
422
|
|
423
|
+
# def inspect(inspector: NodeInspector) -> String
|
418
424
|
def inspect(inspector = NodeInspector.new)
|
419
425
|
inspector << inspector.header(self)
|
420
426
|
inspector << "├── left:\n"
|
@@ -462,9 +468,13 @@ module Prism
|
|
462
468
|
# attr_reader arguments: Array[Node]
|
463
469
|
attr_reader :arguments
|
464
470
|
|
465
|
-
#
|
466
|
-
|
471
|
+
# attr_reader flags: Integer
|
472
|
+
private attr_reader :flags
|
473
|
+
|
474
|
+
# def initialize: (arguments: Array[Node], flags: Integer, location: Location) -> void
|
475
|
+
def initialize(arguments, flags, location)
|
467
476
|
@arguments = arguments
|
477
|
+
@flags = flags
|
468
478
|
@location = location
|
469
479
|
end
|
470
480
|
|
@@ -492,6 +502,7 @@ module Prism
|
|
492
502
|
def copy(**params)
|
493
503
|
ArgumentsNode.new(
|
494
504
|
params.fetch(:arguments) { arguments },
|
505
|
+
params.fetch(:flags) { flags },
|
495
506
|
params.fetch(:location) { location },
|
496
507
|
)
|
497
508
|
end
|
@@ -501,12 +512,20 @@ module Prism
|
|
501
512
|
|
502
513
|
# def deconstruct_keys: (keys: Array[Symbol]) -> Hash[Symbol, nil | Node | Array[Node] | String | Token | Array[Token] | Location]
|
503
514
|
def deconstruct_keys(keys)
|
504
|
-
{ arguments: arguments, location: location }
|
515
|
+
{ arguments: arguments, flags: flags, location: location }
|
505
516
|
end
|
506
517
|
|
518
|
+
# def keyword_splat?: () -> bool
|
519
|
+
def keyword_splat?
|
520
|
+
flags.anybits?(ArgumentsNodeFlags::KEYWORD_SPLAT)
|
521
|
+
end
|
522
|
+
|
523
|
+
# def inspect(inspector: NodeInspector) -> String
|
507
524
|
def inspect(inspector = NodeInspector.new)
|
508
525
|
inspector << inspector.header(self)
|
509
|
-
inspector << "
|
526
|
+
inspector << "├── arguments: #{inspector.list("#{inspector.prefix}│ ", arguments)}"
|
527
|
+
flags = [("keyword_splat" if keyword_splat?)].compact
|
528
|
+
inspector << "└── flags: #{flags.empty? ? "∅" : flags.join(", ")}\n"
|
510
529
|
inspector.to_str
|
511
530
|
end
|
512
531
|
|
@@ -610,6 +629,7 @@ module Prism
|
|
610
629
|
closing_loc&.slice
|
611
630
|
end
|
612
631
|
|
632
|
+
# def inspect(inspector: NodeInspector) -> String
|
613
633
|
def inspect(inspector = NodeInspector.new)
|
614
634
|
inspector << inspector.header(self)
|
615
635
|
inspector << "├── elements: #{inspector.list("#{inspector.prefix}│ ", elements)}"
|
@@ -749,6 +769,7 @@ module Prism
|
|
749
769
|
closing_loc&.slice
|
750
770
|
end
|
751
771
|
|
772
|
+
# def inspect(inspector: NodeInspector) -> String
|
752
773
|
def inspect(inspector = NodeInspector.new)
|
753
774
|
inspector << inspector.header(self)
|
754
775
|
if (constant = self.constant).nil?
|
@@ -867,6 +888,7 @@ module Prism
|
|
867
888
|
operator_loc&.slice
|
868
889
|
end
|
869
890
|
|
891
|
+
# def inspect(inspector: NodeInspector) -> String
|
870
892
|
def inspect(inspector = NodeInspector.new)
|
871
893
|
inspector << inspector.header(self)
|
872
894
|
inspector << "├── key:\n"
|
@@ -972,6 +994,7 @@ module Prism
|
|
972
994
|
operator_loc.slice
|
973
995
|
end
|
974
996
|
|
997
|
+
# def inspect(inspector: NodeInspector) -> String
|
975
998
|
def inspect(inspector = NodeInspector.new)
|
976
999
|
inspector << inspector.header(self)
|
977
1000
|
if (value = self.value).nil?
|
@@ -1063,6 +1086,7 @@ module Prism
|
|
1063
1086
|
{ name: name, location: location }
|
1064
1087
|
end
|
1065
1088
|
|
1089
|
+
# def inspect(inspector: NodeInspector) -> String
|
1066
1090
|
def inspect(inspector = NodeInspector.new)
|
1067
1091
|
inspector << inspector.header(self)
|
1068
1092
|
inspector << "└── name: #{name.inspect}\n"
|
@@ -1139,7 +1163,7 @@ module Prism
|
|
1139
1163
|
visitor.visit_begin_node(self)
|
1140
1164
|
end
|
1141
1165
|
|
1142
|
-
def set_newline_flag(newline_marked)
|
1166
|
+
def set_newline_flag(newline_marked) # :nodoc:
|
1143
1167
|
# Never mark BeginNode with a newline flag, mark children instead
|
1144
1168
|
end
|
1145
1169
|
|
@@ -1194,6 +1218,7 @@ module Prism
|
|
1194
1218
|
end_keyword_loc&.slice
|
1195
1219
|
end
|
1196
1220
|
|
1221
|
+
# def inspect(inspector: NodeInspector) -> String
|
1197
1222
|
def inspect(inspector = NodeInspector.new)
|
1198
1223
|
inspector << inspector.header(self)
|
1199
1224
|
inspector << "├── begin_keyword_loc: #{inspector.location(begin_keyword_loc)}\n"
|
@@ -1316,6 +1341,7 @@ module Prism
|
|
1316
1341
|
operator_loc.slice
|
1317
1342
|
end
|
1318
1343
|
|
1344
|
+
# def inspect(inspector: NodeInspector) -> String
|
1319
1345
|
def inspect(inspector = NodeInspector.new)
|
1320
1346
|
inspector << inspector.header(self)
|
1321
1347
|
if (expression = self.expression).nil?
|
@@ -1407,6 +1433,7 @@ module Prism
|
|
1407
1433
|
{ name: name, location: location }
|
1408
1434
|
end
|
1409
1435
|
|
1436
|
+
# def inspect(inspector: NodeInspector) -> String
|
1410
1437
|
def inspect(inspector = NodeInspector.new)
|
1411
1438
|
inspector << inspector.header(self)
|
1412
1439
|
inspector << "└── name: #{name.inspect}\n"
|
@@ -1525,6 +1552,7 @@ module Prism
|
|
1525
1552
|
closing_loc.slice
|
1526
1553
|
end
|
1527
1554
|
|
1555
|
+
# def inspect(inspector: NodeInspector) -> String
|
1528
1556
|
def inspect(inspector = NodeInspector.new)
|
1529
1557
|
inspector << inspector.header(self)
|
1530
1558
|
inspector << "├── locals: #{locals.inspect}\n"
|
@@ -1640,9 +1668,14 @@ module Prism
|
|
1640
1668
|
operator_loc.slice
|
1641
1669
|
end
|
1642
1670
|
|
1671
|
+
# def inspect(inspector: NodeInspector) -> String
|
1643
1672
|
def inspect(inspector = NodeInspector.new)
|
1644
1673
|
inspector << inspector.header(self)
|
1645
|
-
|
1674
|
+
if (name = self.name).nil?
|
1675
|
+
inspector << "├── name: ∅\n"
|
1676
|
+
else
|
1677
|
+
inspector << "├── name: #{name.inspect}\n"
|
1678
|
+
end
|
1646
1679
|
inspector << "├── name_loc: #{inspector.location(name_loc)}\n"
|
1647
1680
|
inspector << "└── operator_loc: #{inspector.location(operator_loc)}\n"
|
1648
1681
|
inspector.to_str
|
@@ -1759,6 +1792,7 @@ module Prism
|
|
1759
1792
|
closing_loc&.slice
|
1760
1793
|
end
|
1761
1794
|
|
1795
|
+
# def inspect(inspector: NodeInspector) -> String
|
1762
1796
|
def inspect(inspector = NodeInspector.new)
|
1763
1797
|
inspector << inspector.header(self)
|
1764
1798
|
if (parameters = self.parameters).nil?
|
@@ -1864,6 +1898,7 @@ module Prism
|
|
1864
1898
|
keyword_loc.slice
|
1865
1899
|
end
|
1866
1900
|
|
1901
|
+
# def inspect(inspector: NodeInspector) -> String
|
1867
1902
|
def inspect(inspector = NodeInspector.new)
|
1868
1903
|
inspector << inspector.header(self)
|
1869
1904
|
if (arguments = self.arguments).nil?
|
@@ -2018,6 +2053,7 @@ module Prism
|
|
2018
2053
|
operator_loc.slice
|
2019
2054
|
end
|
2020
2055
|
|
2056
|
+
# def inspect(inspector: NodeInspector) -> String
|
2021
2057
|
def inspect(inspector = NodeInspector.new)
|
2022
2058
|
inspector << inspector.header(self)
|
2023
2059
|
if (receiver = self.receiver).nil?
|
@@ -2206,6 +2242,7 @@ module Prism
|
|
2206
2242
|
flags.anybits?(CallNodeFlags::VARIABLE_CALL)
|
2207
2243
|
end
|
2208
2244
|
|
2245
|
+
# def inspect(inspector: NodeInspector) -> String
|
2209
2246
|
def inspect(inspector = NodeInspector.new)
|
2210
2247
|
inspector << inspector.header(self)
|
2211
2248
|
if (receiver = self.receiver).nil?
|
@@ -2378,6 +2415,7 @@ module Prism
|
|
2378
2415
|
flags.anybits?(CallNodeFlags::VARIABLE_CALL)
|
2379
2416
|
end
|
2380
2417
|
|
2418
|
+
# def inspect(inspector: NodeInspector) -> String
|
2381
2419
|
def inspect(inspector = NodeInspector.new)
|
2382
2420
|
inspector << inspector.header(self)
|
2383
2421
|
if (receiver = self.receiver).nil?
|
@@ -2541,6 +2579,7 @@ module Prism
|
|
2541
2579
|
operator_loc.slice
|
2542
2580
|
end
|
2543
2581
|
|
2582
|
+
# def inspect(inspector: NodeInspector) -> String
|
2544
2583
|
def inspect(inspector = NodeInspector.new)
|
2545
2584
|
inspector << inspector.header(self)
|
2546
2585
|
if (receiver = self.receiver).nil?
|
@@ -2655,6 +2694,7 @@ module Prism
|
|
2655
2694
|
operator_loc.slice
|
2656
2695
|
end
|
2657
2696
|
|
2697
|
+
# def inspect(inspector: NodeInspector) -> String
|
2658
2698
|
def inspect(inspector = NodeInspector.new)
|
2659
2699
|
inspector << inspector.header(self)
|
2660
2700
|
inspector << "├── value:\n"
|
@@ -2696,10 +2736,10 @@ module Prism
|
|
2696
2736
|
|
2697
2737
|
# Represents the use of a case statement.
|
2698
2738
|
#
|
2699
|
-
#
|
2700
|
-
#
|
2701
|
-
#
|
2702
|
-
#
|
2739
|
+
# case true
|
2740
|
+
# when false
|
2741
|
+
# end
|
2742
|
+
# ^^^^^^^^^^
|
2703
2743
|
class CaseNode < Node
|
2704
2744
|
# attr_reader predicate: Node?
|
2705
2745
|
attr_reader :predicate
|
@@ -2780,6 +2820,7 @@ module Prism
|
|
2780
2820
|
end_keyword_loc.slice
|
2781
2821
|
end
|
2782
2822
|
|
2823
|
+
# def inspect(inspector: NodeInspector) -> String
|
2783
2824
|
def inspect(inspector = NodeInspector.new)
|
2784
2825
|
inspector << inspector.header(self)
|
2785
2826
|
if (predicate = self.predicate).nil?
|
@@ -2933,6 +2974,7 @@ module Prism
|
|
2933
2974
|
end_keyword_loc.slice
|
2934
2975
|
end
|
2935
2976
|
|
2977
|
+
# def inspect(inspector: NodeInspector) -> String
|
2936
2978
|
def inspect(inspector = NodeInspector.new)
|
2937
2979
|
inspector << inspector.header(self)
|
2938
2980
|
inspector << "├── locals: #{locals.inspect}\n"
|
@@ -2989,7 +3031,7 @@ module Prism
|
|
2989
3031
|
# Represents the use of the `&&=` operator for assignment to a class variable.
|
2990
3032
|
#
|
2991
3033
|
# @@target &&= value
|
2992
|
-
#
|
3034
|
+
# ^^^^^^^^^^^^^^^^^^
|
2993
3035
|
class ClassVariableAndWriteNode < Node
|
2994
3036
|
# attr_reader name: Symbol
|
2995
3037
|
attr_reader :name
|
@@ -3056,6 +3098,7 @@ module Prism
|
|
3056
3098
|
operator_loc.slice
|
3057
3099
|
end
|
3058
3100
|
|
3101
|
+
# def inspect(inspector: NodeInspector) -> String
|
3059
3102
|
def inspect(inspector = NodeInspector.new)
|
3060
3103
|
inspector << inspector.header(self)
|
3061
3104
|
inspector << "├── name: #{name.inspect}\n"
|
@@ -3165,6 +3208,7 @@ module Prism
|
|
3165
3208
|
{ name: name, name_loc: name_loc, operator_loc: operator_loc, value: value, operator: operator, location: location }
|
3166
3209
|
end
|
3167
3210
|
|
3211
|
+
# def inspect(inspector: NodeInspector) -> String
|
3168
3212
|
def inspect(inspector = NodeInspector.new)
|
3169
3213
|
inspector << inspector.header(self)
|
3170
3214
|
inspector << "├── name: #{name.inspect}\n"
|
@@ -3275,6 +3319,7 @@ module Prism
|
|
3275
3319
|
operator_loc.slice
|
3276
3320
|
end
|
3277
3321
|
|
3322
|
+
# def inspect(inspector: NodeInspector) -> String
|
3278
3323
|
def inspect(inspector = NodeInspector.new)
|
3279
3324
|
inspector << inspector.header(self)
|
3280
3325
|
inspector << "├── name: #{name.inspect}\n"
|
@@ -3364,6 +3409,7 @@ module Prism
|
|
3364
3409
|
{ name: name, location: location }
|
3365
3410
|
end
|
3366
3411
|
|
3412
|
+
# def inspect(inspector: NodeInspector) -> String
|
3367
3413
|
def inspect(inspector = NodeInspector.new)
|
3368
3414
|
inspector << inspector.header(self)
|
3369
3415
|
inspector << "└── name: #{name.inspect}\n"
|
@@ -3449,6 +3495,7 @@ module Prism
|
|
3449
3495
|
{ name: name, location: location }
|
3450
3496
|
end
|
3451
3497
|
|
3498
|
+
# def inspect(inspector: NodeInspector) -> String
|
3452
3499
|
def inspect(inspector = NodeInspector.new)
|
3453
3500
|
inspector << inspector.header(self)
|
3454
3501
|
inspector << "└── name: #{name.inspect}\n"
|
@@ -3554,6 +3601,7 @@ module Prism
|
|
3554
3601
|
operator_loc&.slice
|
3555
3602
|
end
|
3556
3603
|
|
3604
|
+
# def inspect(inspector: NodeInspector) -> String
|
3557
3605
|
def inspect(inspector = NodeInspector.new)
|
3558
3606
|
inspector << inspector.header(self)
|
3559
3607
|
inspector << "├── name: #{name.inspect}\n"
|
@@ -3663,6 +3711,7 @@ module Prism
|
|
3663
3711
|
operator_loc.slice
|
3664
3712
|
end
|
3665
3713
|
|
3714
|
+
# def inspect(inspector: NodeInspector) -> String
|
3666
3715
|
def inspect(inspector = NodeInspector.new)
|
3667
3716
|
inspector << inspector.header(self)
|
3668
3717
|
inspector << "├── name: #{name.inspect}\n"
|
@@ -3772,6 +3821,7 @@ module Prism
|
|
3772
3821
|
{ name: name, name_loc: name_loc, operator_loc: operator_loc, value: value, operator: operator, location: location }
|
3773
3822
|
end
|
3774
3823
|
|
3824
|
+
# def inspect(inspector: NodeInspector) -> String
|
3775
3825
|
def inspect(inspector = NodeInspector.new)
|
3776
3826
|
inspector << inspector.header(self)
|
3777
3827
|
inspector << "├── name: #{name.inspect}\n"
|
@@ -3882,6 +3932,7 @@ module Prism
|
|
3882
3932
|
operator_loc.slice
|
3883
3933
|
end
|
3884
3934
|
|
3935
|
+
# def inspect(inspector: NodeInspector) -> String
|
3885
3936
|
def inspect(inspector = NodeInspector.new)
|
3886
3937
|
inspector << inspector.header(self)
|
3887
3938
|
inspector << "├── name: #{name.inspect}\n"
|
@@ -3986,6 +4037,7 @@ module Prism
|
|
3986
4037
|
operator_loc.slice
|
3987
4038
|
end
|
3988
4039
|
|
4040
|
+
# def inspect(inspector: NodeInspector) -> String
|
3989
4041
|
def inspect(inspector = NodeInspector.new)
|
3990
4042
|
inspector << inspector.header(self)
|
3991
4043
|
inspector << "├── target:\n"
|
@@ -4093,6 +4145,7 @@ module Prism
|
|
4093
4145
|
delimiter_loc.slice
|
4094
4146
|
end
|
4095
4147
|
|
4148
|
+
# def inspect(inspector: NodeInspector) -> String
|
4096
4149
|
def inspect(inspector = NodeInspector.new)
|
4097
4150
|
inspector << inspector.header(self)
|
4098
4151
|
if (parent = self.parent).nil?
|
@@ -4201,6 +4254,7 @@ module Prism
|
|
4201
4254
|
{ target: target, operator_loc: operator_loc, value: value, operator: operator, location: location }
|
4202
4255
|
end
|
4203
4256
|
|
4257
|
+
# def inspect(inspector: NodeInspector) -> String
|
4204
4258
|
def inspect(inspector = NodeInspector.new)
|
4205
4259
|
inspector << inspector.header(self)
|
4206
4260
|
inspector << "├── target:\n"
|
@@ -4306,6 +4360,7 @@ module Prism
|
|
4306
4360
|
operator_loc.slice
|
4307
4361
|
end
|
4308
4362
|
|
4363
|
+
# def inspect(inspector: NodeInspector) -> String
|
4309
4364
|
def inspect(inspector = NodeInspector.new)
|
4310
4365
|
inspector << inspector.header(self)
|
4311
4366
|
inspector << "├── target:\n"
|
@@ -4413,6 +4468,7 @@ module Prism
|
|
4413
4468
|
delimiter_loc.slice
|
4414
4469
|
end
|
4415
4470
|
|
4471
|
+
# def inspect(inspector: NodeInspector) -> String
|
4416
4472
|
def inspect(inspector = NodeInspector.new)
|
4417
4473
|
inspector << inspector.header(self)
|
4418
4474
|
if (parent = self.parent).nil?
|
@@ -4527,6 +4583,7 @@ module Prism
|
|
4527
4583
|
operator_loc.slice
|
4528
4584
|
end
|
4529
4585
|
|
4586
|
+
# def inspect(inspector: NodeInspector) -> String
|
4530
4587
|
def inspect(inspector = NodeInspector.new)
|
4531
4588
|
inspector << inspector.header(self)
|
4532
4589
|
inspector << "├── target:\n"
|
@@ -4616,6 +4673,7 @@ module Prism
|
|
4616
4673
|
{ name: name, location: location }
|
4617
4674
|
end
|
4618
4675
|
|
4676
|
+
# def inspect(inspector: NodeInspector) -> String
|
4619
4677
|
def inspect(inspector = NodeInspector.new)
|
4620
4678
|
inspector << inspector.header(self)
|
4621
4679
|
inspector << "└── name: #{name.inspect}\n"
|
@@ -4701,6 +4759,7 @@ module Prism
|
|
4701
4759
|
{ name: name, location: location }
|
4702
4760
|
end
|
4703
4761
|
|
4762
|
+
# def inspect(inspector: NodeInspector) -> String
|
4704
4763
|
def inspect(inspector = NodeInspector.new)
|
4705
4764
|
inspector << inspector.header(self)
|
4706
4765
|
inspector << "└── name: #{name.inspect}\n"
|
@@ -4806,6 +4865,7 @@ module Prism
|
|
4806
4865
|
operator_loc.slice
|
4807
4866
|
end
|
4808
4867
|
|
4868
|
+
# def inspect(inspector: NodeInspector) -> String
|
4809
4869
|
def inspect(inspector = NodeInspector.new)
|
4810
4870
|
inspector << inspector.header(self)
|
4811
4871
|
inspector << "├── name: #{name.inspect}\n"
|
@@ -4985,6 +5045,7 @@ module Prism
|
|
4985
5045
|
end_keyword_loc&.slice
|
4986
5046
|
end
|
4987
5047
|
|
5048
|
+
# def inspect(inspector: NodeInspector) -> String
|
4988
5049
|
def inspect(inspector = NodeInspector.new)
|
4989
5050
|
inspector << inspector.header(self)
|
4990
5051
|
inspector << "├── name: #{name.inspect}\n"
|
@@ -5126,6 +5187,7 @@ module Prism
|
|
5126
5187
|
keyword_loc.slice
|
5127
5188
|
end
|
5128
5189
|
|
5190
|
+
# def inspect(inspector: NodeInspector) -> String
|
5129
5191
|
def inspect(inspector = NodeInspector.new)
|
5130
5192
|
inspector << inspector.header(self)
|
5131
5193
|
inspector << "├── lparen_loc: #{inspector.location(lparen_loc)}\n"
|
@@ -5237,6 +5299,7 @@ module Prism
|
|
5237
5299
|
end_keyword_loc&.slice
|
5238
5300
|
end
|
5239
5301
|
|
5302
|
+
# def inspect(inspector: NodeInspector) -> String
|
5240
5303
|
def inspect(inspector = NodeInspector.new)
|
5241
5304
|
inspector << inspector.header(self)
|
5242
5305
|
inspector << "├── else_keyword_loc: #{inspector.location(else_keyword_loc)}\n"
|
@@ -5351,6 +5414,7 @@ module Prism
|
|
5351
5414
|
closing_loc.slice
|
5352
5415
|
end
|
5353
5416
|
|
5417
|
+
# def inspect(inspector: NodeInspector) -> String
|
5354
5418
|
def inspect(inspector = NodeInspector.new)
|
5355
5419
|
inspector << inspector.header(self)
|
5356
5420
|
inspector << "├── opening_loc: #{inspector.location(opening_loc)}\n"
|
@@ -5453,6 +5517,7 @@ module Prism
|
|
5453
5517
|
operator_loc.slice
|
5454
5518
|
end
|
5455
5519
|
|
5520
|
+
# def inspect(inspector: NodeInspector) -> String
|
5456
5521
|
def inspect(inspector = NodeInspector.new)
|
5457
5522
|
inspector << inspector.header(self)
|
5458
5523
|
inspector << "├── operator_loc: #{inspector.location(operator_loc)}\n"
|
@@ -5566,6 +5631,7 @@ module Prism
|
|
5566
5631
|
end_keyword_loc.slice
|
5567
5632
|
end
|
5568
5633
|
|
5634
|
+
# def inspect(inspector: NodeInspector) -> String
|
5569
5635
|
def inspect(inspector = NodeInspector.new)
|
5570
5636
|
inspector << inspector.header(self)
|
5571
5637
|
inspector << "├── ensure_keyword_loc: #{inspector.location(ensure_keyword_loc)}\n"
|
@@ -5653,6 +5719,7 @@ module Prism
|
|
5653
5719
|
{ location: location }
|
5654
5720
|
end
|
5655
5721
|
|
5722
|
+
# def inspect(inspector: NodeInspector) -> String
|
5656
5723
|
def inspect(inspector = NodeInspector.new)
|
5657
5724
|
inspector << inspector.header(self)
|
5658
5725
|
inspector.to_str
|
@@ -5690,13 +5757,13 @@ module Prism
|
|
5690
5757
|
# Represents a find pattern in pattern matching.
|
5691
5758
|
#
|
5692
5759
|
# foo in *bar, baz, *qux
|
5693
|
-
#
|
5760
|
+
# ^^^^^^^^^^^^^^^
|
5694
5761
|
#
|
5695
5762
|
# foo in [*bar, baz, *qux]
|
5696
|
-
#
|
5763
|
+
# ^^^^^^^^^^^^^^^^^
|
5697
5764
|
#
|
5698
5765
|
# foo in Foo(*bar, baz, *qux)
|
5699
|
-
#
|
5766
|
+
# ^^^^^^^^^^^^^^^^^^^^
|
5700
5767
|
class FindPatternNode < Node
|
5701
5768
|
# attr_reader constant: Node?
|
5702
5769
|
attr_reader :constant
|
@@ -5783,6 +5850,7 @@ module Prism
|
|
5783
5850
|
closing_loc&.slice
|
5784
5851
|
end
|
5785
5852
|
|
5853
|
+
# def inspect(inspector: NodeInspector) -> String
|
5786
5854
|
def inspect(inspector = NodeInspector.new)
|
5787
5855
|
inspector << inspector.header(self)
|
5788
5856
|
if (constant = self.constant).nil?
|
@@ -5908,6 +5976,7 @@ module Prism
|
|
5908
5976
|
flags.anybits?(RangeFlags::EXCLUDE_END)
|
5909
5977
|
end
|
5910
5978
|
|
5979
|
+
# def inspect(inspector: NodeInspector) -> String
|
5911
5980
|
def inspect(inspector = NodeInspector.new)
|
5912
5981
|
inspector << inspector.header(self)
|
5913
5982
|
if (left = self.left).nil?
|
@@ -6002,6 +6071,7 @@ module Prism
|
|
6002
6071
|
{ location: location }
|
6003
6072
|
end
|
6004
6073
|
|
6074
|
+
# def inspect(inspector: NodeInspector) -> String
|
6005
6075
|
def inspect(inspector = NodeInspector.new)
|
6006
6076
|
inspector << inspector.header(self)
|
6007
6077
|
inspector.to_str
|
@@ -6140,6 +6210,7 @@ module Prism
|
|
6140
6210
|
end_keyword_loc.slice
|
6141
6211
|
end
|
6142
6212
|
|
6213
|
+
# def inspect(inspector: NodeInspector) -> String
|
6143
6214
|
def inspect(inspector = NodeInspector.new)
|
6144
6215
|
inspector << inspector.header(self)
|
6145
6216
|
inspector << "├── index:\n"
|
@@ -6192,7 +6263,7 @@ module Prism
|
|
6192
6263
|
#
|
6193
6264
|
# def foo(...)
|
6194
6265
|
# bar(...)
|
6195
|
-
#
|
6266
|
+
# ^^^
|
6196
6267
|
# end
|
6197
6268
|
class ForwardingArgumentsNode < Node
|
6198
6269
|
# def initialize: (location: Location) -> void
|
@@ -6235,6 +6306,7 @@ module Prism
|
|
6235
6306
|
{ location: location }
|
6236
6307
|
end
|
6237
6308
|
|
6309
|
+
# def inspect(inspector: NodeInspector) -> String
|
6238
6310
|
def inspect(inspector = NodeInspector.new)
|
6239
6311
|
inspector << inspector.header(self)
|
6240
6312
|
inspector.to_str
|
@@ -6315,6 +6387,7 @@ module Prism
|
|
6315
6387
|
{ location: location }
|
6316
6388
|
end
|
6317
6389
|
|
6390
|
+
# def inspect(inspector: NodeInspector) -> String
|
6318
6391
|
def inspect(inspector = NodeInspector.new)
|
6319
6392
|
inspector << inspector.header(self)
|
6320
6393
|
inspector.to_str
|
@@ -6401,6 +6474,7 @@ module Prism
|
|
6401
6474
|
{ block: block, location: location }
|
6402
6475
|
end
|
6403
6476
|
|
6477
|
+
# def inspect(inspector: NodeInspector) -> String
|
6404
6478
|
def inspect(inspector = NodeInspector.new)
|
6405
6479
|
inspector << inspector.header(self)
|
6406
6480
|
if (block = self.block).nil?
|
@@ -6511,6 +6585,7 @@ module Prism
|
|
6511
6585
|
operator_loc.slice
|
6512
6586
|
end
|
6513
6587
|
|
6588
|
+
# def inspect(inspector: NodeInspector) -> String
|
6514
6589
|
def inspect(inspector = NodeInspector.new)
|
6515
6590
|
inspector << inspector.header(self)
|
6516
6591
|
inspector << "├── name: #{name.inspect}\n"
|
@@ -6620,6 +6695,7 @@ module Prism
|
|
6620
6695
|
{ name: name, name_loc: name_loc, operator_loc: operator_loc, value: value, operator: operator, location: location }
|
6621
6696
|
end
|
6622
6697
|
|
6698
|
+
# def inspect(inspector: NodeInspector) -> String
|
6623
6699
|
def inspect(inspector = NodeInspector.new)
|
6624
6700
|
inspector << inspector.header(self)
|
6625
6701
|
inspector << "├── name: #{name.inspect}\n"
|
@@ -6730,6 +6806,7 @@ module Prism
|
|
6730
6806
|
operator_loc.slice
|
6731
6807
|
end
|
6732
6808
|
|
6809
|
+
# def inspect(inspector: NodeInspector) -> String
|
6733
6810
|
def inspect(inspector = NodeInspector.new)
|
6734
6811
|
inspector << inspector.header(self)
|
6735
6812
|
inspector << "├── name: #{name.inspect}\n"
|
@@ -6819,6 +6896,7 @@ module Prism
|
|
6819
6896
|
{ name: name, location: location }
|
6820
6897
|
end
|
6821
6898
|
|
6899
|
+
# def inspect(inspector: NodeInspector) -> String
|
6822
6900
|
def inspect(inspector = NodeInspector.new)
|
6823
6901
|
inspector << inspector.header(self)
|
6824
6902
|
inspector << "└── name: #{name.inspect}\n"
|
@@ -6904,6 +6982,7 @@ module Prism
|
|
6904
6982
|
{ name: name, location: location }
|
6905
6983
|
end
|
6906
6984
|
|
6985
|
+
# def inspect(inspector: NodeInspector) -> String
|
6907
6986
|
def inspect(inspector = NodeInspector.new)
|
6908
6987
|
inspector << inspector.header(self)
|
6909
6988
|
inspector << "└── name: #{name.inspect}\n"
|
@@ -7009,6 +7088,7 @@ module Prism
|
|
7009
7088
|
operator_loc.slice
|
7010
7089
|
end
|
7011
7090
|
|
7091
|
+
# def inspect(inspector: NodeInspector) -> String
|
7012
7092
|
def inspect(inspector = NodeInspector.new)
|
7013
7093
|
inspector << inspector.header(self)
|
7014
7094
|
inspector << "├── name: #{name.inspect}\n"
|
@@ -7118,6 +7198,7 @@ module Prism
|
|
7118
7198
|
closing_loc.slice
|
7119
7199
|
end
|
7120
7200
|
|
7201
|
+
# def inspect(inspector: NodeInspector) -> String
|
7121
7202
|
def inspect(inspector = NodeInspector.new)
|
7122
7203
|
inspector << inspector.header(self)
|
7123
7204
|
inspector << "├── opening_loc: #{inspector.location(opening_loc)}\n"
|
@@ -7166,11 +7247,11 @@ module Prism
|
|
7166
7247
|
# attr_reader constant: Node?
|
7167
7248
|
attr_reader :constant
|
7168
7249
|
|
7169
|
-
# attr_reader
|
7170
|
-
attr_reader :
|
7250
|
+
# attr_reader elements: Array[Node]
|
7251
|
+
attr_reader :elements
|
7171
7252
|
|
7172
|
-
# attr_reader
|
7173
|
-
attr_reader :
|
7253
|
+
# attr_reader rest: Node?
|
7254
|
+
attr_reader :rest
|
7174
7255
|
|
7175
7256
|
# attr_reader opening_loc: Location?
|
7176
7257
|
attr_reader :opening_loc
|
@@ -7178,11 +7259,11 @@ module Prism
|
|
7178
7259
|
# attr_reader closing_loc: Location?
|
7179
7260
|
attr_reader :closing_loc
|
7180
7261
|
|
7181
|
-
# def initialize: (constant: Node?,
|
7182
|
-
def initialize(constant,
|
7262
|
+
# def initialize: (constant: Node?, elements: Array[Node], rest: Node?, opening_loc: Location?, closing_loc: Location?, location: Location) -> void
|
7263
|
+
def initialize(constant, elements, rest, opening_loc, closing_loc, location)
|
7183
7264
|
@constant = constant
|
7184
|
-
@
|
7185
|
-
@
|
7265
|
+
@elements = elements
|
7266
|
+
@rest = rest
|
7186
7267
|
@opening_loc = opening_loc
|
7187
7268
|
@closing_loc = closing_loc
|
7188
7269
|
@location = location
|
@@ -7195,29 +7276,29 @@ module Prism
|
|
7195
7276
|
|
7196
7277
|
# def child_nodes: () -> Array[nil | Node]
|
7197
7278
|
def child_nodes
|
7198
|
-
[constant, *
|
7279
|
+
[constant, *elements, rest]
|
7199
7280
|
end
|
7200
7281
|
|
7201
7282
|
# def compact_child_nodes: () -> Array[Node]
|
7202
7283
|
def compact_child_nodes
|
7203
7284
|
compact = []
|
7204
7285
|
compact << constant if constant
|
7205
|
-
compact.concat(
|
7206
|
-
compact <<
|
7286
|
+
compact.concat(elements)
|
7287
|
+
compact << rest if rest
|
7207
7288
|
compact
|
7208
7289
|
end
|
7209
7290
|
|
7210
7291
|
# def comment_targets: () -> Array[Node | Location]
|
7211
7292
|
def comment_targets
|
7212
|
-
[*constant, *
|
7293
|
+
[*constant, *elements, *rest, *opening_loc, *closing_loc]
|
7213
7294
|
end
|
7214
7295
|
|
7215
7296
|
# def copy: (**params) -> HashPatternNode
|
7216
7297
|
def copy(**params)
|
7217
7298
|
HashPatternNode.new(
|
7218
7299
|
params.fetch(:constant) { constant },
|
7219
|
-
params.fetch(:
|
7220
|
-
params.fetch(:
|
7300
|
+
params.fetch(:elements) { elements },
|
7301
|
+
params.fetch(:rest) { rest },
|
7221
7302
|
params.fetch(:opening_loc) { opening_loc },
|
7222
7303
|
params.fetch(:closing_loc) { closing_loc },
|
7223
7304
|
params.fetch(:location) { location },
|
@@ -7229,7 +7310,7 @@ module Prism
|
|
7229
7310
|
|
7230
7311
|
# def deconstruct_keys: (keys: Array[Symbol]) -> Hash[Symbol, nil | Node | Array[Node] | String | Token | Array[Token] | Location]
|
7231
7312
|
def deconstruct_keys(keys)
|
7232
|
-
{ constant: constant,
|
7313
|
+
{ constant: constant, elements: elements, rest: rest, opening_loc: opening_loc, closing_loc: closing_loc, location: location }
|
7233
7314
|
end
|
7234
7315
|
|
7235
7316
|
# def opening: () -> String?
|
@@ -7242,6 +7323,7 @@ module Prism
|
|
7242
7323
|
closing_loc&.slice
|
7243
7324
|
end
|
7244
7325
|
|
7326
|
+
# def inspect(inspector: NodeInspector) -> String
|
7245
7327
|
def inspect(inspector = NodeInspector.new)
|
7246
7328
|
inspector << inspector.header(self)
|
7247
7329
|
if (constant = self.constant).nil?
|
@@ -7250,12 +7332,12 @@ module Prism
|
|
7250
7332
|
inspector << "├── constant:\n"
|
7251
7333
|
inspector << constant.inspect(inspector.child_inspector("│ ")).delete_prefix(inspector.prefix)
|
7252
7334
|
end
|
7253
|
-
inspector << "├──
|
7254
|
-
if (
|
7255
|
-
inspector << "├──
|
7335
|
+
inspector << "├── elements: #{inspector.list("#{inspector.prefix}│ ", elements)}"
|
7336
|
+
if (rest = self.rest).nil?
|
7337
|
+
inspector << "├── rest: ∅\n"
|
7256
7338
|
else
|
7257
|
-
inspector << "├──
|
7258
|
-
inspector <<
|
7339
|
+
inspector << "├── rest:\n"
|
7340
|
+
inspector << rest.inspect(inspector.child_inspector("│ ")).delete_prefix(inspector.prefix)
|
7259
7341
|
end
|
7260
7342
|
inspector << "├── opening_loc: #{inspector.location(opening_loc)}\n"
|
7261
7343
|
inspector << "└── closing_loc: #{inspector.location(closing_loc)}\n"
|
@@ -7329,7 +7411,7 @@ module Prism
|
|
7329
7411
|
visitor.visit_if_node(self)
|
7330
7412
|
end
|
7331
7413
|
|
7332
|
-
def set_newline_flag(newline_marked)
|
7414
|
+
def set_newline_flag(newline_marked) # :nodoc:
|
7333
7415
|
predicate.set_newline_flag(newline_marked)
|
7334
7416
|
end
|
7335
7417
|
|
@@ -7382,6 +7464,7 @@ module Prism
|
|
7382
7464
|
end_keyword_loc&.slice
|
7383
7465
|
end
|
7384
7466
|
|
7467
|
+
# def inspect(inspector: NodeInspector) -> String
|
7385
7468
|
def inspect(inspector = NodeInspector.new)
|
7386
7469
|
inspector << inspector.header(self)
|
7387
7470
|
inspector << "├── if_keyword_loc: #{inspector.location(if_keyword_loc)}\n"
|
@@ -7482,6 +7565,7 @@ module Prism
|
|
7482
7565
|
{ numeric: numeric, location: location }
|
7483
7566
|
end
|
7484
7567
|
|
7568
|
+
# def inspect(inspector: NodeInspector) -> String
|
7485
7569
|
def inspect(inspector = NodeInspector.new)
|
7486
7570
|
inspector << inspector.header(self)
|
7487
7571
|
inspector << "└── numeric:\n"
|
@@ -7572,6 +7656,7 @@ module Prism
|
|
7572
7656
|
{ value: value, location: location }
|
7573
7657
|
end
|
7574
7658
|
|
7659
|
+
# def inspect(inspector: NodeInspector) -> String
|
7575
7660
|
def inspect(inspector = NodeInspector.new)
|
7576
7661
|
inspector << inspector.header(self)
|
7577
7662
|
inspector << "└── value:\n"
|
@@ -7686,6 +7771,7 @@ module Prism
|
|
7686
7771
|
then_loc&.slice
|
7687
7772
|
end
|
7688
7773
|
|
7774
|
+
# def inspect(inspector: NodeInspector) -> String
|
7689
7775
|
def inspect(inspector = NodeInspector.new)
|
7690
7776
|
inspector << inspector.header(self)
|
7691
7777
|
inspector << "├── pattern:\n"
|
@@ -7855,6 +7941,7 @@ module Prism
|
|
7855
7941
|
operator_loc.slice
|
7856
7942
|
end
|
7857
7943
|
|
7944
|
+
# def inspect(inspector: NodeInspector) -> String
|
7858
7945
|
def inspect(inspector = NodeInspector.new)
|
7859
7946
|
inspector << inspector.header(self)
|
7860
7947
|
if (receiver = self.receiver).nil?
|
@@ -8040,6 +8127,7 @@ module Prism
|
|
8040
8127
|
flags.anybits?(CallNodeFlags::VARIABLE_CALL)
|
8041
8128
|
end
|
8042
8129
|
|
8130
|
+
# def inspect(inspector: NodeInspector) -> String
|
8043
8131
|
def inspect(inspector = NodeInspector.new)
|
8044
8132
|
inspector << inspector.header(self)
|
8045
8133
|
if (receiver = self.receiver).nil?
|
@@ -8226,6 +8314,7 @@ module Prism
|
|
8226
8314
|
operator_loc.slice
|
8227
8315
|
end
|
8228
8316
|
|
8317
|
+
# def inspect(inspector: NodeInspector) -> String
|
8229
8318
|
def inspect(inspector = NodeInspector.new)
|
8230
8319
|
inspector << inspector.header(self)
|
8231
8320
|
if (receiver = self.receiver).nil?
|
@@ -8356,6 +8445,7 @@ module Prism
|
|
8356
8445
|
operator_loc.slice
|
8357
8446
|
end
|
8358
8447
|
|
8448
|
+
# def inspect(inspector: NodeInspector) -> String
|
8359
8449
|
def inspect(inspector = NodeInspector.new)
|
8360
8450
|
inspector << inspector.header(self)
|
8361
8451
|
inspector << "├── name: #{name.inspect}\n"
|
@@ -8465,6 +8555,7 @@ module Prism
|
|
8465
8555
|
{ name: name, name_loc: name_loc, operator_loc: operator_loc, value: value, operator: operator, location: location }
|
8466
8556
|
end
|
8467
8557
|
|
8558
|
+
# def inspect(inspector: NodeInspector) -> String
|
8468
8559
|
def inspect(inspector = NodeInspector.new)
|
8469
8560
|
inspector << inspector.header(self)
|
8470
8561
|
inspector << "├── name: #{name.inspect}\n"
|
@@ -8575,6 +8666,7 @@ module Prism
|
|
8575
8666
|
operator_loc.slice
|
8576
8667
|
end
|
8577
8668
|
|
8669
|
+
# def inspect(inspector: NodeInspector) -> String
|
8578
8670
|
def inspect(inspector = NodeInspector.new)
|
8579
8671
|
inspector << inspector.header(self)
|
8580
8672
|
inspector << "├── name: #{name.inspect}\n"
|
@@ -8664,6 +8756,7 @@ module Prism
|
|
8664
8756
|
{ name: name, location: location }
|
8665
8757
|
end
|
8666
8758
|
|
8759
|
+
# def inspect(inspector: NodeInspector) -> String
|
8667
8760
|
def inspect(inspector = NodeInspector.new)
|
8668
8761
|
inspector << inspector.header(self)
|
8669
8762
|
inspector << "└── name: #{name.inspect}\n"
|
@@ -8749,6 +8842,7 @@ module Prism
|
|
8749
8842
|
{ name: name, location: location }
|
8750
8843
|
end
|
8751
8844
|
|
8845
|
+
# def inspect(inspector: NodeInspector) -> String
|
8752
8846
|
def inspect(inspector = NodeInspector.new)
|
8753
8847
|
inspector << inspector.header(self)
|
8754
8848
|
inspector << "└── name: #{name.inspect}\n"
|
@@ -8854,6 +8948,7 @@ module Prism
|
|
8854
8948
|
operator_loc.slice
|
8855
8949
|
end
|
8856
8950
|
|
8951
|
+
# def inspect(inspector: NodeInspector) -> String
|
8857
8952
|
def inspect(inspector = NodeInspector.new)
|
8858
8953
|
inspector << inspector.header(self)
|
8859
8954
|
inspector << "├── name: #{name.inspect}\n"
|
@@ -8963,6 +9058,7 @@ module Prism
|
|
8963
9058
|
flags.anybits?(IntegerBaseFlags::HEXADECIMAL)
|
8964
9059
|
end
|
8965
9060
|
|
9061
|
+
# def inspect(inspector: NodeInspector) -> String
|
8966
9062
|
def inspect(inspector = NodeInspector.new)
|
8967
9063
|
inspector << inspector.header(self)
|
8968
9064
|
flags = [("binary" if binary?), ("octal" if octal?), ("decimal" if decimal?), ("hexadecimal" if hexadecimal?)].compact
|
@@ -9032,7 +9128,7 @@ module Prism
|
|
9032
9128
|
visitor.visit_interpolated_match_last_line_node(self)
|
9033
9129
|
end
|
9034
9130
|
|
9035
|
-
def set_newline_flag(newline_marked)
|
9131
|
+
def set_newline_flag(newline_marked) # :nodoc:
|
9036
9132
|
first = parts.first
|
9037
9133
|
first.set_newline_flag(newline_marked) if first
|
9038
9134
|
end
|
@@ -9121,6 +9217,7 @@ module Prism
|
|
9121
9217
|
flags.anybits?(RegularExpressionFlags::UTF_8)
|
9122
9218
|
end
|
9123
9219
|
|
9220
|
+
# def inspect(inspector: NodeInspector) -> String
|
9124
9221
|
def inspect(inspector = NodeInspector.new)
|
9125
9222
|
inspector << inspector.header(self)
|
9126
9223
|
inspector << "├── opening_loc: #{inspector.location(opening_loc)}\n"
|
@@ -9191,7 +9288,7 @@ module Prism
|
|
9191
9288
|
visitor.visit_interpolated_regular_expression_node(self)
|
9192
9289
|
end
|
9193
9290
|
|
9194
|
-
def set_newline_flag(newline_marked)
|
9291
|
+
def set_newline_flag(newline_marked) # :nodoc:
|
9195
9292
|
first = parts.first
|
9196
9293
|
first.set_newline_flag(newline_marked) if first
|
9197
9294
|
end
|
@@ -9280,6 +9377,7 @@ module Prism
|
|
9280
9377
|
flags.anybits?(RegularExpressionFlags::UTF_8)
|
9281
9378
|
end
|
9282
9379
|
|
9380
|
+
# def inspect(inspector: NodeInspector) -> String
|
9283
9381
|
def inspect(inspector = NodeInspector.new)
|
9284
9382
|
inspector << inspector.header(self)
|
9285
9383
|
inspector << "├── opening_loc: #{inspector.location(opening_loc)}\n"
|
@@ -9346,7 +9444,7 @@ module Prism
|
|
9346
9444
|
visitor.visit_interpolated_string_node(self)
|
9347
9445
|
end
|
9348
9446
|
|
9349
|
-
def set_newline_flag(newline_marked)
|
9447
|
+
def set_newline_flag(newline_marked) # :nodoc:
|
9350
9448
|
first = parts.first
|
9351
9449
|
first.set_newline_flag(newline_marked) if first
|
9352
9450
|
end
|
@@ -9394,6 +9492,7 @@ module Prism
|
|
9394
9492
|
closing_loc&.slice
|
9395
9493
|
end
|
9396
9494
|
|
9495
|
+
# def inspect(inspector: NodeInspector) -> String
|
9397
9496
|
def inspect(inspector = NodeInspector.new)
|
9398
9497
|
inspector << inspector.header(self)
|
9399
9498
|
inspector << "├── opening_loc: #{inspector.location(opening_loc)}\n"
|
@@ -9458,7 +9557,7 @@ module Prism
|
|
9458
9557
|
visitor.visit_interpolated_symbol_node(self)
|
9459
9558
|
end
|
9460
9559
|
|
9461
|
-
def set_newline_flag(newline_marked)
|
9560
|
+
def set_newline_flag(newline_marked) # :nodoc:
|
9462
9561
|
first = parts.first
|
9463
9562
|
first.set_newline_flag(newline_marked) if first
|
9464
9563
|
end
|
@@ -9506,6 +9605,7 @@ module Prism
|
|
9506
9605
|
closing_loc&.slice
|
9507
9606
|
end
|
9508
9607
|
|
9608
|
+
# def inspect(inspector: NodeInspector) -> String
|
9509
9609
|
def inspect(inspector = NodeInspector.new)
|
9510
9610
|
inspector << inspector.header(self)
|
9511
9611
|
inspector << "├── opening_loc: #{inspector.location(opening_loc)}\n"
|
@@ -9570,7 +9670,7 @@ module Prism
|
|
9570
9670
|
visitor.visit_interpolated_x_string_node(self)
|
9571
9671
|
end
|
9572
9672
|
|
9573
|
-
def set_newline_flag(newline_marked)
|
9673
|
+
def set_newline_flag(newline_marked) # :nodoc:
|
9574
9674
|
first = parts.first
|
9575
9675
|
first.set_newline_flag(newline_marked) if first
|
9576
9676
|
end
|
@@ -9618,6 +9718,7 @@ module Prism
|
|
9618
9718
|
closing_loc.slice
|
9619
9719
|
end
|
9620
9720
|
|
9721
|
+
# def inspect(inspector: NodeInspector) -> String
|
9621
9722
|
def inspect(inspector = NodeInspector.new)
|
9622
9723
|
inspector << inspector.header(self)
|
9623
9724
|
inspector << "├── opening_loc: #{inspector.location(opening_loc)}\n"
|
@@ -9705,6 +9806,7 @@ module Prism
|
|
9705
9806
|
{ elements: elements, location: location }
|
9706
9807
|
end
|
9707
9808
|
|
9809
|
+
# def inspect(inspector: NodeInspector) -> String
|
9708
9810
|
def inspect(inspector = NodeInspector.new)
|
9709
9811
|
inspector << inspector.header(self)
|
9710
9812
|
inspector << "└── elements: #{inspector.list("#{inspector.prefix} ", elements)}"
|
@@ -9740,115 +9842,6 @@ module Prism
|
|
9740
9842
|
end
|
9741
9843
|
end
|
9742
9844
|
|
9743
|
-
# Represents a keyword parameter to a method, block, or lambda definition.
|
9744
|
-
#
|
9745
|
-
# def a(b:)
|
9746
|
-
# ^^
|
9747
|
-
# end
|
9748
|
-
#
|
9749
|
-
# def a(b: 1)
|
9750
|
-
# ^^^^
|
9751
|
-
# end
|
9752
|
-
class KeywordParameterNode < Node
|
9753
|
-
# attr_reader name: Symbol
|
9754
|
-
attr_reader :name
|
9755
|
-
|
9756
|
-
# attr_reader name_loc: Location
|
9757
|
-
attr_reader :name_loc
|
9758
|
-
|
9759
|
-
# attr_reader value: Node?
|
9760
|
-
attr_reader :value
|
9761
|
-
|
9762
|
-
# def initialize: (name: Symbol, name_loc: Location, value: Node?, location: Location) -> void
|
9763
|
-
def initialize(name, name_loc, value, location)
|
9764
|
-
@name = name
|
9765
|
-
@name_loc = name_loc
|
9766
|
-
@value = value
|
9767
|
-
@location = location
|
9768
|
-
end
|
9769
|
-
|
9770
|
-
# def accept: (visitor: Visitor) -> void
|
9771
|
-
def accept(visitor)
|
9772
|
-
visitor.visit_keyword_parameter_node(self)
|
9773
|
-
end
|
9774
|
-
|
9775
|
-
# def child_nodes: () -> Array[nil | Node]
|
9776
|
-
def child_nodes
|
9777
|
-
[value]
|
9778
|
-
end
|
9779
|
-
|
9780
|
-
# def compact_child_nodes: () -> Array[Node]
|
9781
|
-
def compact_child_nodes
|
9782
|
-
compact = []
|
9783
|
-
compact << value if value
|
9784
|
-
compact
|
9785
|
-
end
|
9786
|
-
|
9787
|
-
# def comment_targets: () -> Array[Node | Location]
|
9788
|
-
def comment_targets
|
9789
|
-
[name_loc, *value]
|
9790
|
-
end
|
9791
|
-
|
9792
|
-
# def copy: (**params) -> KeywordParameterNode
|
9793
|
-
def copy(**params)
|
9794
|
-
KeywordParameterNode.new(
|
9795
|
-
params.fetch(:name) { name },
|
9796
|
-
params.fetch(:name_loc) { name_loc },
|
9797
|
-
params.fetch(:value) { value },
|
9798
|
-
params.fetch(:location) { location },
|
9799
|
-
)
|
9800
|
-
end
|
9801
|
-
|
9802
|
-
# def deconstruct: () -> Array[nil | Node]
|
9803
|
-
alias deconstruct child_nodes
|
9804
|
-
|
9805
|
-
# def deconstruct_keys: (keys: Array[Symbol]) -> Hash[Symbol, nil | Node | Array[Node] | String | Token | Array[Token] | Location]
|
9806
|
-
def deconstruct_keys(keys)
|
9807
|
-
{ name: name, name_loc: name_loc, value: value, location: location }
|
9808
|
-
end
|
9809
|
-
|
9810
|
-
def inspect(inspector = NodeInspector.new)
|
9811
|
-
inspector << inspector.header(self)
|
9812
|
-
inspector << "├── name: #{name.inspect}\n"
|
9813
|
-
inspector << "├── name_loc: #{inspector.location(name_loc)}\n"
|
9814
|
-
if (value = self.value).nil?
|
9815
|
-
inspector << "└── value: ∅\n"
|
9816
|
-
else
|
9817
|
-
inspector << "└── value:\n"
|
9818
|
-
inspector << value.inspect(inspector.child_inspector(" ")).delete_prefix(inspector.prefix)
|
9819
|
-
end
|
9820
|
-
inspector.to_str
|
9821
|
-
end
|
9822
|
-
|
9823
|
-
# Sometimes you want to check an instance of a node against a list of
|
9824
|
-
# classes to see what kind of behavior to perform. Usually this is done by
|
9825
|
-
# calling `[cls1, cls2].include?(node.class)` or putting the node into a
|
9826
|
-
# case statement and doing `case node; when cls1; when cls2; end`. Both of
|
9827
|
-
# these approaches are relatively slow because of the constant lookups,
|
9828
|
-
# method calls, and/or array allocations.
|
9829
|
-
#
|
9830
|
-
# Instead, you can call #type, which will return to you a symbol that you
|
9831
|
-
# can use for comparison. This is faster than the other approaches because
|
9832
|
-
# it uses a single integer comparison, but also because if you're on CRuby
|
9833
|
-
# you can take advantage of the fact that case statements with all symbol
|
9834
|
-
# keys will use a jump table.
|
9835
|
-
#
|
9836
|
-
# def type: () -> Symbol
|
9837
|
-
def type
|
9838
|
-
:keyword_parameter_node
|
9839
|
-
end
|
9840
|
-
|
9841
|
-
# Similar to #type, this method returns a symbol that you can use for
|
9842
|
-
# splitting on the type of the node without having to do a long === chain.
|
9843
|
-
# Note that like #type, it will still be slower than using == for a single
|
9844
|
-
# class, but should be faster in a case statement or an array comparison.
|
9845
|
-
#
|
9846
|
-
# def self.type: () -> Symbol
|
9847
|
-
def self.type
|
9848
|
-
:keyword_parameter_node
|
9849
|
-
end
|
9850
|
-
end
|
9851
|
-
|
9852
9845
|
# Represents a keyword rest parameter to a method, block, or lambda definition.
|
9853
9846
|
#
|
9854
9847
|
# def a(**b)
|
@@ -9915,9 +9908,14 @@ module Prism
|
|
9915
9908
|
operator_loc.slice
|
9916
9909
|
end
|
9917
9910
|
|
9911
|
+
# def inspect(inspector: NodeInspector) -> String
|
9918
9912
|
def inspect(inspector = NodeInspector.new)
|
9919
9913
|
inspector << inspector.header(self)
|
9920
|
-
|
9914
|
+
if (name = self.name).nil?
|
9915
|
+
inspector << "├── name: ∅\n"
|
9916
|
+
else
|
9917
|
+
inspector << "├── name: #{name.inspect}\n"
|
9918
|
+
end
|
9921
9919
|
inspector << "├── name_loc: #{inspector.location(name_loc)}\n"
|
9922
9920
|
inspector << "└── operator_loc: #{inspector.location(operator_loc)}\n"
|
9923
9921
|
inspector.to_str
|
@@ -10045,6 +10043,7 @@ module Prism
|
|
10045
10043
|
closing_loc.slice
|
10046
10044
|
end
|
10047
10045
|
|
10046
|
+
# def inspect(inspector: NodeInspector) -> String
|
10048
10047
|
def inspect(inspector = NodeInspector.new)
|
10049
10048
|
inspector << inspector.header(self)
|
10050
10049
|
inspector << "├── locals: #{locals.inspect}\n"
|
@@ -10170,6 +10169,7 @@ module Prism
|
|
10170
10169
|
operator_loc.slice
|
10171
10170
|
end
|
10172
10171
|
|
10172
|
+
# def inspect(inspector: NodeInspector) -> String
|
10173
10173
|
def inspect(inspector = NodeInspector.new)
|
10174
10174
|
inspector << inspector.header(self)
|
10175
10175
|
inspector << "├── name_loc: #{inspector.location(name_loc)}\n"
|
@@ -10285,6 +10285,7 @@ module Prism
|
|
10285
10285
|
{ name_loc: name_loc, operator_loc: operator_loc, value: value, name: name, operator: operator, depth: depth, location: location }
|
10286
10286
|
end
|
10287
10287
|
|
10288
|
+
# def inspect(inspector: NodeInspector) -> String
|
10288
10289
|
def inspect(inspector = NodeInspector.new)
|
10289
10290
|
inspector << inspector.header(self)
|
10290
10291
|
inspector << "├── name_loc: #{inspector.location(name_loc)}\n"
|
@@ -10401,6 +10402,7 @@ module Prism
|
|
10401
10402
|
operator_loc.slice
|
10402
10403
|
end
|
10403
10404
|
|
10405
|
+
# def inspect(inspector: NodeInspector) -> String
|
10404
10406
|
def inspect(inspector = NodeInspector.new)
|
10405
10407
|
inspector << inspector.header(self)
|
10406
10408
|
inspector << "├── name_loc: #{inspector.location(name_loc)}\n"
|
@@ -10498,6 +10500,7 @@ module Prism
|
|
10498
10500
|
{ name: name, depth: depth, location: location }
|
10499
10501
|
end
|
10500
10502
|
|
10503
|
+
# def inspect(inspector: NodeInspector) -> String
|
10501
10504
|
def inspect(inspector = NodeInspector.new)
|
10502
10505
|
inspector << inspector.header(self)
|
10503
10506
|
inspector << "├── name: #{name.inspect}\n"
|
@@ -10589,6 +10592,7 @@ module Prism
|
|
10589
10592
|
{ name: name, depth: depth, location: location }
|
10590
10593
|
end
|
10591
10594
|
|
10595
|
+
# def inspect(inspector: NodeInspector) -> String
|
10592
10596
|
def inspect(inspector = NodeInspector.new)
|
10593
10597
|
inspector << inspector.header(self)
|
10594
10598
|
inspector << "├── name: #{name.inspect}\n"
|
@@ -10700,6 +10704,7 @@ module Prism
|
|
10700
10704
|
operator_loc.slice
|
10701
10705
|
end
|
10702
10706
|
|
10707
|
+
# def inspect(inspector: NodeInspector) -> String
|
10703
10708
|
def inspect(inspector = NodeInspector.new)
|
10704
10709
|
inspector << inspector.header(self)
|
10705
10710
|
inspector << "├── name: #{name.inspect}\n"
|
@@ -10867,6 +10872,7 @@ module Prism
|
|
10867
10872
|
flags.anybits?(RegularExpressionFlags::UTF_8)
|
10868
10873
|
end
|
10869
10874
|
|
10875
|
+
# def inspect(inspector: NodeInspector) -> String
|
10870
10876
|
def inspect(inspector = NodeInspector.new)
|
10871
10877
|
inspector << inspector.header(self)
|
10872
10878
|
inspector << "├── opening_loc: #{inspector.location(opening_loc)}\n"
|
@@ -10972,6 +10978,7 @@ module Prism
|
|
10972
10978
|
operator_loc.slice
|
10973
10979
|
end
|
10974
10980
|
|
10981
|
+
# def inspect(inspector: NodeInspector) -> String
|
10975
10982
|
def inspect(inspector = NodeInspector.new)
|
10976
10983
|
inspector << inspector.header(self)
|
10977
10984
|
inspector << "├── value:\n"
|
@@ -11076,6 +11083,7 @@ module Prism
|
|
11076
11083
|
operator_loc.slice
|
11077
11084
|
end
|
11078
11085
|
|
11086
|
+
# def inspect(inspector: NodeInspector) -> String
|
11079
11087
|
def inspect(inspector = NodeInspector.new)
|
11080
11088
|
inspector << inspector.header(self)
|
11081
11089
|
inspector << "├── value:\n"
|
@@ -11171,6 +11179,7 @@ module Prism
|
|
11171
11179
|
{ call: call, locals: locals, location: location }
|
11172
11180
|
end
|
11173
11181
|
|
11182
|
+
# def inspect(inspector: NodeInspector) -> String
|
11174
11183
|
def inspect(inspector = NodeInspector.new)
|
11175
11184
|
inspector << inspector.header(self)
|
11176
11185
|
inspector << "├── call:\n"
|
@@ -11251,6 +11260,7 @@ module Prism
|
|
11251
11260
|
{ location: location }
|
11252
11261
|
end
|
11253
11262
|
|
11263
|
+
# def inspect(inspector: NodeInspector) -> String
|
11254
11264
|
def inspect(inspector = NodeInspector.new)
|
11255
11265
|
inspector << inspector.header(self)
|
11256
11266
|
inspector.to_str
|
@@ -11373,6 +11383,7 @@ module Prism
|
|
11373
11383
|
end_keyword_loc.slice
|
11374
11384
|
end
|
11375
11385
|
|
11386
|
+
# def inspect(inspector: NodeInspector) -> String
|
11376
11387
|
def inspect(inspector = NodeInspector.new)
|
11377
11388
|
inspector << inspector.header(self)
|
11378
11389
|
inspector << "├── locals: #{locals.inspect}\n"
|
@@ -11421,11 +11432,17 @@ module Prism
|
|
11421
11432
|
|
11422
11433
|
# Represents a multi-target expression.
|
11423
11434
|
#
|
11424
|
-
# a, b, c = 1, 2, 3
|
11425
|
-
#
|
11435
|
+
# a, (b, c) = 1, 2, 3
|
11436
|
+
# ^^^^^^
|
11426
11437
|
class MultiTargetNode < Node
|
11427
|
-
# attr_reader
|
11428
|
-
attr_reader :
|
11438
|
+
# attr_reader lefts: Array[Node]
|
11439
|
+
attr_reader :lefts
|
11440
|
+
|
11441
|
+
# attr_reader rest: Node?
|
11442
|
+
attr_reader :rest
|
11443
|
+
|
11444
|
+
# attr_reader rights: Array[Node]
|
11445
|
+
attr_reader :rights
|
11429
11446
|
|
11430
11447
|
# attr_reader lparen_loc: Location?
|
11431
11448
|
attr_reader :lparen_loc
|
@@ -11433,9 +11450,11 @@ module Prism
|
|
11433
11450
|
# attr_reader rparen_loc: Location?
|
11434
11451
|
attr_reader :rparen_loc
|
11435
11452
|
|
11436
|
-
# def initialize: (
|
11437
|
-
def initialize(
|
11438
|
-
@
|
11453
|
+
# def initialize: (lefts: Array[Node], rest: Node?, rights: Array[Node], lparen_loc: Location?, rparen_loc: Location?, location: Location) -> void
|
11454
|
+
def initialize(lefts, rest, rights, lparen_loc, rparen_loc, location)
|
11455
|
+
@lefts = lefts
|
11456
|
+
@rest = rest
|
11457
|
+
@rights = rights
|
11439
11458
|
@lparen_loc = lparen_loc
|
11440
11459
|
@rparen_loc = rparen_loc
|
11441
11460
|
@location = location
|
@@ -11448,23 +11467,29 @@ module Prism
|
|
11448
11467
|
|
11449
11468
|
# def child_nodes: () -> Array[nil | Node]
|
11450
11469
|
def child_nodes
|
11451
|
-
[*
|
11470
|
+
[*lefts, rest, *rights]
|
11452
11471
|
end
|
11453
11472
|
|
11454
11473
|
# def compact_child_nodes: () -> Array[Node]
|
11455
11474
|
def compact_child_nodes
|
11456
|
-
[
|
11475
|
+
compact = []
|
11476
|
+
compact.concat(lefts)
|
11477
|
+
compact << rest if rest
|
11478
|
+
compact.concat(rights)
|
11479
|
+
compact
|
11457
11480
|
end
|
11458
11481
|
|
11459
11482
|
# def comment_targets: () -> Array[Node | Location]
|
11460
11483
|
def comment_targets
|
11461
|
-
[*
|
11484
|
+
[*lefts, *rest, *rights, *lparen_loc, *rparen_loc]
|
11462
11485
|
end
|
11463
11486
|
|
11464
11487
|
# def copy: (**params) -> MultiTargetNode
|
11465
11488
|
def copy(**params)
|
11466
11489
|
MultiTargetNode.new(
|
11467
|
-
params.fetch(:
|
11490
|
+
params.fetch(:lefts) { lefts },
|
11491
|
+
params.fetch(:rest) { rest },
|
11492
|
+
params.fetch(:rights) { rights },
|
11468
11493
|
params.fetch(:lparen_loc) { lparen_loc },
|
11469
11494
|
params.fetch(:rparen_loc) { rparen_loc },
|
11470
11495
|
params.fetch(:location) { location },
|
@@ -11476,7 +11501,7 @@ module Prism
|
|
11476
11501
|
|
11477
11502
|
# def deconstruct_keys: (keys: Array[Symbol]) -> Hash[Symbol, nil | Node | Array[Node] | String | Token | Array[Token] | Location]
|
11478
11503
|
def deconstruct_keys(keys)
|
11479
|
-
{
|
11504
|
+
{ lefts: lefts, rest: rest, rights: rights, lparen_loc: lparen_loc, rparen_loc: rparen_loc, location: location }
|
11480
11505
|
end
|
11481
11506
|
|
11482
11507
|
# def lparen: () -> String?
|
@@ -11489,9 +11514,17 @@ module Prism
|
|
11489
11514
|
rparen_loc&.slice
|
11490
11515
|
end
|
11491
11516
|
|
11517
|
+
# def inspect(inspector: NodeInspector) -> String
|
11492
11518
|
def inspect(inspector = NodeInspector.new)
|
11493
11519
|
inspector << inspector.header(self)
|
11494
|
-
inspector << "├──
|
11520
|
+
inspector << "├── lefts: #{inspector.list("#{inspector.prefix}│ ", lefts)}"
|
11521
|
+
if (rest = self.rest).nil?
|
11522
|
+
inspector << "├── rest: ∅\n"
|
11523
|
+
else
|
11524
|
+
inspector << "├── rest:\n"
|
11525
|
+
inspector << rest.inspect(inspector.child_inspector("│ ")).delete_prefix(inspector.prefix)
|
11526
|
+
end
|
11527
|
+
inspector << "├── rights: #{inspector.list("#{inspector.prefix}│ ", rights)}"
|
11495
11528
|
inspector << "├── lparen_loc: #{inspector.location(lparen_loc)}\n"
|
11496
11529
|
inspector << "└── rparen_loc: #{inspector.location(rparen_loc)}\n"
|
11497
11530
|
inspector.to_str
|
@@ -11531,8 +11564,14 @@ module Prism
|
|
11531
11564
|
# a, b, c = 1, 2, 3
|
11532
11565
|
# ^^^^^^^^^^^^^^^^^
|
11533
11566
|
class MultiWriteNode < Node
|
11534
|
-
# attr_reader
|
11535
|
-
attr_reader :
|
11567
|
+
# attr_reader lefts: Array[Node]
|
11568
|
+
attr_reader :lefts
|
11569
|
+
|
11570
|
+
# attr_reader rest: Node?
|
11571
|
+
attr_reader :rest
|
11572
|
+
|
11573
|
+
# attr_reader rights: Array[Node]
|
11574
|
+
attr_reader :rights
|
11536
11575
|
|
11537
11576
|
# attr_reader lparen_loc: Location?
|
11538
11577
|
attr_reader :lparen_loc
|
@@ -11546,9 +11585,11 @@ module Prism
|
|
11546
11585
|
# attr_reader value: Node
|
11547
11586
|
attr_reader :value
|
11548
11587
|
|
11549
|
-
# def initialize: (
|
11550
|
-
def initialize(
|
11551
|
-
@
|
11588
|
+
# def initialize: (lefts: Array[Node], rest: Node?, rights: Array[Node], lparen_loc: Location?, rparen_loc: Location?, operator_loc: Location, value: Node, location: Location) -> void
|
11589
|
+
def initialize(lefts, rest, rights, lparen_loc, rparen_loc, operator_loc, value, location)
|
11590
|
+
@lefts = lefts
|
11591
|
+
@rest = rest
|
11592
|
+
@rights = rights
|
11552
11593
|
@lparen_loc = lparen_loc
|
11553
11594
|
@rparen_loc = rparen_loc
|
11554
11595
|
@operator_loc = operator_loc
|
@@ -11563,23 +11604,30 @@ module Prism
|
|
11563
11604
|
|
11564
11605
|
# def child_nodes: () -> Array[nil | Node]
|
11565
11606
|
def child_nodes
|
11566
|
-
[*
|
11607
|
+
[*lefts, rest, *rights, value]
|
11567
11608
|
end
|
11568
11609
|
|
11569
11610
|
# def compact_child_nodes: () -> Array[Node]
|
11570
11611
|
def compact_child_nodes
|
11571
|
-
[
|
11612
|
+
compact = []
|
11613
|
+
compact.concat(lefts)
|
11614
|
+
compact << rest if rest
|
11615
|
+
compact.concat(rights)
|
11616
|
+
compact << value
|
11617
|
+
compact
|
11572
11618
|
end
|
11573
11619
|
|
11574
11620
|
# def comment_targets: () -> Array[Node | Location]
|
11575
11621
|
def comment_targets
|
11576
|
-
[*
|
11622
|
+
[*lefts, *rest, *rights, *lparen_loc, *rparen_loc, operator_loc, value]
|
11577
11623
|
end
|
11578
11624
|
|
11579
11625
|
# def copy: (**params) -> MultiWriteNode
|
11580
11626
|
def copy(**params)
|
11581
11627
|
MultiWriteNode.new(
|
11582
|
-
params.fetch(:
|
11628
|
+
params.fetch(:lefts) { lefts },
|
11629
|
+
params.fetch(:rest) { rest },
|
11630
|
+
params.fetch(:rights) { rights },
|
11583
11631
|
params.fetch(:lparen_loc) { lparen_loc },
|
11584
11632
|
params.fetch(:rparen_loc) { rparen_loc },
|
11585
11633
|
params.fetch(:operator_loc) { operator_loc },
|
@@ -11593,7 +11641,7 @@ module Prism
|
|
11593
11641
|
|
11594
11642
|
# def deconstruct_keys: (keys: Array[Symbol]) -> Hash[Symbol, nil | Node | Array[Node] | String | Token | Array[Token] | Location]
|
11595
11643
|
def deconstruct_keys(keys)
|
11596
|
-
{
|
11644
|
+
{ lefts: lefts, rest: rest, rights: rights, lparen_loc: lparen_loc, rparen_loc: rparen_loc, operator_loc: operator_loc, value: value, location: location }
|
11597
11645
|
end
|
11598
11646
|
|
11599
11647
|
# def lparen: () -> String?
|
@@ -11611,9 +11659,17 @@ module Prism
|
|
11611
11659
|
operator_loc.slice
|
11612
11660
|
end
|
11613
11661
|
|
11662
|
+
# def inspect(inspector: NodeInspector) -> String
|
11614
11663
|
def inspect(inspector = NodeInspector.new)
|
11615
11664
|
inspector << inspector.header(self)
|
11616
|
-
inspector << "├──
|
11665
|
+
inspector << "├── lefts: #{inspector.list("#{inspector.prefix}│ ", lefts)}"
|
11666
|
+
if (rest = self.rest).nil?
|
11667
|
+
inspector << "├── rest: ∅\n"
|
11668
|
+
else
|
11669
|
+
inspector << "├── rest:\n"
|
11670
|
+
inspector << rest.inspect(inspector.child_inspector("│ ")).delete_prefix(inspector.prefix)
|
11671
|
+
end
|
11672
|
+
inspector << "├── rights: #{inspector.list("#{inspector.prefix}│ ", rights)}"
|
11617
11673
|
inspector << "├── lparen_loc: #{inspector.location(lparen_loc)}\n"
|
11618
11674
|
inspector << "├── rparen_loc: #{inspector.location(rparen_loc)}\n"
|
11619
11675
|
inspector << "├── operator_loc: #{inspector.location(operator_loc)}\n"
|
@@ -11713,6 +11769,7 @@ module Prism
|
|
11713
11769
|
keyword_loc.slice
|
11714
11770
|
end
|
11715
11771
|
|
11772
|
+
# def inspect(inspector: NodeInspector) -> String
|
11716
11773
|
def inspect(inspector = NodeInspector.new)
|
11717
11774
|
inspector << inspector.header(self)
|
11718
11775
|
if (arguments = self.arguments).nil?
|
@@ -11799,6 +11856,7 @@ module Prism
|
|
11799
11856
|
{ location: location }
|
11800
11857
|
end
|
11801
11858
|
|
11859
|
+
# def inspect(inspector: NodeInspector) -> String
|
11802
11860
|
def inspect(inspector = NodeInspector.new)
|
11803
11861
|
inspector << inspector.header(self)
|
11804
11862
|
inspector.to_str
|
@@ -11899,6 +11957,7 @@ module Prism
|
|
11899
11957
|
keyword_loc.slice
|
11900
11958
|
end
|
11901
11959
|
|
11960
|
+
# def inspect(inspector: NodeInspector) -> String
|
11902
11961
|
def inspect(inspector = NodeInspector.new)
|
11903
11962
|
inspector << inspector.header(self)
|
11904
11963
|
inspector << "├── operator_loc: #{inspector.location(operator_loc)}\n"
|
@@ -11985,6 +12044,7 @@ module Prism
|
|
11985
12044
|
{ number: number, location: location }
|
11986
12045
|
end
|
11987
12046
|
|
12047
|
+
# def inspect(inspector: NodeInspector) -> String
|
11988
12048
|
def inspect(inspector = NodeInspector.new)
|
11989
12049
|
inspector << inspector.header(self)
|
11990
12050
|
inspector << "└── number: #{number.inspect}\n"
|
@@ -12020,6 +12080,106 @@ module Prism
|
|
12020
12080
|
end
|
12021
12081
|
end
|
12022
12082
|
|
12083
|
+
# Represents an optional keyword parameter to a method, block, or lambda definition.
|
12084
|
+
#
|
12085
|
+
# def a(b: 1)
|
12086
|
+
# ^^^^
|
12087
|
+
# end
|
12088
|
+
class OptionalKeywordParameterNode < Node
|
12089
|
+
# attr_reader name: Symbol
|
12090
|
+
attr_reader :name
|
12091
|
+
|
12092
|
+
# attr_reader name_loc: Location
|
12093
|
+
attr_reader :name_loc
|
12094
|
+
|
12095
|
+
# attr_reader value: Node
|
12096
|
+
attr_reader :value
|
12097
|
+
|
12098
|
+
# def initialize: (name: Symbol, name_loc: Location, value: Node, location: Location) -> void
|
12099
|
+
def initialize(name, name_loc, value, location)
|
12100
|
+
@name = name
|
12101
|
+
@name_loc = name_loc
|
12102
|
+
@value = value
|
12103
|
+
@location = location
|
12104
|
+
end
|
12105
|
+
|
12106
|
+
# def accept: (visitor: Visitor) -> void
|
12107
|
+
def accept(visitor)
|
12108
|
+
visitor.visit_optional_keyword_parameter_node(self)
|
12109
|
+
end
|
12110
|
+
|
12111
|
+
# def child_nodes: () -> Array[nil | Node]
|
12112
|
+
def child_nodes
|
12113
|
+
[value]
|
12114
|
+
end
|
12115
|
+
|
12116
|
+
# def compact_child_nodes: () -> Array[Node]
|
12117
|
+
def compact_child_nodes
|
12118
|
+
[value]
|
12119
|
+
end
|
12120
|
+
|
12121
|
+
# def comment_targets: () -> Array[Node | Location]
|
12122
|
+
def comment_targets
|
12123
|
+
[name_loc, value]
|
12124
|
+
end
|
12125
|
+
|
12126
|
+
# def copy: (**params) -> OptionalKeywordParameterNode
|
12127
|
+
def copy(**params)
|
12128
|
+
OptionalKeywordParameterNode.new(
|
12129
|
+
params.fetch(:name) { name },
|
12130
|
+
params.fetch(:name_loc) { name_loc },
|
12131
|
+
params.fetch(:value) { value },
|
12132
|
+
params.fetch(:location) { location },
|
12133
|
+
)
|
12134
|
+
end
|
12135
|
+
|
12136
|
+
# def deconstruct: () -> Array[nil | Node]
|
12137
|
+
alias deconstruct child_nodes
|
12138
|
+
|
12139
|
+
# def deconstruct_keys: (keys: Array[Symbol]) -> Hash[Symbol, nil | Node | Array[Node] | String | Token | Array[Token] | Location]
|
12140
|
+
def deconstruct_keys(keys)
|
12141
|
+
{ name: name, name_loc: name_loc, value: value, location: location }
|
12142
|
+
end
|
12143
|
+
|
12144
|
+
# def inspect(inspector: NodeInspector) -> String
|
12145
|
+
def inspect(inspector = NodeInspector.new)
|
12146
|
+
inspector << inspector.header(self)
|
12147
|
+
inspector << "├── name: #{name.inspect}\n"
|
12148
|
+
inspector << "├── name_loc: #{inspector.location(name_loc)}\n"
|
12149
|
+
inspector << "└── value:\n"
|
12150
|
+
inspector << inspector.child_node(value, " ")
|
12151
|
+
inspector.to_str
|
12152
|
+
end
|
12153
|
+
|
12154
|
+
# Sometimes you want to check an instance of a node against a list of
|
12155
|
+
# classes to see what kind of behavior to perform. Usually this is done by
|
12156
|
+
# calling `[cls1, cls2].include?(node.class)` or putting the node into a
|
12157
|
+
# case statement and doing `case node; when cls1; when cls2; end`. Both of
|
12158
|
+
# these approaches are relatively slow because of the constant lookups,
|
12159
|
+
# method calls, and/or array allocations.
|
12160
|
+
#
|
12161
|
+
# Instead, you can call #type, which will return to you a symbol that you
|
12162
|
+
# can use for comparison. This is faster than the other approaches because
|
12163
|
+
# it uses a single integer comparison, but also because if you're on CRuby
|
12164
|
+
# you can take advantage of the fact that case statements with all symbol
|
12165
|
+
# keys will use a jump table.
|
12166
|
+
#
|
12167
|
+
# def type: () -> Symbol
|
12168
|
+
def type
|
12169
|
+
:optional_keyword_parameter_node
|
12170
|
+
end
|
12171
|
+
|
12172
|
+
# Similar to #type, this method returns a symbol that you can use for
|
12173
|
+
# splitting on the type of the node without having to do a long === chain.
|
12174
|
+
# Note that like #type, it will still be slower than using == for a single
|
12175
|
+
# class, but should be faster in a case statement or an array comparison.
|
12176
|
+
#
|
12177
|
+
# def self.type: () -> Symbol
|
12178
|
+
def self.type
|
12179
|
+
:optional_keyword_parameter_node
|
12180
|
+
end
|
12181
|
+
end
|
12182
|
+
|
12023
12183
|
# Represents an optional parameter to a method, block, or lambda definition.
|
12024
12184
|
#
|
12025
12185
|
# def a(b = 1)
|
@@ -12091,6 +12251,7 @@ module Prism
|
|
12091
12251
|
operator_loc.slice
|
12092
12252
|
end
|
12093
12253
|
|
12254
|
+
# def inspect(inspector: NodeInspector) -> String
|
12094
12255
|
def inspect(inspector = NodeInspector.new)
|
12095
12256
|
inspector << inspector.header(self)
|
12096
12257
|
inspector << "├── name: #{name.inspect}\n"
|
@@ -12195,6 +12356,7 @@ module Prism
|
|
12195
12356
|
operator_loc.slice
|
12196
12357
|
end
|
12197
12358
|
|
12359
|
+
# def inspect(inspector: NodeInspector) -> String
|
12198
12360
|
def inspect(inspector = NodeInspector.new)
|
12199
12361
|
inspector << inspector.header(self)
|
12200
12362
|
inspector << "├── left:\n"
|
@@ -12323,6 +12485,7 @@ module Prism
|
|
12323
12485
|
{ requireds: requireds, optionals: optionals, rest: rest, posts: posts, keywords: keywords, keyword_rest: keyword_rest, block: block, location: location }
|
12324
12486
|
end
|
12325
12487
|
|
12488
|
+
# def inspect(inspector: NodeInspector) -> String
|
12326
12489
|
def inspect(inspector = NodeInspector.new)
|
12327
12490
|
inspector << inspector.header(self)
|
12328
12491
|
inspector << "├── requireds: #{inspector.list("#{inspector.prefix}│ ", requireds)}"
|
@@ -12406,7 +12569,7 @@ module Prism
|
|
12406
12569
|
visitor.visit_parentheses_node(self)
|
12407
12570
|
end
|
12408
12571
|
|
12409
|
-
def set_newline_flag(newline_marked)
|
12572
|
+
def set_newline_flag(newline_marked) # :nodoc:
|
12410
12573
|
# Never mark ParenthesesNode with a newline flag, mark children instead
|
12411
12574
|
end
|
12412
12575
|
|
@@ -12455,6 +12618,7 @@ module Prism
|
|
12455
12618
|
closing_loc.slice
|
12456
12619
|
end
|
12457
12620
|
|
12621
|
+
# def inspect(inspector: NodeInspector) -> String
|
12458
12622
|
def inspect(inspector = NodeInspector.new)
|
12459
12623
|
inspector << inspector.header(self)
|
12460
12624
|
if (body = self.body).nil?
|
@@ -12578,6 +12742,7 @@ module Prism
|
|
12578
12742
|
rparen_loc.slice
|
12579
12743
|
end
|
12580
12744
|
|
12745
|
+
# def inspect(inspector: NodeInspector) -> String
|
12581
12746
|
def inspect(inspector = NodeInspector.new)
|
12582
12747
|
inspector << inspector.header(self)
|
12583
12748
|
inspector << "├── expression:\n"
|
@@ -12678,6 +12843,7 @@ module Prism
|
|
12678
12843
|
operator_loc.slice
|
12679
12844
|
end
|
12680
12845
|
|
12846
|
+
# def inspect(inspector: NodeInspector) -> String
|
12681
12847
|
def inspect(inspector = NodeInspector.new)
|
12682
12848
|
inspector << inspector.header(self)
|
12683
12849
|
inspector << "├── variable:\n"
|
@@ -12797,6 +12963,7 @@ module Prism
|
|
12797
12963
|
closing_loc.slice
|
12798
12964
|
end
|
12799
12965
|
|
12966
|
+
# def inspect(inspector: NodeInspector) -> String
|
12800
12967
|
def inspect(inspector = NodeInspector.new)
|
12801
12968
|
inspector << inspector.header(self)
|
12802
12969
|
if (statements = self.statements).nil?
|
@@ -12922,6 +13089,7 @@ module Prism
|
|
12922
13089
|
closing_loc.slice
|
12923
13090
|
end
|
12924
13091
|
|
13092
|
+
# def inspect(inspector: NodeInspector) -> String
|
12925
13093
|
def inspect(inspector = NodeInspector.new)
|
12926
13094
|
inspector << inspector.header(self)
|
12927
13095
|
if (statements = self.statements).nil?
|
@@ -13017,6 +13185,7 @@ module Prism
|
|
13017
13185
|
{ locals: locals, statements: statements, location: location }
|
13018
13186
|
end
|
13019
13187
|
|
13188
|
+
# def inspect(inspector: NodeInspector) -> String
|
13020
13189
|
def inspect(inspector = NodeInspector.new)
|
13021
13190
|
inspector << inspector.header(self)
|
13022
13191
|
inspector << "├── locals: #{locals.inspect}\n"
|
@@ -13135,6 +13304,7 @@ module Prism
|
|
13135
13304
|
flags.anybits?(RangeFlags::EXCLUDE_END)
|
13136
13305
|
end
|
13137
13306
|
|
13307
|
+
# def inspect(inspector: NodeInspector) -> String
|
13138
13308
|
def inspect(inspector = NodeInspector.new)
|
13139
13309
|
inspector << inspector.header(self)
|
13140
13310
|
if (left = self.left).nil?
|
@@ -13234,6 +13404,7 @@ module Prism
|
|
13234
13404
|
{ numeric: numeric, location: location }
|
13235
13405
|
end
|
13236
13406
|
|
13407
|
+
# def inspect(inspector: NodeInspector) -> String
|
13237
13408
|
def inspect(inspector = NodeInspector.new)
|
13238
13409
|
inspector << inspector.header(self)
|
13239
13410
|
inspector << "└── numeric:\n"
|
@@ -13315,6 +13486,7 @@ module Prism
|
|
13315
13486
|
{ location: location }
|
13316
13487
|
end
|
13317
13488
|
|
13489
|
+
# def inspect(inspector: NodeInspector) -> String
|
13318
13490
|
def inspect(inspector = NodeInspector.new)
|
13319
13491
|
inspector << inspector.header(self)
|
13320
13492
|
inspector.to_str
|
@@ -13474,6 +13646,7 @@ module Prism
|
|
13474
13646
|
flags.anybits?(RegularExpressionFlags::UTF_8)
|
13475
13647
|
end
|
13476
13648
|
|
13649
|
+
# def inspect(inspector: NodeInspector) -> String
|
13477
13650
|
def inspect(inspector = NodeInspector.new)
|
13478
13651
|
inspector << inspector.header(self)
|
13479
13652
|
inspector << "├── opening_loc: #{inspector.location(opening_loc)}\n"
|
@@ -13514,55 +13687,50 @@ module Prism
|
|
13514
13687
|
end
|
13515
13688
|
end
|
13516
13689
|
|
13517
|
-
# Represents a
|
13690
|
+
# Represents a required keyword parameter to a method, block, or lambda definition.
|
13518
13691
|
#
|
13519
|
-
# def
|
13520
|
-
#
|
13692
|
+
# def a(b: )
|
13693
|
+
# ^^
|
13521
13694
|
# end
|
13522
|
-
class
|
13523
|
-
# attr_reader
|
13524
|
-
attr_reader :
|
13525
|
-
|
13526
|
-
# attr_reader opening_loc: Location
|
13527
|
-
attr_reader :opening_loc
|
13695
|
+
class RequiredKeywordParameterNode < Node
|
13696
|
+
# attr_reader name: Symbol
|
13697
|
+
attr_reader :name
|
13528
13698
|
|
13529
|
-
# attr_reader
|
13530
|
-
attr_reader :
|
13699
|
+
# attr_reader name_loc: Location
|
13700
|
+
attr_reader :name_loc
|
13531
13701
|
|
13532
|
-
# def initialize: (
|
13533
|
-
def initialize(
|
13534
|
-
@
|
13535
|
-
@
|
13536
|
-
@closing_loc = closing_loc
|
13702
|
+
# def initialize: (name: Symbol, name_loc: Location, location: Location) -> void
|
13703
|
+
def initialize(name, name_loc, location)
|
13704
|
+
@name = name
|
13705
|
+
@name_loc = name_loc
|
13537
13706
|
@location = location
|
13538
13707
|
end
|
13539
13708
|
|
13540
13709
|
# def accept: (visitor: Visitor) -> void
|
13541
13710
|
def accept(visitor)
|
13542
|
-
visitor.
|
13711
|
+
visitor.visit_required_keyword_parameter_node(self)
|
13543
13712
|
end
|
13544
13713
|
|
13545
13714
|
# def child_nodes: () -> Array[nil | Node]
|
13546
13715
|
def child_nodes
|
13547
|
-
[
|
13716
|
+
[]
|
13548
13717
|
end
|
13549
13718
|
|
13550
13719
|
# def compact_child_nodes: () -> Array[Node]
|
13551
13720
|
def compact_child_nodes
|
13552
|
-
[
|
13721
|
+
[]
|
13553
13722
|
end
|
13554
13723
|
|
13555
13724
|
# def comment_targets: () -> Array[Node | Location]
|
13556
13725
|
def comment_targets
|
13557
|
-
[
|
13726
|
+
[name_loc]
|
13558
13727
|
end
|
13559
13728
|
|
13560
|
-
# def copy: (**params) ->
|
13729
|
+
# def copy: (**params) -> RequiredKeywordParameterNode
|
13561
13730
|
def copy(**params)
|
13562
|
-
|
13563
|
-
params.fetch(:
|
13564
|
-
params.fetch(:
|
13565
|
-
params.fetch(:closing_loc) { closing_loc },
|
13731
|
+
RequiredKeywordParameterNode.new(
|
13732
|
+
params.fetch(:name) { name },
|
13733
|
+
params.fetch(:name_loc) { name_loc },
|
13566
13734
|
params.fetch(:location) { location },
|
13567
13735
|
)
|
13568
13736
|
end
|
@@ -13572,24 +13740,14 @@ module Prism
|
|
13572
13740
|
|
13573
13741
|
# def deconstruct_keys: (keys: Array[Symbol]) -> Hash[Symbol, nil | Node | Array[Node] | String | Token | Array[Token] | Location]
|
13574
13742
|
def deconstruct_keys(keys)
|
13575
|
-
{
|
13576
|
-
end
|
13577
|
-
|
13578
|
-
# def opening: () -> String
|
13579
|
-
def opening
|
13580
|
-
opening_loc.slice
|
13581
|
-
end
|
13582
|
-
|
13583
|
-
# def closing: () -> String
|
13584
|
-
def closing
|
13585
|
-
closing_loc.slice
|
13743
|
+
{ name: name, name_loc: name_loc, location: location }
|
13586
13744
|
end
|
13587
13745
|
|
13746
|
+
# def inspect(inspector: NodeInspector) -> String
|
13588
13747
|
def inspect(inspector = NodeInspector.new)
|
13589
13748
|
inspector << inspector.header(self)
|
13590
|
-
inspector << "├──
|
13591
|
-
inspector << "
|
13592
|
-
inspector << "└── closing_loc: #{inspector.location(closing_loc)}\n"
|
13749
|
+
inspector << "├── name: #{name.inspect}\n"
|
13750
|
+
inspector << "└── name_loc: #{inspector.location(name_loc)}\n"
|
13593
13751
|
inspector.to_str
|
13594
13752
|
end
|
13595
13753
|
|
@@ -13608,7 +13766,7 @@ module Prism
|
|
13608
13766
|
#
|
13609
13767
|
# def type: () -> Symbol
|
13610
13768
|
def type
|
13611
|
-
:
|
13769
|
+
:required_keyword_parameter_node
|
13612
13770
|
end
|
13613
13771
|
|
13614
13772
|
# Similar to #type, this method returns a symbol that you can use for
|
@@ -13618,7 +13776,7 @@ module Prism
|
|
13618
13776
|
#
|
13619
13777
|
# def self.type: () -> Symbol
|
13620
13778
|
def self.type
|
13621
|
-
:
|
13779
|
+
:required_keyword_parameter_node
|
13622
13780
|
end
|
13623
13781
|
end
|
13624
13782
|
|
@@ -13673,6 +13831,7 @@ module Prism
|
|
13673
13831
|
{ name: name, location: location }
|
13674
13832
|
end
|
13675
13833
|
|
13834
|
+
# def inspect(inspector: NodeInspector) -> String
|
13676
13835
|
def inspect(inspector = NodeInspector.new)
|
13677
13836
|
inspector << inspector.header(self)
|
13678
13837
|
inspector << "└── name: #{name.inspect}\n"
|
@@ -13710,8 +13869,8 @@ module Prism
|
|
13710
13869
|
|
13711
13870
|
# Represents an expression modified with a rescue.
|
13712
13871
|
#
|
13713
|
-
#
|
13714
|
-
#
|
13872
|
+
# foo rescue nil
|
13873
|
+
# ^^^^^^^^^^^^^^
|
13715
13874
|
class RescueModifierNode < Node
|
13716
13875
|
# attr_reader expression: Node
|
13717
13876
|
attr_reader :expression
|
@@ -13735,7 +13894,7 @@ module Prism
|
|
13735
13894
|
visitor.visit_rescue_modifier_node(self)
|
13736
13895
|
end
|
13737
13896
|
|
13738
|
-
def set_newline_flag(newline_marked)
|
13897
|
+
def set_newline_flag(newline_marked) # :nodoc:
|
13739
13898
|
expression.set_newline_flag(newline_marked)
|
13740
13899
|
end
|
13741
13900
|
|
@@ -13777,6 +13936,7 @@ module Prism
|
|
13777
13936
|
keyword_loc.slice
|
13778
13937
|
end
|
13779
13938
|
|
13939
|
+
# def inspect(inspector: NodeInspector) -> String
|
13780
13940
|
def inspect(inspector = NodeInspector.new)
|
13781
13941
|
inspector << inspector.header(self)
|
13782
13942
|
inspector << "├── expression:\n"
|
@@ -13820,8 +13980,8 @@ module Prism
|
|
13820
13980
|
#
|
13821
13981
|
# begin
|
13822
13982
|
# rescue Foo, *splat, Bar => ex
|
13823
|
-
# ^^^^^^
|
13824
13983
|
# foo
|
13984
|
+
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
13825
13985
|
# end
|
13826
13986
|
#
|
13827
13987
|
# `Foo, *splat, Bar` are in the `exceptions` field.
|
@@ -13912,6 +14072,7 @@ module Prism
|
|
13912
14072
|
operator_loc&.slice
|
13913
14073
|
end
|
13914
14074
|
|
14075
|
+
# def inspect(inspector: NodeInspector) -> String
|
13915
14076
|
def inspect(inspector = NodeInspector.new)
|
13916
14077
|
inspector << inspector.header(self)
|
13917
14078
|
inspector << "├── keyword_loc: #{inspector.location(keyword_loc)}\n"
|
@@ -14033,9 +14194,14 @@ module Prism
|
|
14033
14194
|
operator_loc.slice
|
14034
14195
|
end
|
14035
14196
|
|
14197
|
+
# def inspect(inspector: NodeInspector) -> String
|
14036
14198
|
def inspect(inspector = NodeInspector.new)
|
14037
14199
|
inspector << inspector.header(self)
|
14038
|
-
|
14200
|
+
if (name = self.name).nil?
|
14201
|
+
inspector << "├── name: ∅\n"
|
14202
|
+
else
|
14203
|
+
inspector << "├── name: #{name.inspect}\n"
|
14204
|
+
end
|
14039
14205
|
inspector << "├── name_loc: #{inspector.location(name_loc)}\n"
|
14040
14206
|
inspector << "└── operator_loc: #{inspector.location(operator_loc)}\n"
|
14041
14207
|
inspector.to_str
|
@@ -14115,6 +14281,7 @@ module Prism
|
|
14115
14281
|
{ location: location }
|
14116
14282
|
end
|
14117
14283
|
|
14284
|
+
# def inspect(inspector: NodeInspector) -> String
|
14118
14285
|
def inspect(inspector = NodeInspector.new)
|
14119
14286
|
inspector << inspector.header(self)
|
14120
14287
|
inspector.to_str
|
@@ -14211,6 +14378,7 @@ module Prism
|
|
14211
14378
|
keyword_loc.slice
|
14212
14379
|
end
|
14213
14380
|
|
14381
|
+
# def inspect(inspector: NodeInspector) -> String
|
14214
14382
|
def inspect(inspector = NodeInspector.new)
|
14215
14383
|
inspector << inspector.header(self)
|
14216
14384
|
inspector << "├── keyword_loc: #{inspector.location(keyword_loc)}\n"
|
@@ -14297,6 +14465,7 @@ module Prism
|
|
14297
14465
|
{ location: location }
|
14298
14466
|
end
|
14299
14467
|
|
14468
|
+
# def inspect(inspector: NodeInspector) -> String
|
14300
14469
|
def inspect(inspector = NodeInspector.new)
|
14301
14470
|
inspector << inspector.header(self)
|
14302
14471
|
inspector.to_str
|
@@ -14424,6 +14593,7 @@ module Prism
|
|
14424
14593
|
end_keyword_loc.slice
|
14425
14594
|
end
|
14426
14595
|
|
14596
|
+
# def inspect(inspector: NodeInspector) -> String
|
14427
14597
|
def inspect(inspector = NodeInspector.new)
|
14428
14598
|
inspector << inspector.header(self)
|
14429
14599
|
inspector << "├── locals: #{locals.inspect}\n"
|
@@ -14515,6 +14685,7 @@ module Prism
|
|
14515
14685
|
{ location: location }
|
14516
14686
|
end
|
14517
14687
|
|
14688
|
+
# def inspect(inspector: NodeInspector) -> String
|
14518
14689
|
def inspect(inspector = NodeInspector.new)
|
14519
14690
|
inspector << inspector.header(self)
|
14520
14691
|
inspector.to_str
|
@@ -14599,6 +14770,7 @@ module Prism
|
|
14599
14770
|
{ filepath: filepath, location: location }
|
14600
14771
|
end
|
14601
14772
|
|
14773
|
+
# def inspect(inspector: NodeInspector) -> String
|
14602
14774
|
def inspect(inspector = NodeInspector.new)
|
14603
14775
|
inspector << inspector.header(self)
|
14604
14776
|
inspector << "└── filepath: #{filepath.inspect}\n"
|
@@ -14679,6 +14851,7 @@ module Prism
|
|
14679
14851
|
{ location: location }
|
14680
14852
|
end
|
14681
14853
|
|
14854
|
+
# def inspect(inspector: NodeInspector) -> String
|
14682
14855
|
def inspect(inspector = NodeInspector.new)
|
14683
14856
|
inspector << inspector.header(self)
|
14684
14857
|
inspector.to_str
|
@@ -14775,6 +14948,7 @@ module Prism
|
|
14775
14948
|
operator_loc.slice
|
14776
14949
|
end
|
14777
14950
|
|
14951
|
+
# def inspect(inspector: NodeInspector) -> String
|
14778
14952
|
def inspect(inspector = NodeInspector.new)
|
14779
14953
|
inspector << inspector.header(self)
|
14780
14954
|
inspector << "├── operator_loc: #{inspector.location(operator_loc)}\n"
|
@@ -14866,6 +15040,7 @@ module Prism
|
|
14866
15040
|
{ body: body, location: location }
|
14867
15041
|
end
|
14868
15042
|
|
15043
|
+
# def inspect(inspector: NodeInspector) -> String
|
14869
15044
|
def inspect(inspector = NodeInspector.new)
|
14870
15045
|
inspector << inspector.header(self)
|
14871
15046
|
inspector << "└── body: #{inspector.list("#{inspector.prefix} ", body)}"
|
@@ -14956,6 +15131,7 @@ module Prism
|
|
14956
15131
|
{ left: left, right: right, location: location }
|
14957
15132
|
end
|
14958
15133
|
|
15134
|
+
# def inspect(inspector: NodeInspector) -> String
|
14959
15135
|
def inspect(inspector = NodeInspector.new)
|
14960
15136
|
inspector << inspector.header(self)
|
14961
15137
|
inspector << "├── left:\n"
|
@@ -15091,6 +15267,7 @@ module Prism
|
|
15091
15267
|
closing_loc&.slice
|
15092
15268
|
end
|
15093
15269
|
|
15270
|
+
# def inspect(inspector: NodeInspector) -> String
|
15094
15271
|
def inspect(inspector = NodeInspector.new)
|
15095
15272
|
inspector << inspector.header(self)
|
15096
15273
|
flags = [("frozen" if frozen?)].compact
|
@@ -15222,6 +15399,7 @@ module Prism
|
|
15222
15399
|
rparen_loc&.slice
|
15223
15400
|
end
|
15224
15401
|
|
15402
|
+
# def inspect(inspector: NodeInspector) -> String
|
15225
15403
|
def inspect(inspector = NodeInspector.new)
|
15226
15404
|
inspector << inspector.header(self)
|
15227
15405
|
inspector << "├── keyword_loc: #{inspector.location(keyword_loc)}\n"
|
@@ -15354,6 +15532,7 @@ module Prism
|
|
15354
15532
|
closing_loc&.slice
|
15355
15533
|
end
|
15356
15534
|
|
15535
|
+
# def inspect(inspector: NodeInspector) -> String
|
15357
15536
|
def inspect(inspector = NodeInspector.new)
|
15358
15537
|
inspector << inspector.header(self)
|
15359
15538
|
inspector << "├── opening_loc: #{inspector.location(opening_loc)}\n"
|
@@ -15437,6 +15616,7 @@ module Prism
|
|
15437
15616
|
{ location: location }
|
15438
15617
|
end
|
15439
15618
|
|
15619
|
+
# def inspect(inspector: NodeInspector) -> String
|
15440
15620
|
def inspect(inspector = NodeInspector.new)
|
15441
15621
|
inspector << inspector.header(self)
|
15442
15622
|
inspector.to_str
|
@@ -15531,6 +15711,7 @@ module Prism
|
|
15531
15711
|
keyword_loc.slice
|
15532
15712
|
end
|
15533
15713
|
|
15714
|
+
# def inspect(inspector: NodeInspector) -> String
|
15534
15715
|
def inspect(inspector = NodeInspector.new)
|
15535
15716
|
inspector << inspector.header(self)
|
15536
15717
|
inspector << "├── names: #{inspector.list("#{inspector.prefix}│ ", names)}"
|
@@ -15605,7 +15786,7 @@ module Prism
|
|
15605
15786
|
visitor.visit_unless_node(self)
|
15606
15787
|
end
|
15607
15788
|
|
15608
|
-
def set_newline_flag(newline_marked)
|
15789
|
+
def set_newline_flag(newline_marked) # :nodoc:
|
15609
15790
|
predicate.set_newline_flag(newline_marked)
|
15610
15791
|
end
|
15611
15792
|
|
@@ -15658,6 +15839,7 @@ module Prism
|
|
15658
15839
|
end_keyword_loc&.slice
|
15659
15840
|
end
|
15660
15841
|
|
15842
|
+
# def inspect(inspector: NodeInspector) -> String
|
15661
15843
|
def inspect(inspector = NodeInspector.new)
|
15662
15844
|
inspector << inspector.header(self)
|
15663
15845
|
inspector << "├── keyword_loc: #{inspector.location(keyword_loc)}\n"
|
@@ -15746,7 +15928,7 @@ module Prism
|
|
15746
15928
|
visitor.visit_until_node(self)
|
15747
15929
|
end
|
15748
15930
|
|
15749
|
-
def set_newline_flag(newline_marked)
|
15931
|
+
def set_newline_flag(newline_marked) # :nodoc:
|
15750
15932
|
predicate.set_newline_flag(newline_marked)
|
15751
15933
|
end
|
15752
15934
|
|
@@ -15803,6 +15985,7 @@ module Prism
|
|
15803
15985
|
flags.anybits?(LoopFlags::BEGIN_MODIFIER)
|
15804
15986
|
end
|
15805
15987
|
|
15988
|
+
# def inspect(inspector: NodeInspector) -> String
|
15806
15989
|
def inspect(inspector = NodeInspector.new)
|
15807
15990
|
inspector << inspector.header(self)
|
15808
15991
|
inspector << "├── keyword_loc: #{inspector.location(keyword_loc)}\n"
|
@@ -15919,6 +16102,7 @@ module Prism
|
|
15919
16102
|
keyword_loc.slice
|
15920
16103
|
end
|
15921
16104
|
|
16105
|
+
# def inspect(inspector: NodeInspector) -> String
|
15922
16106
|
def inspect(inspector = NodeInspector.new)
|
15923
16107
|
inspector << inspector.header(self)
|
15924
16108
|
inspector << "├── keyword_loc: #{inspector.location(keyword_loc)}\n"
|
@@ -15999,7 +16183,7 @@ module Prism
|
|
15999
16183
|
visitor.visit_while_node(self)
|
16000
16184
|
end
|
16001
16185
|
|
16002
|
-
def set_newline_flag(newline_marked)
|
16186
|
+
def set_newline_flag(newline_marked) # :nodoc:
|
16003
16187
|
predicate.set_newline_flag(newline_marked)
|
16004
16188
|
end
|
16005
16189
|
|
@@ -16056,6 +16240,7 @@ module Prism
|
|
16056
16240
|
flags.anybits?(LoopFlags::BEGIN_MODIFIER)
|
16057
16241
|
end
|
16058
16242
|
|
16243
|
+
# def inspect(inspector: NodeInspector) -> String
|
16059
16244
|
def inspect(inspector = NodeInspector.new)
|
16060
16245
|
inspector << inspector.header(self)
|
16061
16246
|
inspector << "├── keyword_loc: #{inspector.location(keyword_loc)}\n"
|
@@ -16182,6 +16367,7 @@ module Prism
|
|
16182
16367
|
closing_loc.slice
|
16183
16368
|
end
|
16184
16369
|
|
16370
|
+
# def inspect(inspector: NodeInspector) -> String
|
16185
16371
|
def inspect(inspector = NodeInspector.new)
|
16186
16372
|
inspector << inspector.header(self)
|
16187
16373
|
inspector << "├── opening_loc: #{inspector.location(opening_loc)}\n"
|
@@ -16302,6 +16488,7 @@ module Prism
|
|
16302
16488
|
rparen_loc&.slice
|
16303
16489
|
end
|
16304
16490
|
|
16491
|
+
# def inspect(inspector: NodeInspector) -> String
|
16305
16492
|
def inspect(inspector = NodeInspector.new)
|
16306
16493
|
inspector << inspector.header(self)
|
16307
16494
|
inspector << "├── keyword_loc: #{inspector.location(keyword_loc)}\n"
|
@@ -16345,6 +16532,13 @@ module Prism
|
|
16345
16532
|
end
|
16346
16533
|
end
|
16347
16534
|
|
16535
|
+
# Flags for arguments nodes.
|
16536
|
+
module ArgumentsNodeFlags
|
16537
|
+
# if arguments contain keyword splat
|
16538
|
+
KEYWORD_SPLAT = 1 << 0
|
16539
|
+
end
|
16540
|
+
|
16541
|
+
# Flags for call nodes.
|
16348
16542
|
module CallNodeFlags
|
16349
16543
|
# &. operator
|
16350
16544
|
SAFE_NAVIGATION = 1 << 0
|
@@ -16353,6 +16547,7 @@ module Prism
|
|
16353
16547
|
VARIABLE_CALL = 1 << 1
|
16354
16548
|
end
|
16355
16549
|
|
16550
|
+
# Flags for integer nodes that correspond to the base of the integer.
|
16356
16551
|
module IntegerBaseFlags
|
16357
16552
|
# 0b prefix
|
16358
16553
|
BINARY = 1 << 0
|
@@ -16367,16 +16562,19 @@ module Prism
|
|
16367
16562
|
HEXADECIMAL = 1 << 3
|
16368
16563
|
end
|
16369
16564
|
|
16565
|
+
# Flags for while and until loop nodes.
|
16370
16566
|
module LoopFlags
|
16371
16567
|
# a loop after a begin statement, so the body is executed first before the condition
|
16372
16568
|
BEGIN_MODIFIER = 1 << 0
|
16373
16569
|
end
|
16374
16570
|
|
16571
|
+
# Flags for range and flip-flop nodes.
|
16375
16572
|
module RangeFlags
|
16376
16573
|
# ... operator
|
16377
16574
|
EXCLUDE_END = 1 << 0
|
16378
16575
|
end
|
16379
16576
|
|
16577
|
+
# Flags for regular expression and match last line nodes.
|
16380
16578
|
module RegularExpressionFlags
|
16381
16579
|
# i - ignores the case of characters when matching
|
16382
16580
|
IGNORE_CASE = 1 << 0
|
@@ -16403,6 +16601,7 @@ module Prism
|
|
16403
16601
|
UTF_8 = 1 << 7
|
16404
16602
|
end
|
16405
16603
|
|
16604
|
+
# Flags for string nodes.
|
16406
16605
|
module StringFlags
|
16407
16606
|
# frozen by virtue of a `frozen_string_literal` comment
|
16408
16607
|
FROZEN = 1 << 0
|