prism 1.4.0 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +23 -1
- data/Makefile +2 -1
- data/README.md +1 -0
- data/config.yml +264 -37
- data/docs/parser_translation.md +8 -23
- data/docs/ripper_translation.md +1 -1
- data/ext/prism/api_node.c +2 -0
- data/ext/prism/extension.c +14 -1
- data/ext/prism/extension.h +1 -1
- data/include/prism/ast.h +275 -49
- data/include/prism/diagnostic.h +4 -0
- data/include/prism/options.h +43 -3
- data/include/prism/regexp.h +2 -2
- data/include/prism/util/pm_buffer.h +8 -0
- data/include/prism/util/pm_integer.h +4 -0
- data/include/prism/util/pm_list.h +6 -0
- data/include/prism/util/pm_string.h +12 -2
- data/include/prism/version.h +2 -2
- data/include/prism.h +39 -14
- data/lib/prism/compiler.rb +456 -151
- data/lib/prism/desugar_compiler.rb +1 -0
- data/lib/prism/dispatcher.rb +16 -0
- data/lib/prism/dot_visitor.rb +5 -1
- data/lib/prism/dsl.rb +3 -0
- data/lib/prism/ffi.rb +17 -7
- data/lib/prism/inspect_visitor.rb +3 -0
- data/lib/prism/lex_compat.rb +1 -0
- data/lib/prism/mutation_compiler.rb +3 -0
- data/lib/prism/node.rb +506 -335
- data/lib/prism/node_ext.rb +4 -1
- data/lib/prism/pack.rb +2 -0
- data/lib/prism/parse_result/comments.rb +1 -0
- data/lib/prism/parse_result/errors.rb +1 -0
- data/lib/prism/parse_result/newlines.rb +1 -0
- data/lib/prism/parse_result.rb +1 -0
- data/lib/prism/pattern.rb +1 -0
- data/lib/prism/polyfill/scan_byte.rb +14 -0
- data/lib/prism/polyfill/warn.rb +42 -0
- data/lib/prism/reflection.rb +3 -0
- data/lib/prism/relocation.rb +1 -0
- data/lib/prism/serialize.rb +24 -19
- data/lib/prism/string_query.rb +1 -0
- data/lib/prism/translation/parser/builder.rb +1 -0
- data/lib/prism/translation/parser/compiler.rb +47 -25
- data/lib/prism/translation/parser/lexer.rb +29 -21
- data/lib/prism/translation/parser.rb +13 -1
- data/lib/prism/translation/parser33.rb +1 -0
- data/lib/prism/translation/parser34.rb +1 -0
- data/lib/prism/translation/parser35.rb +1 -0
- data/lib/prism/translation/parser_current.rb +24 -0
- data/lib/prism/translation/ripper/sexp.rb +1 -0
- data/lib/prism/translation/ripper.rb +17 -1
- data/lib/prism/translation/ruby_parser.rb +286 -3
- data/lib/prism/translation.rb +2 -0
- data/lib/prism/visitor.rb +457 -152
- data/lib/prism.rb +2 -0
- data/prism.gemspec +5 -1
- data/rbi/prism/dsl.rbi +3 -3
- data/rbi/prism/node.rbi +21 -9
- data/sig/prism/dispatcher.rbs +3 -0
- data/sig/prism/dsl.rbs +3 -3
- data/sig/prism/node.rbs +444 -30
- data/sig/prism/node_ext.rbs +84 -17
- data/sig/prism/parse_result/comments.rbs +38 -0
- data/sig/prism/parse_result.rbs +4 -0
- data/sig/prism/reflection.rbs +1 -1
- data/src/diagnostic.c +7 -1
- data/src/node.c +2 -0
- data/src/options.c +2 -2
- data/src/prettyprint.c +2 -0
- data/src/prism.c +252 -130
- data/src/serialize.c +2 -0
- data/src/token_type.c +36 -34
- metadata +6 -2
data/lib/prism.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
# :markup: markdown
|
2
3
|
|
3
4
|
# The Prism Ruby parser.
|
4
5
|
#
|
@@ -68,6 +69,7 @@ module Prism
|
|
68
69
|
end
|
69
70
|
|
70
71
|
require_relative "prism/polyfill/byteindex"
|
72
|
+
require_relative "prism/polyfill/warn"
|
71
73
|
require_relative "prism/node"
|
72
74
|
require_relative "prism/node_ext"
|
73
75
|
require_relative "prism/parse_result"
|
data/prism.gemspec
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |spec|
|
4
4
|
spec.name = "prism"
|
5
|
-
spec.version = "1.
|
5
|
+
spec.version = "1.5.0"
|
6
6
|
spec.authors = ["Shopify"]
|
7
7
|
spec.email = ["ruby@shopify.com"]
|
8
8
|
|
@@ -88,13 +88,16 @@ Gem::Specification.new do |spec|
|
|
88
88
|
"lib/prism/pattern.rb",
|
89
89
|
"lib/prism/polyfill/append_as_bytes.rb",
|
90
90
|
"lib/prism/polyfill/byteindex.rb",
|
91
|
+
"lib/prism/polyfill/scan_byte.rb",
|
91
92
|
"lib/prism/polyfill/unpack1.rb",
|
93
|
+
"lib/prism/polyfill/warn.rb",
|
92
94
|
"lib/prism/reflection.rb",
|
93
95
|
"lib/prism/relocation.rb",
|
94
96
|
"lib/prism/serialize.rb",
|
95
97
|
"lib/prism/string_query.rb",
|
96
98
|
"lib/prism/translation.rb",
|
97
99
|
"lib/prism/translation/parser.rb",
|
100
|
+
"lib/prism/translation/parser_current.rb",
|
98
101
|
"lib/prism/translation/parser33.rb",
|
99
102
|
"lib/prism/translation/parser34.rb",
|
100
103
|
"lib/prism/translation/parser35.rb",
|
@@ -134,6 +137,7 @@ Gem::Specification.new do |spec|
|
|
134
137
|
"sig/prism/node.rbs",
|
135
138
|
"sig/prism/pack.rbs",
|
136
139
|
"sig/prism/parse_result.rbs",
|
140
|
+
"sig/prism/parse_result/comments.rbs",
|
137
141
|
"sig/prism/pattern.rbs",
|
138
142
|
"sig/prism/reflection.rbs",
|
139
143
|
"sig/prism/relocation.rbs",
|
data/rbi/prism/dsl.rbi
CHANGED
@@ -31,7 +31,7 @@ module Prism::DSL
|
|
31
31
|
sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer, elements: T::Array[Prism::Node], opening_loc: T.nilable(Prism::Location), closing_loc: T.nilable(Prism::Location)).returns(Prism::ArrayNode) }
|
32
32
|
def array_node(source: default_source, node_id: 0, location: default_location, flags: 0, elements: [], opening_loc: nil, closing_loc: nil); end
|
33
33
|
|
34
|
-
sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer, constant: T.nilable(T.any(Prism::
|
34
|
+
sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer, constant: T.nilable(T.any(Prism::ConstantPathNode, Prism::ConstantReadNode)), requireds: T::Array[Prism::Node], rest: T.nilable(Prism::Node), posts: T::Array[Prism::Node], opening_loc: T.nilable(Prism::Location), closing_loc: T.nilable(Prism::Location)).returns(Prism::ArrayPatternNode) }
|
35
35
|
def array_pattern_node(source: default_source, node_id: 0, location: default_location, flags: 0, constant: nil, requireds: [], rest: nil, posts: [], opening_loc: nil, closing_loc: nil); end
|
36
36
|
|
37
37
|
sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer, key: Prism::Node, value: Prism::Node, operator_loc: T.nilable(Prism::Location)).returns(Prism::AssocNode) }
|
@@ -166,7 +166,7 @@ module Prism::DSL
|
|
166
166
|
sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer).returns(Prism::FalseNode) }
|
167
167
|
def false_node(source: default_source, node_id: 0, location: default_location, flags: 0); end
|
168
168
|
|
169
|
-
sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer, constant: T.nilable(T.any(Prism::
|
169
|
+
sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer, constant: T.nilable(T.any(Prism::ConstantPathNode, Prism::ConstantReadNode)), left: Prism::SplatNode, requireds: T::Array[Prism::Node], right: T.any(Prism::SplatNode, Prism::MissingNode), opening_loc: T.nilable(Prism::Location), closing_loc: T.nilable(Prism::Location)).returns(Prism::FindPatternNode) }
|
170
170
|
def find_pattern_node(source: default_source, node_id: 0, location: default_location, flags: 0, constant: nil, left: splat_node(source: source), requireds: [], right: splat_node(source: source), opening_loc: nil, closing_loc: nil); end
|
171
171
|
|
172
172
|
sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer, left: T.nilable(Prism::Node), right: T.nilable(Prism::Node), operator_loc: Prism::Location).returns(Prism::FlipFlopNode) }
|
@@ -208,7 +208,7 @@ module Prism::DSL
|
|
208
208
|
sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer, opening_loc: Prism::Location, elements: T::Array[T.any(Prism::AssocNode, Prism::AssocSplatNode)], closing_loc: Prism::Location).returns(Prism::HashNode) }
|
209
209
|
def hash_node(source: default_source, node_id: 0, location: default_location, flags: 0, opening_loc: location, elements: [], closing_loc: location); end
|
210
210
|
|
211
|
-
sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer, constant: T.nilable(T.any(Prism::
|
211
|
+
sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer, constant: T.nilable(T.any(Prism::ConstantPathNode, Prism::ConstantReadNode)), elements: T::Array[Prism::AssocNode], rest: T.nilable(T.any(Prism::AssocSplatNode, Prism::NoKeywordsParameterNode)), opening_loc: T.nilable(Prism::Location), closing_loc: T.nilable(Prism::Location)).returns(Prism::HashPatternNode) }
|
212
212
|
def hash_pattern_node(source: default_source, node_id: 0, location: default_location, flags: 0, constant: nil, elements: [], rest: nil, opening_loc: nil, closing_loc: nil); end
|
213
213
|
|
214
214
|
sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer, if_keyword_loc: T.nilable(Prism::Location), predicate: Prism::Node, then_keyword_loc: T.nilable(Prism::Location), statements: T.nilable(Prism::StatementsNode), subsequent: T.nilable(T.any(Prism::ElseNode, Prism::IfNode)), end_keyword_loc: T.nilable(Prism::Location)).returns(Prism::IfNode) }
|
data/rbi/prism/node.rbi
CHANGED
@@ -417,7 +417,7 @@ end
|
|
417
417
|
# foo in Bar[1, 2, 3]
|
418
418
|
# ^^^^^^^^^^^^^^^^^^^
|
419
419
|
class Prism::ArrayPatternNode < Prism::Node
|
420
|
-
sig { returns(T.nilable(T.any(Prism::
|
420
|
+
sig { returns(T.nilable(T.any(Prism::ConstantPathNode, Prism::ConstantReadNode))) }
|
421
421
|
def constant; end
|
422
422
|
|
423
423
|
sig { returns(T::Array[Prism::Node]) }
|
@@ -435,7 +435,7 @@ class Prism::ArrayPatternNode < Prism::Node
|
|
435
435
|
sig { returns(T.nilable(Prism::Location)) }
|
436
436
|
def closing_loc; end
|
437
437
|
|
438
|
-
sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer, constant: T.nilable(T.any(Prism::
|
438
|
+
sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer, constant: T.nilable(T.any(Prism::ConstantPathNode, Prism::ConstantReadNode)), requireds: T::Array[Prism::Node], rest: T.nilable(Prism::Node), posts: T::Array[Prism::Node], opening_loc: T.nilable(Prism::Location), closing_loc: T.nilable(Prism::Location)).void }
|
439
439
|
def initialize(source, node_id, location, flags, constant, requireds, rest, posts, opening_loc, closing_loc); end
|
440
440
|
|
441
441
|
sig { override.params(visitor: Prism::Visitor).returns(T.untyped) }
|
@@ -453,7 +453,7 @@ class Prism::ArrayPatternNode < Prism::Node
|
|
453
453
|
sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) }
|
454
454
|
def comment_targets; end
|
455
455
|
|
456
|
-
sig { params(node_id: Integer, location: Prism::Location, flags: Integer, constant: T.nilable(T.any(Prism::
|
456
|
+
sig { params(node_id: Integer, location: Prism::Location, flags: Integer, constant: T.nilable(T.any(Prism::ConstantPathNode, Prism::ConstantReadNode)), requireds: T::Array[Prism::Node], rest: T.nilable(Prism::Node), posts: T::Array[Prism::Node], opening_loc: T.nilable(Prism::Location), closing_loc: T.nilable(Prism::Location)).returns(Prism::ArrayPatternNode) }
|
457
457
|
def copy(node_id: self.node_id, location: self.location, flags: self.flags, constant: self.constant, requireds: self.requireds, rest: self.rest, posts: self.posts, opening_loc: self.opening_loc, closing_loc: self.closing_loc); end
|
458
458
|
|
459
459
|
sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) }
|
@@ -3002,8 +3002,11 @@ end
|
|
3002
3002
|
#
|
3003
3003
|
# foo in Foo(*bar, baz, *qux)
|
3004
3004
|
# ^^^^^^^^^^^^^^^^^^^^
|
3005
|
+
#
|
3006
|
+
# foo => *bar, baz, *qux
|
3007
|
+
# ^^^^^^^^^^^^^^^
|
3005
3008
|
class Prism::FindPatternNode < Prism::Node
|
3006
|
-
sig { returns(T.nilable(T.any(Prism::
|
3009
|
+
sig { returns(T.nilable(T.any(Prism::ConstantPathNode, Prism::ConstantReadNode))) }
|
3007
3010
|
def constant; end
|
3008
3011
|
|
3009
3012
|
sig { returns(Prism::SplatNode) }
|
@@ -3021,7 +3024,7 @@ class Prism::FindPatternNode < Prism::Node
|
|
3021
3024
|
sig { returns(T.nilable(Prism::Location)) }
|
3022
3025
|
def closing_loc; end
|
3023
3026
|
|
3024
|
-
sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer, constant: T.nilable(T.any(Prism::
|
3027
|
+
sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer, constant: T.nilable(T.any(Prism::ConstantPathNode, Prism::ConstantReadNode)), left: Prism::SplatNode, requireds: T::Array[Prism::Node], right: T.any(Prism::SplatNode, Prism::MissingNode), opening_loc: T.nilable(Prism::Location), closing_loc: T.nilable(Prism::Location)).void }
|
3025
3028
|
def initialize(source, node_id, location, flags, constant, left, requireds, right, opening_loc, closing_loc); end
|
3026
3029
|
|
3027
3030
|
sig { override.params(visitor: Prism::Visitor).returns(T.untyped) }
|
@@ -3039,7 +3042,7 @@ class Prism::FindPatternNode < Prism::Node
|
|
3039
3042
|
sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) }
|
3040
3043
|
def comment_targets; end
|
3041
3044
|
|
3042
|
-
sig { params(node_id: Integer, location: Prism::Location, flags: Integer, constant: T.nilable(T.any(Prism::
|
3045
|
+
sig { params(node_id: Integer, location: Prism::Location, flags: Integer, constant: T.nilable(T.any(Prism::ConstantPathNode, Prism::ConstantReadNode)), left: Prism::SplatNode, requireds: T::Array[Prism::Node], right: T.any(Prism::SplatNode, Prism::MissingNode), opening_loc: T.nilable(Prism::Location), closing_loc: T.nilable(Prism::Location)).returns(Prism::FindPatternNode) }
|
3043
3046
|
def copy(node_id: self.node_id, location: self.location, flags: self.flags, constant: self.constant, left: self.left, requireds: self.requireds, right: self.right, opening_loc: self.opening_loc, closing_loc: self.closing_loc); end
|
3044
3047
|
|
3045
3048
|
sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) }
|
@@ -3713,8 +3716,14 @@ end
|
|
3713
3716
|
#
|
3714
3717
|
# foo => { a: 1, b: 2, **c }
|
3715
3718
|
# ^^^^^^^^^^^^^^^^^^^
|
3719
|
+
#
|
3720
|
+
# foo => Bar[a: 1, b: 2]
|
3721
|
+
# ^^^^^^^^^^^^^^^
|
3722
|
+
#
|
3723
|
+
# foo in { a: 1, b: 2 }
|
3724
|
+
# ^^^^^^^^^^^^^^
|
3716
3725
|
class Prism::HashPatternNode < Prism::Node
|
3717
|
-
sig { returns(T.nilable(T.any(Prism::
|
3726
|
+
sig { returns(T.nilable(T.any(Prism::ConstantPathNode, Prism::ConstantReadNode))) }
|
3718
3727
|
def constant; end
|
3719
3728
|
|
3720
3729
|
sig { returns(T::Array[Prism::AssocNode]) }
|
@@ -3729,7 +3738,7 @@ class Prism::HashPatternNode < Prism::Node
|
|
3729
3738
|
sig { returns(T.nilable(Prism::Location)) }
|
3730
3739
|
def closing_loc; end
|
3731
3740
|
|
3732
|
-
sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer, constant: T.nilable(T.any(Prism::
|
3741
|
+
sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer, constant: T.nilable(T.any(Prism::ConstantPathNode, Prism::ConstantReadNode)), elements: T::Array[Prism::AssocNode], rest: T.nilable(T.any(Prism::AssocSplatNode, Prism::NoKeywordsParameterNode)), opening_loc: T.nilable(Prism::Location), closing_loc: T.nilable(Prism::Location)).void }
|
3733
3742
|
def initialize(source, node_id, location, flags, constant, elements, rest, opening_loc, closing_loc); end
|
3734
3743
|
|
3735
3744
|
sig { override.params(visitor: Prism::Visitor).returns(T.untyped) }
|
@@ -3747,7 +3756,7 @@ class Prism::HashPatternNode < Prism::Node
|
|
3747
3756
|
sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) }
|
3748
3757
|
def comment_targets; end
|
3749
3758
|
|
3750
|
-
sig { params(node_id: Integer, location: Prism::Location, flags: Integer, constant: T.nilable(T.any(Prism::
|
3759
|
+
sig { params(node_id: Integer, location: Prism::Location, flags: Integer, constant: T.nilable(T.any(Prism::ConstantPathNode, Prism::ConstantReadNode)), elements: T::Array[Prism::AssocNode], rest: T.nilable(T.any(Prism::AssocSplatNode, Prism::NoKeywordsParameterNode)), opening_loc: T.nilable(Prism::Location), closing_loc: T.nilable(Prism::Location)).returns(Prism::HashPatternNode) }
|
3751
3760
|
def copy(node_id: self.node_id, location: self.location, flags: self.flags, constant: self.constant, elements: self.elements, rest: self.rest, opening_loc: self.opening_loc, closing_loc: self.closing_loc); end
|
3752
3761
|
|
3753
3762
|
sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) }
|
@@ -5537,6 +5546,9 @@ end
|
|
5537
5546
|
#
|
5538
5547
|
# foo, bar = baz
|
5539
5548
|
# ^^^ ^^^
|
5549
|
+
#
|
5550
|
+
# foo => baz
|
5551
|
+
# ^^^
|
5540
5552
|
class Prism::LocalVariableTargetNode < Prism::Node
|
5541
5553
|
sig { returns(Symbol) }
|
5542
5554
|
def name; end
|
data/sig/prism/dispatcher.rbs
CHANGED
@@ -4,9 +4,12 @@ module Prism
|
|
4
4
|
|
5
5
|
def initialize: () -> void
|
6
6
|
def register: (untyped, *Symbol) -> void
|
7
|
+
def register_public_methods: (untyped) -> void
|
7
8
|
def dispatch: (Prism::node) -> void
|
8
9
|
def dispatch_once: (Prism::node) -> void
|
9
10
|
|
11
|
+
private def register_events: (untyped, Array[Symbol]) -> void
|
12
|
+
|
10
13
|
class DispatchOnce < Visitor
|
11
14
|
attr_reader listeners: Hash[Symbol, Array[untyped]]
|
12
15
|
|
data/sig/prism/dsl.rbs
CHANGED
@@ -20,7 +20,7 @@ module Prism
|
|
20
20
|
|
21
21
|
def array_node: (?source: Source, ?node_id: Integer, ?location: Location, ?flags: Integer, ?elements: Array[Prism::node], ?opening_loc: Location?, ?closing_loc: Location?) -> ArrayNode
|
22
22
|
|
23
|
-
def array_pattern_node: (?source: Source, ?node_id: Integer, ?location: Location, ?flags: Integer, ?constant:
|
23
|
+
def array_pattern_node: (?source: Source, ?node_id: Integer, ?location: Location, ?flags: Integer, ?constant: ConstantPathNode | ConstantReadNode | nil, ?requireds: Array[Prism::node], ?rest: Prism::node?, ?posts: Array[Prism::node], ?opening_loc: Location?, ?closing_loc: Location?) -> ArrayPatternNode
|
24
24
|
|
25
25
|
def assoc_node: (?source: Source, ?node_id: Integer, ?location: Location, ?flags: Integer, ?key: Prism::node, ?value: Prism::node, ?operator_loc: Location?) -> AssocNode
|
26
26
|
|
@@ -110,7 +110,7 @@ module Prism
|
|
110
110
|
|
111
111
|
def false_node: (?source: Source, ?node_id: Integer, ?location: Location, ?flags: Integer) -> FalseNode
|
112
112
|
|
113
|
-
def find_pattern_node: (?source: Source, ?node_id: Integer, ?location: Location, ?flags: Integer, ?constant:
|
113
|
+
def find_pattern_node: (?source: Source, ?node_id: Integer, ?location: Location, ?flags: Integer, ?constant: ConstantPathNode | ConstantReadNode | nil, ?left: SplatNode, ?requireds: Array[Prism::node], ?right: SplatNode | MissingNode, ?opening_loc: Location?, ?closing_loc: Location?) -> FindPatternNode
|
114
114
|
|
115
115
|
def flip_flop_node: (?source: Source, ?node_id: Integer, ?location: Location, ?flags: Integer, ?left: Prism::node?, ?right: Prism::node?, ?operator_loc: Location) -> FlipFlopNode
|
116
116
|
|
@@ -138,7 +138,7 @@ module Prism
|
|
138
138
|
|
139
139
|
def hash_node: (?source: Source, ?node_id: Integer, ?location: Location, ?flags: Integer, ?opening_loc: Location, ?elements: Array[AssocNode | AssocSplatNode], ?closing_loc: Location) -> HashNode
|
140
140
|
|
141
|
-
def hash_pattern_node: (?source: Source, ?node_id: Integer, ?location: Location, ?flags: Integer, ?constant:
|
141
|
+
def hash_pattern_node: (?source: Source, ?node_id: Integer, ?location: Location, ?flags: Integer, ?constant: ConstantPathNode | ConstantReadNode | nil, ?elements: Array[AssocNode], ?rest: AssocSplatNode | NoKeywordsParameterNode | nil, ?opening_loc: Location?, ?closing_loc: Location?) -> HashPatternNode
|
142
142
|
|
143
143
|
def if_node: (?source: Source, ?node_id: Integer, ?location: Location, ?flags: Integer, ?if_keyword_loc: Location?, ?predicate: Prism::node, ?then_keyword_loc: Location?, ?statements: StatementsNode?, ?subsequent: ElseNode | IfNode | nil, ?end_keyword_loc: Location?) -> IfNode
|
144
144
|
|