prism 0.16.0 → 0.17.1
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 +6 -0
- data/README.md +1 -1
- data/config.yml +50 -35
- data/docs/fuzzing.md +1 -1
- data/docs/releasing.md +4 -1
- data/docs/serialization.md +28 -29
- data/ext/prism/api_node.c +802 -770
- data/ext/prism/api_pack.c +20 -9
- data/ext/prism/extension.c +465 -160
- data/ext/prism/extension.h +1 -1
- data/include/prism/ast.h +3173 -763
- data/include/prism/defines.h +32 -9
- data/include/prism/diagnostic.h +36 -3
- data/include/prism/enc/pm_encoding.h +118 -28
- data/include/prism/node.h +38 -13
- data/include/prism/options.h +204 -0
- data/include/prism/pack.h +44 -33
- data/include/prism/parser.h +445 -200
- data/include/prism/prettyprint.h +12 -1
- data/include/prism/regexp.h +16 -2
- data/include/prism/util/pm_buffer.h +94 -16
- data/include/prism/util/pm_char.h +162 -48
- data/include/prism/util/pm_constant_pool.h +126 -32
- 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 +70 -27
- 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 +224 -31
- data/lib/prism/compiler.rb +6 -3
- data/lib/prism/debug.rb +23 -7
- data/lib/prism/dispatcher.rb +33 -18
- data/lib/prism/dsl.rb +10 -5
- data/lib/prism/ffi.rb +132 -80
- data/lib/prism/lex_compat.rb +25 -15
- data/lib/prism/mutation_compiler.rb +10 -5
- data/lib/prism/node.rb +370 -135
- data/lib/prism/node_ext.rb +1 -1
- 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 +150 -30
- data/lib/prism/pattern.rb +11 -0
- data/lib/prism/ripper_compat.rb +28 -10
- data/lib/prism/serialize.rb +87 -55
- data/lib/prism/visitor.rb +10 -3
- data/lib/prism.rb +20 -2
- data/prism.gemspec +4 -2
- data/rbi/prism.rbi +5545 -5505
- data/rbi/prism_static.rbi +141 -131
- data/sig/prism.rbs +72 -43
- data/sig/prism_static.rbs +14 -1
- 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 +53 -8
- data/src/enc/pm_windows_31j.c +1 -0
- data/src/node.c +334 -321
- data/src/options.c +170 -0
- data/src/prettyprint.c +74 -47
- data/src/prism.c +1642 -856
- data/src/regexp.c +151 -95
- data/src/serialize.c +44 -20
- data/src/token_type.c +3 -1
- data/src/util/pm_buffer.c +45 -15
- data/src/util/pm_char.c +103 -57
- data/src/util/pm_constant_pool.c +51 -21
- data/src/util/pm_list.c +12 -4
- data/src/util/pm_memchr.c +5 -3
- data/src/util/pm_newline_list.c +20 -12
- 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 +5 -3
- data/docs/prism.png +0 -0
data/rbi/prism_static.rbi
CHANGED
@@ -1,182 +1,192 @@
|
|
1
|
-
|
1
|
+
class Prism::ParseResult
|
2
|
+
sig { returns(Prism::ProgramNode) }
|
3
|
+
def value; end
|
2
4
|
|
3
|
-
|
4
|
-
|
5
|
-
sig { returns(ProgramNode) }
|
6
|
-
def value; end
|
5
|
+
sig { returns(T::Array[Prism::Comment]) }
|
6
|
+
def comments; end
|
7
7
|
|
8
|
-
|
9
|
-
|
8
|
+
sig { returns(T::Array[Prism::ParseError]) }
|
9
|
+
def errors; end
|
10
10
|
|
11
|
-
|
12
|
-
|
11
|
+
sig { returns(T::Array[Prism::ParseWarning]) }
|
12
|
+
def warnings; end
|
13
13
|
|
14
|
-
|
15
|
-
|
14
|
+
sig { returns(Prism::Source) }
|
15
|
+
def source; end
|
16
|
+
end
|
16
17
|
|
17
|
-
|
18
|
-
|
19
|
-
end
|
18
|
+
class Prism::ParseError
|
19
|
+
sig { returns(String) }
|
20
|
+
def message; end
|
20
21
|
|
21
|
-
|
22
|
-
|
23
|
-
|
22
|
+
sig { returns(Prism::Location) }
|
23
|
+
def location; end
|
24
|
+
end
|
24
25
|
|
25
|
-
|
26
|
-
|
27
|
-
end
|
26
|
+
class Prism::ParseWarning
|
27
|
+
sig { returns(String) }
|
28
|
+
def message; end
|
28
29
|
|
29
|
-
|
30
|
-
|
31
|
-
|
30
|
+
sig { returns(Prism::Location) }
|
31
|
+
def location; end
|
32
|
+
end
|
32
33
|
|
33
|
-
|
34
|
-
|
35
|
-
end
|
34
|
+
class Prism::Node
|
35
|
+
sig { returns(T::Array[T.nilable(Prism::Node)]) }
|
36
|
+
def child_nodes; end
|
36
37
|
|
37
|
-
|
38
|
-
|
39
|
-
def child_nodes; end
|
38
|
+
sig { returns(Prism::Location) }
|
39
|
+
def location; end
|
40
40
|
|
41
|
-
|
42
|
-
|
41
|
+
sig { returns(String) }
|
42
|
+
def slice; end
|
43
|
+
end
|
43
44
|
|
44
|
-
|
45
|
-
|
46
|
-
end
|
45
|
+
class Prism::Comment
|
46
|
+
sig { returns(Prism::Location) }
|
47
|
+
def location; end
|
47
48
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
end
|
49
|
+
sig { returns(T::Boolean) }
|
50
|
+
def trailing?; end
|
51
|
+
end
|
52
52
|
|
53
|
-
|
54
|
-
|
55
|
-
|
53
|
+
class Prism::InlineComment < Prism::Comment
|
54
|
+
sig { override.returns(T::Boolean) }
|
55
|
+
def trailing?; end
|
56
|
+
end
|
56
57
|
|
57
|
-
|
58
|
-
|
58
|
+
class Prism::EmbDocComment < Prism::Comment
|
59
|
+
end
|
59
60
|
|
60
|
-
|
61
|
-
|
61
|
+
class Prism::DATAComment < Prism::Comment
|
62
|
+
end
|
62
63
|
|
63
|
-
|
64
|
-
|
64
|
+
class Prism::Location
|
65
|
+
sig { params(source: Prism::Source, start_offset: Integer, length: Integer).void }
|
66
|
+
def initialize(source, start_offset, length); end
|
65
67
|
|
66
|
-
|
67
|
-
|
68
|
+
sig { returns(String) }
|
69
|
+
def slice; end
|
68
70
|
|
69
|
-
|
70
|
-
|
71
|
+
sig { returns(T::Array[Prism::Comment]) }
|
72
|
+
def comments; end
|
71
73
|
|
72
|
-
|
73
|
-
|
74
|
+
sig { params(options: T.untyped).returns(Prism::Location) }
|
75
|
+
def copy(**options); end
|
74
76
|
|
75
|
-
|
76
|
-
|
77
|
+
sig { returns(Integer) }
|
78
|
+
def start_offset; end
|
77
79
|
|
78
|
-
|
79
|
-
|
80
|
+
sig { returns(Integer) }
|
81
|
+
def end_offset; end
|
80
82
|
|
81
|
-
|
82
|
-
|
83
|
-
end
|
83
|
+
sig { returns(Integer) }
|
84
|
+
def start_line; end
|
84
85
|
|
85
|
-
|
86
|
-
|
87
|
-
def initialize(source, offsets); end
|
86
|
+
sig { returns(Integer) }
|
87
|
+
def end_line; end
|
88
88
|
|
89
|
-
|
90
|
-
|
89
|
+
sig { returns(Integer) }
|
90
|
+
def start_column; end
|
91
91
|
|
92
|
-
|
93
|
-
|
92
|
+
sig { returns(Integer) }
|
93
|
+
def end_column; end
|
94
|
+
end
|
95
|
+
|
96
|
+
class Prism::Source
|
97
|
+
sig { params(source: String, start_line: Integer, offsets: T::Array[Integer]).void }
|
98
|
+
def initialize(source, start_line, offsets); end
|
94
99
|
|
95
|
-
|
96
|
-
|
100
|
+
sig { params(offset: Integer, length: Integer).returns(String) }
|
101
|
+
def slice(offset, length); end
|
97
102
|
|
98
|
-
|
99
|
-
|
103
|
+
sig { params(value: Integer).returns(Integer) }
|
104
|
+
def line(value); end
|
100
105
|
|
101
|
-
|
102
|
-
|
106
|
+
sig { params(value: Integer).returns(Integer) }
|
107
|
+
def line_offset(value); end
|
103
108
|
|
104
|
-
|
105
|
-
|
106
|
-
end
|
109
|
+
sig { params(value: Integer).returns(Integer) }
|
110
|
+
def column(value); end
|
107
111
|
|
108
|
-
|
109
|
-
|
110
|
-
def initialize(type, value, location); end
|
112
|
+
sig { returns(String) }
|
113
|
+
def source; end
|
111
114
|
|
112
|
-
|
113
|
-
|
115
|
+
sig { returns(T::Array[Integer]) }
|
116
|
+
def offsets; end
|
117
|
+
end
|
114
118
|
|
115
|
-
|
116
|
-
|
119
|
+
class Prism::Token
|
120
|
+
sig { params(type: T.untyped, value: String, location: Prism::Location).void }
|
121
|
+
def initialize(type, value, location); end
|
117
122
|
|
118
|
-
|
119
|
-
|
123
|
+
sig { params(keys: T.untyped).returns(T.untyped) }
|
124
|
+
def deconstruct_keys(keys); end
|
120
125
|
|
121
|
-
|
122
|
-
|
126
|
+
sig { params(q: T.untyped).returns(T.untyped) }
|
127
|
+
def pretty_print(q); end
|
123
128
|
|
124
|
-
|
125
|
-
|
129
|
+
sig { params(other: T.untyped).returns(T::Boolean) }
|
130
|
+
def ==(other); end
|
126
131
|
|
127
|
-
|
128
|
-
|
129
|
-
end
|
132
|
+
sig { returns(T.untyped) }
|
133
|
+
def type; end
|
130
134
|
|
131
|
-
|
132
|
-
|
133
|
-
def initialize(prefix); end
|
135
|
+
sig { returns(String) }
|
136
|
+
def value; end
|
134
137
|
|
135
|
-
|
136
|
-
|
138
|
+
sig { returns(Prism::Location) }
|
139
|
+
def location; end
|
140
|
+
end
|
137
141
|
|
138
|
-
|
139
|
-
|
142
|
+
class Prism::NodeInspector
|
143
|
+
sig { params(prefix: String).void }
|
144
|
+
def initialize(prefix); end
|
140
145
|
|
141
|
-
|
142
|
-
|
143
|
-
def <<(line); end
|
146
|
+
sig { returns(String) }
|
147
|
+
def prefix; end
|
144
148
|
|
145
|
-
|
146
|
-
|
147
|
-
sig { params(node: Node).returns(String) }
|
148
|
-
def header(node); end
|
149
|
+
sig { returns(String) }
|
150
|
+
def output; end
|
149
151
|
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
def list(prefix, nodes); end
|
152
|
+
# Appends a line to the output with the current prefix.
|
153
|
+
sig { params(line: String).void }
|
154
|
+
def <<(line); end
|
154
155
|
|
155
|
-
|
156
|
-
|
157
|
-
|
156
|
+
# This generates a string that is used as the header of the inspect output
|
157
|
+
# for any given node.
|
158
|
+
sig { params(node: Prism::Node).returns(String) }
|
159
|
+
def header(node); end
|
158
160
|
|
159
|
-
|
160
|
-
|
161
|
-
|
161
|
+
# Generates a string that represents a list of nodes. It handles properly
|
162
|
+
# using the box drawing characters to make the output look nice.
|
163
|
+
sig { params(prefix: String, nodes: T::Array[Prism::Node]).returns(String) }
|
164
|
+
def list(prefix, nodes); end
|
162
165
|
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
+
# Generates a string that represents a location field on a node.
|
167
|
+
sig { params(value: Prism::Location).returns(String) }
|
168
|
+
def location(value); end
|
166
169
|
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
170
|
+
# Generates a string that represents a child node.
|
171
|
+
sig { params(node: Prism::Node, append: String).returns(String) }
|
172
|
+
def child_node(node, append); end
|
173
|
+
|
174
|
+
# Returns a new inspector that can be used to inspect a child node.
|
175
|
+
sig { params(append: String).returns(Prism::NodeInspector) }
|
176
|
+
def child_inspector(append); end
|
177
|
+
|
178
|
+
# Returns the output as a string.
|
179
|
+
sig { returns(String) }
|
180
|
+
def to_str; end
|
181
|
+
end
|
171
182
|
|
172
|
-
|
173
|
-
|
174
|
-
|
183
|
+
class Prism::BasicVisitor
|
184
|
+
sig { params(node: T.nilable(Prism::Node)).void }
|
185
|
+
def visit(node); end
|
175
186
|
|
176
|
-
|
177
|
-
|
187
|
+
sig { params(nodes: T::Array[T.nilable(Prism::Node)]).void }
|
188
|
+
def visit_all(nodes); end
|
178
189
|
|
179
|
-
|
180
|
-
|
181
|
-
end
|
190
|
+
sig { params(node: Prism::Node).void }
|
191
|
+
def visit_child_nodes(node); end
|
182
192
|
end
|
data/sig/prism.rbs
CHANGED
@@ -607,10 +607,10 @@ module Prism
|
|
607
607
|
end
|
608
608
|
# Represents the use of a case statement.
|
609
609
|
#
|
610
|
-
#
|
611
|
-
#
|
612
|
-
#
|
613
|
-
#
|
610
|
+
# case true
|
611
|
+
# when false
|
612
|
+
# end
|
613
|
+
# ^^^^^^^^^^
|
614
614
|
class CaseNode < Node
|
615
615
|
attr_reader predicate: Node?
|
616
616
|
attr_reader conditions: Array[Node]
|
@@ -669,7 +669,7 @@ module Prism
|
|
669
669
|
# Represents the use of the `&&=` operator for assignment to a class variable.
|
670
670
|
#
|
671
671
|
# @@target &&= value
|
672
|
-
#
|
672
|
+
# ^^^^^^^^^^^^^^^^^^
|
673
673
|
class ClassVariableAndWriteNode < Node
|
674
674
|
attr_reader name: Symbol
|
675
675
|
attr_reader name_loc: Location
|
@@ -1268,13 +1268,13 @@ module Prism
|
|
1268
1268
|
# Represents a find pattern in pattern matching.
|
1269
1269
|
#
|
1270
1270
|
# foo in *bar, baz, *qux
|
1271
|
-
#
|
1271
|
+
# ^^^^^^^^^^^^^^^
|
1272
1272
|
#
|
1273
1273
|
# foo in [*bar, baz, *qux]
|
1274
|
-
#
|
1274
|
+
# ^^^^^^^^^^^^^^^^^
|
1275
1275
|
#
|
1276
1276
|
# foo in Foo(*bar, baz, *qux)
|
1277
|
-
#
|
1277
|
+
# ^^^^^^^^^^^^^^^^^^^^
|
1278
1278
|
class FindPatternNode < Node
|
1279
1279
|
attr_reader constant: Node?
|
1280
1280
|
attr_reader left: Node
|
@@ -1380,7 +1380,7 @@ module Prism
|
|
1380
1380
|
#
|
1381
1381
|
# def foo(...)
|
1382
1382
|
# bar(...)
|
1383
|
-
#
|
1383
|
+
# ^^^
|
1384
1384
|
# end
|
1385
1385
|
class ForwardingArgumentsNode < Node
|
1386
1386
|
|
@@ -2176,32 +2176,6 @@ module Prism
|
|
2176
2176
|
|
2177
2177
|
def inspect: (inspector: NodeInspector) -> String
|
2178
2178
|
end
|
2179
|
-
# Represents a keyword parameter to a method, block, or lambda definition.
|
2180
|
-
#
|
2181
|
-
# def a(b:)
|
2182
|
-
# ^^
|
2183
|
-
# end
|
2184
|
-
#
|
2185
|
-
# def a(b: 1)
|
2186
|
-
# ^^^^
|
2187
|
-
# end
|
2188
|
-
class KeywordParameterNode < Node
|
2189
|
-
attr_reader name: Symbol
|
2190
|
-
attr_reader name_loc: Location
|
2191
|
-
attr_reader value: Node?
|
2192
|
-
|
2193
|
-
def initialize: (name: Symbol, name_loc: Location, value: Node?, location: Location) -> void
|
2194
|
-
def accept: (visitor: Visitor) -> void
|
2195
|
-
def set_newline_flag: (newline_marked: Array[bool]) -> void
|
2196
|
-
def child_nodes: () -> Array[Node?]
|
2197
|
-
def deconstruct: () -> Array[Node?]
|
2198
|
-
|
2199
|
-
def copy: (**untyped) -> KeywordParameterNode
|
2200
|
-
|
2201
|
-
def deconstruct_keys: (keys: Array[Symbol]) -> Hash[Symbol, (Node | Array[Node] | String | Token | Array[Token] | Location)?]
|
2202
|
-
|
2203
|
-
def inspect: (inspector: NodeInspector) -> String
|
2204
|
-
end
|
2205
2179
|
# Represents a keyword rest parameter to a method, block, or lambda definition.
|
2206
2180
|
#
|
2207
2181
|
# def a(**b)
|
@@ -2697,6 +2671,28 @@ module Prism
|
|
2697
2671
|
|
2698
2672
|
def inspect: (inspector: NodeInspector) -> String
|
2699
2673
|
end
|
2674
|
+
# Represents an optional keyword parameter to a method, block, or lambda definition.
|
2675
|
+
#
|
2676
|
+
# def a(b: 1)
|
2677
|
+
# ^^^^
|
2678
|
+
# end
|
2679
|
+
class OptionalKeywordParameterNode < Node
|
2680
|
+
attr_reader name: Symbol
|
2681
|
+
attr_reader name_loc: Location
|
2682
|
+
attr_reader value: Node
|
2683
|
+
|
2684
|
+
def initialize: (name: Symbol, name_loc: Location, value: Node, location: Location) -> void
|
2685
|
+
def accept: (visitor: Visitor) -> void
|
2686
|
+
def set_newline_flag: (newline_marked: Array[bool]) -> void
|
2687
|
+
def child_nodes: () -> Array[Node?]
|
2688
|
+
def deconstruct: () -> Array[Node?]
|
2689
|
+
|
2690
|
+
def copy: (**untyped) -> OptionalKeywordParameterNode
|
2691
|
+
|
2692
|
+
def deconstruct_keys: (keys: Array[Symbol]) -> Hash[Symbol, (Node | Array[Node] | String | Token | Array[Token] | Location)?]
|
2693
|
+
|
2694
|
+
def inspect: (inspector: NodeInspector) -> String
|
2695
|
+
end
|
2700
2696
|
# Represents an optional parameter to a method, block, or lambda definition.
|
2701
2697
|
#
|
2702
2698
|
# def a(b = 1)
|
@@ -3032,6 +3028,27 @@ module Prism
|
|
3032
3028
|
|
3033
3029
|
def inspect: (inspector: NodeInspector) -> String
|
3034
3030
|
end
|
3031
|
+
# Represents a required keyword parameter to a method, block, or lambda definition.
|
3032
|
+
#
|
3033
|
+
# def a(b: )
|
3034
|
+
# ^^
|
3035
|
+
# end
|
3036
|
+
class RequiredKeywordParameterNode < Node
|
3037
|
+
attr_reader name: Symbol
|
3038
|
+
attr_reader name_loc: Location
|
3039
|
+
|
3040
|
+
def initialize: (name: Symbol, name_loc: Location, location: Location) -> void
|
3041
|
+
def accept: (visitor: Visitor) -> void
|
3042
|
+
def set_newline_flag: (newline_marked: Array[bool]) -> void
|
3043
|
+
def child_nodes: () -> Array[Node?]
|
3044
|
+
def deconstruct: () -> Array[Node?]
|
3045
|
+
|
3046
|
+
def copy: (**untyped) -> RequiredKeywordParameterNode
|
3047
|
+
|
3048
|
+
def deconstruct_keys: (keys: Array[Symbol]) -> Hash[Symbol, (Node | Array[Node] | String | Token | Array[Token] | Location)?]
|
3049
|
+
|
3050
|
+
def inspect: (inspector: NodeInspector) -> String
|
3051
|
+
end
|
3035
3052
|
# Represents a required parameter to a method, block, or lambda definition.
|
3036
3053
|
#
|
3037
3054
|
# def a(b)
|
@@ -3054,8 +3071,8 @@ module Prism
|
|
3054
3071
|
end
|
3055
3072
|
# Represents an expression modified with a rescue.
|
3056
3073
|
#
|
3057
|
-
#
|
3058
|
-
#
|
3074
|
+
# foo rescue nil
|
3075
|
+
# ^^^^^^^^^^^^^^
|
3059
3076
|
class RescueModifierNode < Node
|
3060
3077
|
attr_reader expression: Node
|
3061
3078
|
attr_reader keyword_loc: Location
|
@@ -3079,8 +3096,8 @@ module Prism
|
|
3079
3096
|
#
|
3080
3097
|
# begin
|
3081
3098
|
# rescue Foo, *splat, Bar => ex
|
3082
|
-
# ^^^^^^
|
3083
3099
|
# foo
|
3100
|
+
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
3084
3101
|
# end
|
3085
3102
|
#
|
3086
3103
|
# `Foo, *splat, Bar` are in the `exceptions` field.
|
@@ -3654,11 +3671,13 @@ module Prism
|
|
3654
3671
|
def inspect: (inspector: NodeInspector) -> String
|
3655
3672
|
end
|
3656
3673
|
|
3674
|
+
# Flags for arguments nodes.
|
3657
3675
|
module ArgumentsNodeFlags
|
3658
3676
|
# if arguments contain keyword splat
|
3659
3677
|
KEYWORD_SPLAT: Integer
|
3660
3678
|
end
|
3661
3679
|
|
3680
|
+
# Flags for call nodes.
|
3662
3681
|
module CallNodeFlags
|
3663
3682
|
# &. operator
|
3664
3683
|
SAFE_NAVIGATION: Integer
|
@@ -3666,6 +3685,7 @@ module Prism
|
|
3666
3685
|
VARIABLE_CALL: Integer
|
3667
3686
|
end
|
3668
3687
|
|
3688
|
+
# Flags for integer nodes that correspond to the base of the integer.
|
3669
3689
|
module IntegerBaseFlags
|
3670
3690
|
# 0b prefix
|
3671
3691
|
BINARY: Integer
|
@@ -3677,16 +3697,19 @@ module Prism
|
|
3677
3697
|
HEXADECIMAL: Integer
|
3678
3698
|
end
|
3679
3699
|
|
3700
|
+
# Flags for while and until loop nodes.
|
3680
3701
|
module LoopFlags
|
3681
3702
|
# a loop after a begin statement, so the body is executed first before the condition
|
3682
3703
|
BEGIN_MODIFIER: Integer
|
3683
3704
|
end
|
3684
3705
|
|
3706
|
+
# Flags for range and flip-flop nodes.
|
3685
3707
|
module RangeFlags
|
3686
3708
|
# ... operator
|
3687
3709
|
EXCLUDE_END: Integer
|
3688
3710
|
end
|
3689
3711
|
|
3712
|
+
# Flags for regular expression and match last line nodes.
|
3690
3713
|
module RegularExpressionFlags
|
3691
3714
|
# i - ignores the case of characters when matching
|
3692
3715
|
IGNORE_CASE: Integer
|
@@ -3706,6 +3729,7 @@ module Prism
|
|
3706
3729
|
UTF_8: Integer
|
3707
3730
|
end
|
3708
3731
|
|
3732
|
+
# Flags for string nodes.
|
3709
3733
|
module StringFlags
|
3710
3734
|
# frozen by virtue of a `frozen_string_literal` comment
|
3711
3735
|
FROZEN: Integer
|
@@ -3965,9 +3989,6 @@ module Prism
|
|
3965
3989
|
# Visit a KeywordHashNode node
|
3966
3990
|
def visit_keyword_hash_node: (node: KeywordHashNode) -> void
|
3967
3991
|
|
3968
|
-
# Visit a KeywordParameterNode node
|
3969
|
-
def visit_keyword_parameter_node: (node: KeywordParameterNode) -> void
|
3970
|
-
|
3971
3992
|
# Visit a KeywordRestParameterNode node
|
3972
3993
|
def visit_keyword_rest_parameter_node: (node: KeywordRestParameterNode) -> void
|
3973
3994
|
|
@@ -4028,6 +4049,9 @@ module Prism
|
|
4028
4049
|
# Visit a NumberedReferenceReadNode node
|
4029
4050
|
def visit_numbered_reference_read_node: (node: NumberedReferenceReadNode) -> void
|
4030
4051
|
|
4052
|
+
# Visit a OptionalKeywordParameterNode node
|
4053
|
+
def visit_optional_keyword_parameter_node: (node: OptionalKeywordParameterNode) -> void
|
4054
|
+
|
4031
4055
|
# Visit a OptionalParameterNode node
|
4032
4056
|
def visit_optional_parameter_node: (node: OptionalParameterNode) -> void
|
4033
4057
|
|
@@ -4067,6 +4091,9 @@ module Prism
|
|
4067
4091
|
# Visit a RegularExpressionNode node
|
4068
4092
|
def visit_regular_expression_node: (node: RegularExpressionNode) -> void
|
4069
4093
|
|
4094
|
+
# Visit a RequiredKeywordParameterNode node
|
4095
|
+
def visit_required_keyword_parameter_node: (node: RequiredKeywordParameterNode) -> void
|
4096
|
+
|
4070
4097
|
# Visit a RequiredParameterNode node
|
4071
4098
|
def visit_required_parameter_node: (node: RequiredParameterNode) -> void
|
4072
4099
|
|
@@ -4317,8 +4344,6 @@ module Prism
|
|
4317
4344
|
def InterpolatedXStringNode: (opening_loc: Location, parts: Array[Node], closing_loc: Location, location: Location) -> InterpolatedXStringNode
|
4318
4345
|
# Create a new KeywordHashNode node
|
4319
4346
|
def KeywordHashNode: (elements: Array[Node], location: Location) -> KeywordHashNode
|
4320
|
-
# Create a new KeywordParameterNode node
|
4321
|
-
def KeywordParameterNode: (name: Symbol, name_loc: Location, value: Node?, location: Location) -> KeywordParameterNode
|
4322
4347
|
# Create a new KeywordRestParameterNode node
|
4323
4348
|
def KeywordRestParameterNode: (name: Symbol?, name_loc: Location?, operator_loc: Location, location: Location) -> KeywordRestParameterNode
|
4324
4349
|
# Create a new LambdaNode node
|
@@ -4359,6 +4384,8 @@ module Prism
|
|
4359
4384
|
def NoKeywordsParameterNode: (operator_loc: Location, keyword_loc: Location, location: Location) -> NoKeywordsParameterNode
|
4360
4385
|
# Create a new NumberedReferenceReadNode node
|
4361
4386
|
def NumberedReferenceReadNode: (number: Integer, location: Location) -> NumberedReferenceReadNode
|
4387
|
+
# Create a new OptionalKeywordParameterNode node
|
4388
|
+
def OptionalKeywordParameterNode: (name: Symbol, name_loc: Location, value: Node, location: Location) -> OptionalKeywordParameterNode
|
4362
4389
|
# Create a new OptionalParameterNode node
|
4363
4390
|
def OptionalParameterNode: (name: Symbol, name_loc: Location, operator_loc: Location, value: Node, location: Location) -> OptionalParameterNode
|
4364
4391
|
# Create a new OrNode node
|
@@ -4385,6 +4412,8 @@ module Prism
|
|
4385
4412
|
def RedoNode: (location: Location) -> RedoNode
|
4386
4413
|
# Create a new RegularExpressionNode node
|
4387
4414
|
def RegularExpressionNode: (opening_loc: Location, content_loc: Location, closing_loc: Location, unescaped: String, flags: Integer, location: Location) -> RegularExpressionNode
|
4415
|
+
# Create a new RequiredKeywordParameterNode node
|
4416
|
+
def RequiredKeywordParameterNode: (name: Symbol, name_loc: Location, location: Location) -> RequiredKeywordParameterNode
|
4388
4417
|
# Create a new RequiredParameterNode node
|
4389
4418
|
def RequiredParameterNode: (name: Symbol, location: Location) -> RequiredParameterNode
|
4390
4419
|
# Create a new RescueModifierNode node
|
data/sig/prism_static.rbs
CHANGED
@@ -25,6 +25,17 @@ module Prism
|
|
25
25
|
|
26
26
|
class Comment
|
27
27
|
def location: () -> Location
|
28
|
+
def trailing?: () -> bool
|
29
|
+
end
|
30
|
+
|
31
|
+
class InlineComment < Comment
|
32
|
+
def trailing?: () -> bool
|
33
|
+
end
|
34
|
+
|
35
|
+
class EmbDocComment < Comment
|
36
|
+
end
|
37
|
+
|
38
|
+
class DATAComment < Comment
|
28
39
|
end
|
29
40
|
|
30
41
|
class Location
|
@@ -42,12 +53,14 @@ module Prism
|
|
42
53
|
|
43
54
|
class Source
|
44
55
|
attr_reader source: String
|
56
|
+
attr_reader start_line: Integer
|
45
57
|
attr_reader offsets: Array[Integer]
|
46
58
|
|
47
59
|
@source: String
|
60
|
+
@start_line: Integer
|
48
61
|
@offsets: Array[Integer]
|
49
62
|
|
50
|
-
def initialize: (source: String, offsets: Array[Integer]) -> void
|
63
|
+
def initialize: (source: String, start_line: Integer, offsets: Array[Integer]) -> void
|
51
64
|
def slice: (offset: Integer, length: Integer) -> String
|
52
65
|
def line: (value: Integer) -> Integer
|
53
66
|
def line_offset: (value: Integer) -> Integer
|