prism 1.3.0 → 1.4.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 +24 -1
- data/config.yml +9 -0
- data/docs/releasing.md +1 -1
- data/docs/ruby_api.md +1 -1
- data/ext/prism/api_node.c +1814 -1303
- data/ext/prism/extension.c +230 -109
- data/ext/prism/extension.h +4 -4
- data/include/prism/ast.h +16 -0
- data/include/prism/defines.h +4 -1
- data/include/prism/options.h +47 -1
- data/include/prism/util/pm_buffer.h +10 -0
- data/include/prism/version.h +2 -2
- data/include/prism.h +4 -4
- data/lib/prism/dot_visitor.rb +16 -0
- data/lib/prism/dsl.rb +10 -2
- data/lib/prism/ffi.rb +45 -27
- data/lib/prism/inspect_visitor.rb +2 -1
- data/lib/prism/node.rb +48 -10
- data/lib/prism/parse_result/newlines.rb +1 -1
- data/lib/prism/parse_result.rb +52 -0
- data/lib/prism/polyfill/append_as_bytes.rb +15 -0
- data/lib/prism/reflection.rb +2 -2
- data/lib/prism/serialize.rb +1252 -765
- data/lib/prism/translation/parser/builder.rb +61 -0
- data/lib/prism/translation/parser/compiler.rb +192 -136
- data/lib/prism/translation/parser/lexer.rb +435 -61
- data/lib/prism/translation/parser.rb +51 -3
- data/lib/prism/translation/parser35.rb +12 -0
- data/lib/prism/translation/ripper.rb +13 -3
- data/lib/prism/translation/ruby_parser.rb +5 -4
- data/lib/prism/translation.rb +1 -0
- data/lib/prism.rb +3 -3
- data/prism.gemspec +5 -1
- data/rbi/prism/dsl.rbi +6 -3
- data/rbi/prism/node.rbi +22 -7
- data/rbi/prism/parse_result.rbi +17 -0
- data/rbi/prism/translation/parser35.rbi +6 -0
- data/rbi/prism.rbi +39 -36
- data/sig/prism/dsl.rbs +4 -2
- data/sig/prism/node.rbs +17 -7
- data/sig/prism/parse_result.rbs +10 -0
- data/sig/prism/serialize.rbs +4 -2
- data/sig/prism.rbs +22 -1
- data/src/diagnostic.c +2 -2
- data/src/node.c +21 -0
- data/src/options.c +31 -0
- data/src/prettyprint.c +30 -0
- data/src/prism.c +374 -118
- data/src/serialize.c +6 -0
- data/src/util/pm_buffer.c +40 -0
- data/src/util/pm_constant_pool.c +6 -2
- data/src/util/pm_strncasecmp.c +13 -1
- metadata +7 -7
@@ -33,6 +33,37 @@ module Prism
|
|
33
33
|
|
34
34
|
Racc_debug_parser = false # :nodoc:
|
35
35
|
|
36
|
+
# The `builder` argument is used to create the parser using our custom builder class by default.
|
37
|
+
#
|
38
|
+
# By using the `:parser` keyword argument, you can translate in a way that is compatible with
|
39
|
+
# the Parser gem using any parser.
|
40
|
+
#
|
41
|
+
# For example, in RuboCop for Ruby LSP, the following approach can be used to improve performance
|
42
|
+
# by reusing a pre-parsed `Prism::ParseLexResult`:
|
43
|
+
#
|
44
|
+
# class PrismPreparsed
|
45
|
+
# def initialize(prism_result)
|
46
|
+
# @prism_result = prism_result
|
47
|
+
# end
|
48
|
+
#
|
49
|
+
# def parse_lex(source, **options)
|
50
|
+
# @prism_result
|
51
|
+
# end
|
52
|
+
# end
|
53
|
+
#
|
54
|
+
# prism_preparsed = PrismPreparsed.new(prism_result)
|
55
|
+
#
|
56
|
+
# Prism::Translation::Ruby34.new(builder, parser: prism_preparsed)
|
57
|
+
#
|
58
|
+
# In an object passed to the `:parser` keyword argument, the `parse` and `parse_lex` methods
|
59
|
+
# should be implemented as needed.
|
60
|
+
#
|
61
|
+
def initialize(builder = Prism::Translation::Parser::Builder.new, parser: Prism)
|
62
|
+
@parser = parser
|
63
|
+
|
64
|
+
super(builder)
|
65
|
+
end
|
66
|
+
|
36
67
|
def version # :nodoc:
|
37
68
|
34
|
38
69
|
end
|
@@ -51,7 +82,7 @@ module Prism
|
|
51
82
|
source = source_buffer.source
|
52
83
|
|
53
84
|
offset_cache = build_offset_cache(source)
|
54
|
-
result = unwrap(
|
85
|
+
result = unwrap(@parser.parse(source, **prism_options), offset_cache)
|
55
86
|
|
56
87
|
build_ast(result.value, offset_cache)
|
57
88
|
ensure
|
@@ -64,7 +95,7 @@ module Prism
|
|
64
95
|
source = source_buffer.source
|
65
96
|
|
66
97
|
offset_cache = build_offset_cache(source)
|
67
|
-
result = unwrap(
|
98
|
+
result = unwrap(@parser.parse(source, **prism_options), offset_cache)
|
68
99
|
|
69
100
|
[
|
70
101
|
build_ast(result.value, offset_cache),
|
@@ -83,7 +114,7 @@ module Prism
|
|
83
114
|
offset_cache = build_offset_cache(source)
|
84
115
|
result =
|
85
116
|
begin
|
86
|
-
unwrap(
|
117
|
+
unwrap(@parser.parse_lex(source, **prism_options), offset_cache)
|
87
118
|
rescue ::Parser::SyntaxError
|
88
119
|
raise if !recover
|
89
120
|
end
|
@@ -285,6 +316,20 @@ module Prism
|
|
285
316
|
)
|
286
317
|
end
|
287
318
|
|
319
|
+
# Options for how prism should parse/lex the source.
|
320
|
+
def prism_options
|
321
|
+
options = {
|
322
|
+
filepath: @source_buffer.name,
|
323
|
+
version: convert_for_prism(version),
|
324
|
+
partial_script: true,
|
325
|
+
}
|
326
|
+
# The parser gem always encodes to UTF-8, unless it is binary.
|
327
|
+
# https://github.com/whitequark/parser/blob/v3.3.6.0/lib/parser/source/buffer.rb#L80-L107
|
328
|
+
options[:encoding] = false if @source_buffer.source.encoding != Encoding::BINARY
|
329
|
+
|
330
|
+
options
|
331
|
+
end
|
332
|
+
|
288
333
|
# Converts the version format handled by Parser to the format handled by Prism.
|
289
334
|
def convert_for_prism(version)
|
290
335
|
case version
|
@@ -292,11 +337,14 @@ module Prism
|
|
292
337
|
"3.3.1"
|
293
338
|
when 34
|
294
339
|
"3.4.0"
|
340
|
+
when 35
|
341
|
+
"3.5.0"
|
295
342
|
else
|
296
343
|
"latest"
|
297
344
|
end
|
298
345
|
end
|
299
346
|
|
347
|
+
require_relative "parser/builder"
|
300
348
|
require_relative "parser/compiler"
|
301
349
|
require_relative "parser/lexer"
|
302
350
|
|
@@ -1045,10 +1045,20 @@ module Prism
|
|
1045
1045
|
bounds(node.location)
|
1046
1046
|
on_unary(node.name, receiver)
|
1047
1047
|
when :!
|
1048
|
-
|
1048
|
+
if node.message == "not"
|
1049
|
+
receiver =
|
1050
|
+
if !node.receiver.is_a?(ParenthesesNode) || !node.receiver.body.nil?
|
1051
|
+
visit(node.receiver)
|
1052
|
+
end
|
1049
1053
|
|
1050
|
-
|
1051
|
-
|
1054
|
+
bounds(node.location)
|
1055
|
+
on_unary(:not, receiver)
|
1056
|
+
else
|
1057
|
+
receiver = visit(node.receiver)
|
1058
|
+
|
1059
|
+
bounds(node.location)
|
1060
|
+
on_unary(:!, receiver)
|
1061
|
+
end
|
1052
1062
|
when *BINARY_OPERATORS
|
1053
1063
|
receiver = visit(node.receiver)
|
1054
1064
|
value = visit(node.arguments.arguments.first)
|
@@ -929,9 +929,9 @@ module Prism
|
|
929
929
|
if result == :space
|
930
930
|
# continue
|
931
931
|
elsif result.is_a?(String)
|
932
|
-
results[0]
|
932
|
+
results[0] = "#{results[0]}#{result}"
|
933
933
|
elsif result.is_a?(Array) && result[0] == :str
|
934
|
-
results[0]
|
934
|
+
results[0] = "#{results[0]}#{result[1]}"
|
935
935
|
else
|
936
936
|
results << result
|
937
937
|
state = :interpolated_content
|
@@ -940,7 +940,7 @@ module Prism
|
|
940
940
|
if result == :space
|
941
941
|
# continue
|
942
942
|
elsif visited[index - 1] != :space && result.is_a?(Array) && result[0] == :str && results[-1][0] == :str && (results[-1].line_max == result.line)
|
943
|
-
results[-1][1]
|
943
|
+
results[-1][1] = "#{results[-1][1]}#{result[1]}"
|
944
944
|
results[-1].line_max = result.line_max
|
945
945
|
else
|
946
946
|
results << result
|
@@ -1440,6 +1440,7 @@ module Prism
|
|
1440
1440
|
unescaped = node.unescaped
|
1441
1441
|
|
1442
1442
|
if node.forced_binary_encoding?
|
1443
|
+
unescaped = unescaped.dup
|
1443
1444
|
unescaped.force_encoding(Encoding::BINARY)
|
1444
1445
|
end
|
1445
1446
|
|
@@ -1558,7 +1559,7 @@ module Prism
|
|
1558
1559
|
else
|
1559
1560
|
parameters =
|
1560
1561
|
case block.parameters
|
1561
|
-
when nil, NumberedParametersNode
|
1562
|
+
when nil, ItParametersNode, NumberedParametersNode
|
1562
1563
|
0
|
1563
1564
|
else
|
1564
1565
|
visit(block.parameters)
|
data/lib/prism/translation.rb
CHANGED
@@ -7,6 +7,7 @@ module Prism
|
|
7
7
|
autoload :Parser, "prism/translation/parser"
|
8
8
|
autoload :Parser33, "prism/translation/parser33"
|
9
9
|
autoload :Parser34, "prism/translation/parser34"
|
10
|
+
autoload :Parser35, "prism/translation/parser35"
|
10
11
|
autoload :Ripper, "prism/translation/ripper"
|
11
12
|
autoload :RubyParser, "prism/translation/ruby_parser"
|
12
13
|
end
|
data/lib/prism.rb
CHANGED
@@ -59,11 +59,11 @@ module Prism
|
|
59
59
|
end
|
60
60
|
|
61
61
|
# :call-seq:
|
62
|
-
# Prism::load(source, serialized) -> ParseResult
|
62
|
+
# Prism::load(source, serialized, freeze) -> ParseResult
|
63
63
|
#
|
64
64
|
# Load the serialized AST using the source as a reference into a tree.
|
65
|
-
def self.load(source, serialized)
|
66
|
-
Serialize.
|
65
|
+
def self.load(source, serialized, freeze = false)
|
66
|
+
Serialize.load_parse(source, serialized, freeze)
|
67
67
|
end
|
68
68
|
end
|
69
69
|
|
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.4.0"
|
6
6
|
spec.authors = ["Shopify"]
|
7
7
|
spec.email = ["ruby@shopify.com"]
|
8
8
|
|
@@ -86,6 +86,7 @@ Gem::Specification.new do |spec|
|
|
86
86
|
"lib/prism/parse_result/errors.rb",
|
87
87
|
"lib/prism/parse_result/newlines.rb",
|
88
88
|
"lib/prism/pattern.rb",
|
89
|
+
"lib/prism/polyfill/append_as_bytes.rb",
|
89
90
|
"lib/prism/polyfill/byteindex.rb",
|
90
91
|
"lib/prism/polyfill/unpack1.rb",
|
91
92
|
"lib/prism/reflection.rb",
|
@@ -96,6 +97,8 @@ Gem::Specification.new do |spec|
|
|
96
97
|
"lib/prism/translation/parser.rb",
|
97
98
|
"lib/prism/translation/parser33.rb",
|
98
99
|
"lib/prism/translation/parser34.rb",
|
100
|
+
"lib/prism/translation/parser35.rb",
|
101
|
+
"lib/prism/translation/parser/builder.rb",
|
99
102
|
"lib/prism/translation/parser/compiler.rb",
|
100
103
|
"lib/prism/translation/parser/lexer.rb",
|
101
104
|
"lib/prism/translation/ripper.rb",
|
@@ -116,6 +119,7 @@ Gem::Specification.new do |spec|
|
|
116
119
|
"rbi/prism/translation/parser.rbi",
|
117
120
|
"rbi/prism/translation/parser33.rbi",
|
118
121
|
"rbi/prism/translation/parser34.rbi",
|
122
|
+
"rbi/prism/translation/parser35.rbi",
|
119
123
|
"rbi/prism/translation/ripper.rbi",
|
120
124
|
"rbi/prism/visitor.rbi",
|
121
125
|
"sig/prism.rbs",
|
data/rbi/prism/dsl.rbi
CHANGED
@@ -265,7 +265,7 @@ module Prism::DSL
|
|
265
265
|
sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer, opening_loc: Prism::Location, parts: T::Array[T.any(Prism::StringNode, Prism::EmbeddedStatementsNode, Prism::EmbeddedVariableNode)], closing_loc: Prism::Location).returns(Prism::InterpolatedRegularExpressionNode) }
|
266
266
|
def interpolated_regular_expression_node(source: default_source, node_id: 0, location: default_location, flags: 0, opening_loc: location, parts: [], closing_loc: location); end
|
267
267
|
|
268
|
-
sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer, opening_loc: T.nilable(Prism::Location), parts: T::Array[T.any(Prism::StringNode, Prism::EmbeddedStatementsNode, Prism::EmbeddedVariableNode, Prism::InterpolatedStringNode)], closing_loc: T.nilable(Prism::Location)).returns(Prism::InterpolatedStringNode) }
|
268
|
+
sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer, opening_loc: T.nilable(Prism::Location), parts: T::Array[T.any(Prism::StringNode, Prism::EmbeddedStatementsNode, Prism::EmbeddedVariableNode, Prism::InterpolatedStringNode, Prism::XStringNode)], closing_loc: T.nilable(Prism::Location)).returns(Prism::InterpolatedStringNode) }
|
269
269
|
def interpolated_string_node(source: default_source, node_id: 0, location: default_location, flags: 0, opening_loc: nil, parts: [], closing_loc: nil); end
|
270
270
|
|
271
271
|
sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer, opening_loc: T.nilable(Prism::Location), parts: T::Array[T.any(Prism::StringNode, Prism::EmbeddedStatementsNode, Prism::EmbeddedVariableNode)], closing_loc: T.nilable(Prism::Location)).returns(Prism::InterpolatedSymbolNode) }
|
@@ -397,8 +397,8 @@ module Prism::DSL
|
|
397
397
|
sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer, expression: Prism::Node, keyword_loc: Prism::Location, rescue_expression: Prism::Node).returns(Prism::RescueModifierNode) }
|
398
398
|
def rescue_modifier_node(source: default_source, node_id: 0, location: default_location, flags: 0, expression: default_node(source, location), keyword_loc: location, rescue_expression: default_node(source, location)); end
|
399
399
|
|
400
|
-
sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer, keyword_loc: Prism::Location, exceptions: T::Array[Prism::Node], operator_loc: T.nilable(Prism::Location), reference: T.nilable(T.any(Prism::LocalVariableTargetNode, Prism::InstanceVariableTargetNode, Prism::ClassVariableTargetNode, Prism::GlobalVariableTargetNode, Prism::ConstantTargetNode, Prism::ConstantPathTargetNode, Prism::CallTargetNode, Prism::IndexTargetNode, Prism::BackReferenceReadNode, Prism::NumberedReferenceReadNode, Prism::MissingNode)), statements: T.nilable(Prism::StatementsNode), subsequent: T.nilable(Prism::RescueNode)).returns(Prism::RescueNode) }
|
401
|
-
def rescue_node(source: default_source, node_id: 0, location: default_location, flags: 0, keyword_loc: location, exceptions: [], operator_loc: nil, reference: nil, statements: nil, subsequent: nil); end
|
400
|
+
sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer, keyword_loc: Prism::Location, exceptions: T::Array[Prism::Node], operator_loc: T.nilable(Prism::Location), reference: T.nilable(T.any(Prism::LocalVariableTargetNode, Prism::InstanceVariableTargetNode, Prism::ClassVariableTargetNode, Prism::GlobalVariableTargetNode, Prism::ConstantTargetNode, Prism::ConstantPathTargetNode, Prism::CallTargetNode, Prism::IndexTargetNode, Prism::BackReferenceReadNode, Prism::NumberedReferenceReadNode, Prism::MissingNode)), then_keyword_loc: T.nilable(Prism::Location), statements: T.nilable(Prism::StatementsNode), subsequent: T.nilable(Prism::RescueNode)).returns(Prism::RescueNode) }
|
401
|
+
def rescue_node(source: default_source, node_id: 0, location: default_location, flags: 0, keyword_loc: location, exceptions: [], operator_loc: nil, reference: nil, then_keyword_loc: nil, statements: nil, subsequent: nil); end
|
402
402
|
|
403
403
|
sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer, name: T.nilable(Symbol), name_loc: T.nilable(Prism::Location), operator_loc: Prism::Location).returns(Prism::RestParameterNode) }
|
404
404
|
def rest_parameter_node(source: default_source, node_id: 0, location: default_location, flags: 0, name: nil, name_loc: nil, operator_loc: location); end
|
@@ -493,6 +493,9 @@ module Prism::DSL
|
|
493
493
|
sig { params(name: Symbol).returns(Integer) }
|
494
494
|
def parameter_flag(name); end
|
495
495
|
|
496
|
+
sig { params(name: Symbol).returns(Integer) }
|
497
|
+
def parentheses_node_flag(name); end
|
498
|
+
|
496
499
|
sig { params(name: Symbol).returns(Integer) }
|
497
500
|
def range_flag(name); end
|
498
501
|
|
data/rbi/prism/node.rbi
CHANGED
@@ -4919,13 +4919,13 @@ class Prism::InterpolatedStringNode < Prism::Node
|
|
4919
4919
|
sig { returns(T.nilable(Prism::Location)) }
|
4920
4920
|
def opening_loc; end
|
4921
4921
|
|
4922
|
-
sig { returns(T::Array[T.any(Prism::StringNode, Prism::EmbeddedStatementsNode, Prism::EmbeddedVariableNode, Prism::InterpolatedStringNode)]) }
|
4922
|
+
sig { returns(T::Array[T.any(Prism::StringNode, Prism::EmbeddedStatementsNode, Prism::EmbeddedVariableNode, Prism::InterpolatedStringNode, Prism::XStringNode)]) }
|
4923
4923
|
def parts; end
|
4924
4924
|
|
4925
4925
|
sig { returns(T.nilable(Prism::Location)) }
|
4926
4926
|
def closing_loc; end
|
4927
4927
|
|
4928
|
-
sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer, opening_loc: T.nilable(Prism::Location), parts: T::Array[T.any(Prism::StringNode, Prism::EmbeddedStatementsNode, Prism::EmbeddedVariableNode, Prism::InterpolatedStringNode)], closing_loc: T.nilable(Prism::Location)).void }
|
4928
|
+
sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer, opening_loc: T.nilable(Prism::Location), parts: T::Array[T.any(Prism::StringNode, Prism::EmbeddedStatementsNode, Prism::EmbeddedVariableNode, Prism::InterpolatedStringNode, Prism::XStringNode)], closing_loc: T.nilable(Prism::Location)).void }
|
4929
4929
|
def initialize(source, node_id, location, flags, opening_loc, parts, closing_loc); end
|
4930
4930
|
|
4931
4931
|
sig { override.params(visitor: Prism::Visitor).returns(T.untyped) }
|
@@ -4943,7 +4943,7 @@ class Prism::InterpolatedStringNode < Prism::Node
|
|
4943
4943
|
sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) }
|
4944
4944
|
def comment_targets; end
|
4945
4945
|
|
4946
|
-
sig { params(node_id: Integer, location: Prism::Location, flags: Integer, opening_loc: T.nilable(Prism::Location), parts: T::Array[T.any(Prism::StringNode, Prism::EmbeddedStatementsNode, Prism::EmbeddedVariableNode, Prism::InterpolatedStringNode)], closing_loc: T.nilable(Prism::Location)).returns(Prism::InterpolatedStringNode) }
|
4946
|
+
sig { params(node_id: Integer, location: Prism::Location, flags: Integer, opening_loc: T.nilable(Prism::Location), parts: T::Array[T.any(Prism::StringNode, Prism::EmbeddedStatementsNode, Prism::EmbeddedVariableNode, Prism::InterpolatedStringNode, Prism::XStringNode)], closing_loc: T.nilable(Prism::Location)).returns(Prism::InterpolatedStringNode) }
|
4947
4947
|
def copy(node_id: self.node_id, location: self.location, flags: self.flags, opening_loc: self.opening_loc, parts: self.parts, closing_loc: self.closing_loc); end
|
4948
4948
|
|
4949
4949
|
sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) }
|
@@ -6558,6 +6558,9 @@ end
|
|
6558
6558
|
# (10 + 34)
|
6559
6559
|
# ^^^^^^^^^
|
6560
6560
|
class Prism::ParenthesesNode < Prism::Node
|
6561
|
+
sig { returns(T::Boolean) }
|
6562
|
+
def multiple_statements?; end
|
6563
|
+
|
6561
6564
|
sig { returns(T.nilable(Prism::Node)) }
|
6562
6565
|
def body; end
|
6563
6566
|
|
@@ -7291,14 +7294,17 @@ class Prism::RescueNode < Prism::Node
|
|
7291
7294
|
sig { returns(T.nilable(T.any(Prism::LocalVariableTargetNode, Prism::InstanceVariableTargetNode, Prism::ClassVariableTargetNode, Prism::GlobalVariableTargetNode, Prism::ConstantTargetNode, Prism::ConstantPathTargetNode, Prism::CallTargetNode, Prism::IndexTargetNode, Prism::BackReferenceReadNode, Prism::NumberedReferenceReadNode, Prism::MissingNode))) }
|
7292
7295
|
def reference; end
|
7293
7296
|
|
7297
|
+
sig { returns(T.nilable(Prism::Location)) }
|
7298
|
+
def then_keyword_loc; end
|
7299
|
+
|
7294
7300
|
sig { returns(T.nilable(Prism::StatementsNode)) }
|
7295
7301
|
def statements; end
|
7296
7302
|
|
7297
7303
|
sig { returns(T.nilable(Prism::RescueNode)) }
|
7298
7304
|
def subsequent; end
|
7299
7305
|
|
7300
|
-
sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer, keyword_loc: Prism::Location, exceptions: T::Array[Prism::Node], operator_loc: T.nilable(Prism::Location), reference: T.nilable(T.any(Prism::LocalVariableTargetNode, Prism::InstanceVariableTargetNode, Prism::ClassVariableTargetNode, Prism::GlobalVariableTargetNode, Prism::ConstantTargetNode, Prism::ConstantPathTargetNode, Prism::CallTargetNode, Prism::IndexTargetNode, Prism::BackReferenceReadNode, Prism::NumberedReferenceReadNode, Prism::MissingNode)), statements: T.nilable(Prism::StatementsNode), subsequent: T.nilable(Prism::RescueNode)).void }
|
7301
|
-
def initialize(source, node_id, location, flags, keyword_loc, exceptions, operator_loc, reference, statements, subsequent); end
|
7306
|
+
sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer, keyword_loc: Prism::Location, exceptions: T::Array[Prism::Node], operator_loc: T.nilable(Prism::Location), reference: T.nilable(T.any(Prism::LocalVariableTargetNode, Prism::InstanceVariableTargetNode, Prism::ClassVariableTargetNode, Prism::GlobalVariableTargetNode, Prism::ConstantTargetNode, Prism::ConstantPathTargetNode, Prism::CallTargetNode, Prism::IndexTargetNode, Prism::BackReferenceReadNode, Prism::NumberedReferenceReadNode, Prism::MissingNode)), then_keyword_loc: T.nilable(Prism::Location), statements: T.nilable(Prism::StatementsNode), subsequent: T.nilable(Prism::RescueNode)).void }
|
7307
|
+
def initialize(source, node_id, location, flags, keyword_loc, exceptions, operator_loc, reference, then_keyword_loc, statements, subsequent); end
|
7302
7308
|
|
7303
7309
|
sig { override.params(visitor: Prism::Visitor).returns(T.untyped) }
|
7304
7310
|
def accept(visitor); end
|
@@ -7315,8 +7321,8 @@ class Prism::RescueNode < Prism::Node
|
|
7315
7321
|
sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) }
|
7316
7322
|
def comment_targets; end
|
7317
7323
|
|
7318
|
-
sig { params(node_id: Integer, location: Prism::Location, flags: Integer, keyword_loc: Prism::Location, exceptions: T::Array[Prism::Node], operator_loc: T.nilable(Prism::Location), reference: T.nilable(T.any(Prism::LocalVariableTargetNode, Prism::InstanceVariableTargetNode, Prism::ClassVariableTargetNode, Prism::GlobalVariableTargetNode, Prism::ConstantTargetNode, Prism::ConstantPathTargetNode, Prism::CallTargetNode, Prism::IndexTargetNode, Prism::BackReferenceReadNode, Prism::NumberedReferenceReadNode, Prism::MissingNode)), statements: T.nilable(Prism::StatementsNode), subsequent: T.nilable(Prism::RescueNode)).returns(Prism::RescueNode) }
|
7319
|
-
def copy(node_id: self.node_id, location: self.location, flags: self.flags, keyword_loc: self.keyword_loc, exceptions: self.exceptions, operator_loc: self.operator_loc, reference: self.reference, statements: self.statements, subsequent: self.subsequent); end
|
7324
|
+
sig { params(node_id: Integer, location: Prism::Location, flags: Integer, keyword_loc: Prism::Location, exceptions: T::Array[Prism::Node], operator_loc: T.nilable(Prism::Location), reference: T.nilable(T.any(Prism::LocalVariableTargetNode, Prism::InstanceVariableTargetNode, Prism::ClassVariableTargetNode, Prism::GlobalVariableTargetNode, Prism::ConstantTargetNode, Prism::ConstantPathTargetNode, Prism::CallTargetNode, Prism::IndexTargetNode, Prism::BackReferenceReadNode, Prism::NumberedReferenceReadNode, Prism::MissingNode)), then_keyword_loc: T.nilable(Prism::Location), statements: T.nilable(Prism::StatementsNode), subsequent: T.nilable(Prism::RescueNode)).returns(Prism::RescueNode) }
|
7325
|
+
def copy(node_id: self.node_id, location: self.location, flags: self.flags, keyword_loc: self.keyword_loc, exceptions: self.exceptions, operator_loc: self.operator_loc, reference: self.reference, then_keyword_loc: self.then_keyword_loc, statements: self.statements, subsequent: self.subsequent); end
|
7320
7326
|
|
7321
7327
|
sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) }
|
7322
7328
|
def deconstruct_keys(keys); end
|
@@ -7327,6 +7333,9 @@ class Prism::RescueNode < Prism::Node
|
|
7327
7333
|
sig { returns(T.nilable(String)) }
|
7328
7334
|
def operator; end
|
7329
7335
|
|
7336
|
+
sig { returns(T.nilable(String)) }
|
7337
|
+
def then_keyword; end
|
7338
|
+
|
7330
7339
|
sig { override.returns(T::Array[Prism::Reflection::Field]) }
|
7331
7340
|
def fields; end
|
7332
7341
|
|
@@ -8631,6 +8640,12 @@ module Prism::ParameterFlags
|
|
8631
8640
|
REPEATED_PARAMETER = T.let(1 << 2, Integer)
|
8632
8641
|
end
|
8633
8642
|
|
8643
|
+
# Flags for parentheses nodes.
|
8644
|
+
module Prism::ParenthesesNodeFlags
|
8645
|
+
# parentheses that contain multiple potentially void statements
|
8646
|
+
MULTIPLE_STATEMENTS = T.let(1 << 2, Integer)
|
8647
|
+
end
|
8648
|
+
|
8634
8649
|
# Flags for range and flip-flop nodes.
|
8635
8650
|
module Prism::RangeFlags
|
8636
8651
|
# ... operator
|
data/rbi/prism/parse_result.rbi
CHANGED
@@ -13,6 +13,12 @@ class Prism::Source
|
|
13
13
|
sig { params(source: String, start_line: Integer, offsets: T::Array[Integer]).void }
|
14
14
|
def initialize(source, start_line = 1, offsets = []); end
|
15
15
|
|
16
|
+
sig { params(start_line: Integer).void }
|
17
|
+
def replace_start_line(start_line); end
|
18
|
+
|
19
|
+
sig { params(offsets: T::Array[Integer]).void }
|
20
|
+
def replace_offsets(offsets); end
|
21
|
+
|
16
22
|
sig { returns(Encoding) }
|
17
23
|
def encoding; end
|
18
24
|
|
@@ -385,3 +391,14 @@ class Prism::Token
|
|
385
391
|
sig { params(other: T.untyped).returns(T::Boolean) }
|
386
392
|
def ==(other); end
|
387
393
|
end
|
394
|
+
|
395
|
+
class Prism::Scope
|
396
|
+
sig { returns(T::Array[Symbol]) }
|
397
|
+
def locals; end
|
398
|
+
|
399
|
+
sig { returns(T::Array[Symbol]) }
|
400
|
+
def forwarding; end
|
401
|
+
|
402
|
+
sig { params(locals: T::Array[Symbol], forwarding: T::Array[Symbol]).void }
|
403
|
+
def initialize(locals, forwarding); end
|
404
|
+
end
|
data/rbi/prism.rbi
CHANGED
@@ -1,17 +1,17 @@
|
|
1
1
|
# typed: strict
|
2
2
|
|
3
3
|
module Prism
|
4
|
-
sig { params(source: String, command_line: T.nilable(String), encoding: T.nilable(T.any(FalseClass, Encoding)), filepath: T.nilable(String), frozen_string_literal: T.nilable(T::Boolean), line: T.nilable(Integer), main_script: T.nilable(T::Boolean), partial_script: T.nilable(T::Boolean), scopes: T.nilable(T::Array[T::Array[Symbol]]), version: T.nilable(String)).returns(String) }
|
5
|
-
def self.dump(source, command_line: nil, encoding: nil, filepath: nil, frozen_string_literal: nil, line: nil, main_script: nil, partial_script: nil, scopes: nil, version: nil); end
|
4
|
+
sig { params(source: String, command_line: T.nilable(String), encoding: T.nilable(T.any(FalseClass, Encoding)), filepath: T.nilable(String), freeze: T.nilable(T::Boolean), frozen_string_literal: T.nilable(T::Boolean), line: T.nilable(Integer), main_script: T.nilable(T::Boolean), partial_script: T.nilable(T::Boolean), scopes: T.nilable(T::Array[T::Array[Symbol]]), version: T.nilable(String)).returns(String) }
|
5
|
+
def self.dump(source, command_line: nil, encoding: nil, filepath: nil, freeze: nil, frozen_string_literal: nil, line: nil, main_script: nil, partial_script: nil, scopes: nil, version: nil); end
|
6
6
|
|
7
|
-
sig { params(filepath: String, command_line: T.nilable(String), encoding: T.nilable(T.any(FalseClass, Encoding)), frozen_string_literal: T.nilable(T::Boolean), line: T.nilable(Integer), main_script: T.nilable(T::Boolean), partial_script: T.nilable(T::Boolean), scopes: T.nilable(T::Array[T::Array[Symbol]]), version: T.nilable(String)).returns(String) }
|
8
|
-
def self.dump_file(filepath, command_line: nil, encoding: nil, frozen_string_literal: nil, line: nil, main_script: nil, partial_script: nil, scopes: nil, version: nil); end
|
7
|
+
sig { params(filepath: String, command_line: T.nilable(String), encoding: T.nilable(T.any(FalseClass, Encoding)), freeze: T.nilable(T::Boolean), frozen_string_literal: T.nilable(T::Boolean), line: T.nilable(Integer), main_script: T.nilable(T::Boolean), partial_script: T.nilable(T::Boolean), scopes: T.nilable(T::Array[T::Array[Symbol]]), version: T.nilable(String)).returns(String) }
|
8
|
+
def self.dump_file(filepath, command_line: nil, encoding: nil, freeze: nil, frozen_string_literal: nil, line: nil, main_script: nil, partial_script: nil, scopes: nil, version: nil); end
|
9
9
|
|
10
|
-
sig { params(source: String, command_line: T.nilable(String), encoding: T.nilable(T.any(FalseClass, Encoding)), filepath: T.nilable(String), frozen_string_literal: T.nilable(T::Boolean), line: T.nilable(Integer), main_script: T.nilable(T::Boolean), partial_script: T.nilable(T::Boolean), scopes: T.nilable(T::Array[T::Array[Symbol]]), version: T.nilable(String)).returns(Prism::LexResult) }
|
11
|
-
def self.lex(source, command_line: nil, encoding: nil, filepath: nil, frozen_string_literal: nil, line: nil, main_script: nil, partial_script: nil, scopes: nil, version: nil); end
|
10
|
+
sig { params(source: String, command_line: T.nilable(String), encoding: T.nilable(T.any(FalseClass, Encoding)), filepath: T.nilable(String), freeze: T.nilable(T::Boolean), frozen_string_literal: T.nilable(T::Boolean), line: T.nilable(Integer), main_script: T.nilable(T::Boolean), partial_script: T.nilable(T::Boolean), scopes: T.nilable(T::Array[T::Array[Symbol]]), version: T.nilable(String)).returns(Prism::LexResult) }
|
11
|
+
def self.lex(source, command_line: nil, encoding: nil, filepath: nil, freeze: nil, frozen_string_literal: nil, line: nil, main_script: nil, partial_script: nil, scopes: nil, version: nil); end
|
12
12
|
|
13
|
-
sig { params(filepath: String, command_line: T.nilable(String), encoding: T.nilable(T.any(FalseClass, Encoding)), frozen_string_literal: T.nilable(T::Boolean), line: T.nilable(Integer), main_script: T.nilable(T::Boolean), partial_script: T.nilable(T::Boolean), scopes: T.nilable(T::Array[T::Array[Symbol]]), version: T.nilable(String)).returns(Prism::LexResult) }
|
14
|
-
def self.lex_file(filepath, command_line: nil, encoding: nil, frozen_string_literal: nil, line: nil, main_script: nil, partial_script: nil, scopes: nil, version: nil); end
|
13
|
+
sig { params(filepath: String, command_line: T.nilable(String), encoding: T.nilable(T.any(FalseClass, Encoding)), freeze: T.nilable(T::Boolean), frozen_string_literal: T.nilable(T::Boolean), line: T.nilable(Integer), main_script: T.nilable(T::Boolean), partial_script: T.nilable(T::Boolean), scopes: T.nilable(T::Array[T::Array[Symbol]]), version: T.nilable(String)).returns(Prism::LexResult) }
|
14
|
+
def self.lex_file(filepath, command_line: nil, encoding: nil, freeze: nil, frozen_string_literal: nil, line: nil, main_script: nil, partial_script: nil, scopes: nil, version: nil); end
|
15
15
|
|
16
16
|
sig { params(source: String, options: T::Hash[Symbol, T.untyped]).returns(Prism::LexCompat::Result) }
|
17
17
|
def self.lex_compat(source, **options); end
|
@@ -19,45 +19,48 @@ module Prism
|
|
19
19
|
sig { params(source: String).returns(T::Array[T.untyped]) }
|
20
20
|
def self.lex_ripper(source); end
|
21
21
|
|
22
|
-
sig { params(source: String, serialized: String).returns(Prism::ParseResult) }
|
23
|
-
def self.load(source, serialized); end
|
22
|
+
sig { params(source: String, serialized: String, freeze: T.nilable(T::Boolean)).returns(Prism::ParseResult) }
|
23
|
+
def self.load(source, serialized, freeze = false); end
|
24
24
|
|
25
|
-
sig { params(source: String, command_line: T.nilable(String), encoding: T.nilable(T.any(FalseClass, Encoding)), filepath: T.nilable(String), frozen_string_literal: T.nilable(T::Boolean), line: T.nilable(Integer), main_script: T.nilable(T::Boolean), partial_script: T.nilable(T::Boolean), scopes: T.nilable(T::Array[T::Array[Symbol]]), version: T.nilable(String)).returns(Prism::ParseResult) }
|
26
|
-
def self.parse(source, command_line: nil, encoding: nil, filepath: nil, frozen_string_literal: nil, line: nil, main_script: nil, partial_script: nil, scopes: nil, version: nil); end
|
25
|
+
sig { params(source: String, command_line: T.nilable(String), encoding: T.nilable(T.any(FalseClass, Encoding)), filepath: T.nilable(String), freeze: T.nilable(T::Boolean), frozen_string_literal: T.nilable(T::Boolean), line: T.nilable(Integer), main_script: T.nilable(T::Boolean), partial_script: T.nilable(T::Boolean), scopes: T.nilable(T::Array[T::Array[Symbol]]), version: T.nilable(String)).returns(Prism::ParseResult) }
|
26
|
+
def self.parse(source, command_line: nil, encoding: nil, filepath: nil, freeze: nil, frozen_string_literal: nil, line: nil, main_script: nil, partial_script: nil, scopes: nil, version: nil); end
|
27
27
|
|
28
|
-
sig { params(filepath: String, command_line: T.nilable(String), encoding: T.nilable(T.any(FalseClass, Encoding)), frozen_string_literal: T.nilable(T::Boolean), line: T.nilable(Integer), main_script: T.nilable(T::Boolean), partial_script: T.nilable(T::Boolean), scopes: T.nilable(T::Array[T::Array[Symbol]]), version: T.nilable(String)).returns(Prism::ParseResult) }
|
29
|
-
def self.parse_file(filepath, command_line: nil, encoding: nil, frozen_string_literal: nil, line: nil, main_script: nil, partial_script: nil, scopes: nil, version: nil); end
|
28
|
+
sig { params(filepath: String, command_line: T.nilable(String), encoding: T.nilable(T.any(FalseClass, Encoding)), freeze: T.nilable(T::Boolean), frozen_string_literal: T.nilable(T::Boolean), line: T.nilable(Integer), main_script: T.nilable(T::Boolean), partial_script: T.nilable(T::Boolean), scopes: T.nilable(T::Array[T::Array[Symbol]]), version: T.nilable(String)).returns(Prism::ParseResult) }
|
29
|
+
def self.parse_file(filepath, command_line: nil, encoding: nil, freeze: nil, frozen_string_literal: nil, line: nil, main_script: nil, partial_script: nil, scopes: nil, version: nil); end
|
30
30
|
|
31
|
-
sig { params(source: String, command_line: T.nilable(String), encoding: T.nilable(T.any(FalseClass, Encoding)), filepath: T.nilable(String), frozen_string_literal: T.nilable(T::Boolean), line: T.nilable(Integer), main_script: T.nilable(T::Boolean), partial_script: T.nilable(T::Boolean), scopes: T.nilable(T::Array[T::Array[Symbol]]), version: T.nilable(String)).void }
|
32
|
-
def self.profile(source, command_line: nil, encoding: nil, filepath: nil, frozen_string_literal: nil, line: nil, main_script: nil, partial_script: nil, scopes: nil, version: nil); end
|
31
|
+
sig { params(source: String, command_line: T.nilable(String), encoding: T.nilable(T.any(FalseClass, Encoding)), filepath: T.nilable(String), freeze: T.nilable(T::Boolean), frozen_string_literal: T.nilable(T::Boolean), line: T.nilable(Integer), main_script: T.nilable(T::Boolean), partial_script: T.nilable(T::Boolean), scopes: T.nilable(T::Array[T::Array[Symbol]]), version: T.nilable(String)).void }
|
32
|
+
def self.profile(source, command_line: nil, encoding: nil, filepath: nil, freeze: nil, frozen_string_literal: nil, line: nil, main_script: nil, partial_script: nil, scopes: nil, version: nil); end
|
33
33
|
|
34
|
-
sig { params(filepath: String, command_line: T.nilable(String), encoding: T.nilable(T.any(FalseClass, Encoding)), frozen_string_literal: T.nilable(T::Boolean), line: T.nilable(Integer), main_script: T.nilable(T::Boolean), partial_script: T.nilable(T::Boolean), scopes: T.nilable(T::Array[T::Array[Symbol]]), version: T.nilable(String)).void }
|
35
|
-
def self.profile_file(filepath, command_line: nil, encoding: nil, frozen_string_literal: nil, line: nil, main_script: nil, partial_script: nil, scopes: nil, version: nil); end
|
34
|
+
sig { params(filepath: String, command_line: T.nilable(String), encoding: T.nilable(T.any(FalseClass, Encoding)), freeze: T.nilable(T::Boolean), frozen_string_literal: T.nilable(T::Boolean), line: T.nilable(Integer), main_script: T.nilable(T::Boolean), partial_script: T.nilable(T::Boolean), scopes: T.nilable(T::Array[T::Array[Symbol]]), version: T.nilable(String)).void }
|
35
|
+
def self.profile_file(filepath, command_line: nil, encoding: nil, freeze: nil, frozen_string_literal: nil, line: nil, main_script: nil, partial_script: nil, scopes: nil, version: nil); end
|
36
36
|
|
37
|
-
sig { params(stream: T.any(IO, StringIO), command_line: T.nilable(String), encoding: T.nilable(T.any(FalseClass, Encoding)), filepath: T.nilable(String), frozen_string_literal: T.nilable(T::Boolean), line: T.nilable(Integer), main_script: T.nilable(T::Boolean), partial_script: T.nilable(T::Boolean), scopes: T.nilable(T::Array[T::Array[Symbol]]), version: T.nilable(String)).returns(Prism::ParseResult) }
|
38
|
-
def self.parse_stream(stream, command_line: nil, encoding: nil, filepath: nil, frozen_string_literal: nil, line: nil, main_script: nil, partial_script: nil, scopes: nil, version: nil); end
|
37
|
+
sig { params(stream: T.any(IO, StringIO), command_line: T.nilable(String), encoding: T.nilable(T.any(FalseClass, Encoding)), filepath: T.nilable(String), freeze: T.nilable(T::Boolean), frozen_string_literal: T.nilable(T::Boolean), line: T.nilable(Integer), main_script: T.nilable(T::Boolean), partial_script: T.nilable(T::Boolean), scopes: T.nilable(T::Array[T::Array[Symbol]]), version: T.nilable(String)).returns(Prism::ParseResult) }
|
38
|
+
def self.parse_stream(stream, command_line: nil, encoding: nil, filepath: nil, freeze: nil, frozen_string_literal: nil, line: nil, main_script: nil, partial_script: nil, scopes: nil, version: nil); end
|
39
39
|
|
40
|
-
sig { params(source: String, command_line: T.nilable(String), encoding: T.nilable(T.any(String, Encoding)), filepath: T.nilable(String), frozen_string_literal: T.nilable(T::Boolean), line: T.nilable(Integer), main_script: T.nilable(T::Boolean), partial_script: T.nilable(T::Boolean), scopes: T.nilable(T::Array[T::Array[Symbol]]), version: T.nilable(String)).returns(T::Array[Prism::Comment]) }
|
41
|
-
def self.parse_comments(source, command_line: nil, encoding: nil, filepath: nil, frozen_string_literal: nil, line: nil, main_script: nil, partial_script: nil, scopes: nil, version: nil); end
|
40
|
+
sig { params(source: String, command_line: T.nilable(String), encoding: T.nilable(T.any(String, Encoding)), filepath: T.nilable(String), freeze: T.nilable(T::Boolean), frozen_string_literal: T.nilable(T::Boolean), line: T.nilable(Integer), main_script: T.nilable(T::Boolean), partial_script: T.nilable(T::Boolean), scopes: T.nilable(T::Array[T::Array[Symbol]]), version: T.nilable(String)).returns(T::Array[Prism::Comment]) }
|
41
|
+
def self.parse_comments(source, command_line: nil, encoding: nil, filepath: nil, freeze: nil, frozen_string_literal: nil, line: nil, main_script: nil, partial_script: nil, scopes: nil, version: nil); end
|
42
42
|
|
43
|
-
sig { params(filepath: String, command_line: T.nilable(String), encoding: T.nilable(T.any(FalseClass, Encoding)), frozen_string_literal: T.nilable(T::Boolean), line: T.nilable(Integer), main_script: T.nilable(T::Boolean), partial_script: T.nilable(T::Boolean), scopes: T.nilable(T::Array[T::Array[Symbol]]), version: T.nilable(String)).returns(T::Array[Prism::Comment]) }
|
44
|
-
def self.parse_file_comments(filepath, command_line: nil, encoding: nil, frozen_string_literal: nil, line: nil, main_script: nil, partial_script: nil, scopes: nil, version: nil); end
|
43
|
+
sig { params(filepath: String, command_line: T.nilable(String), encoding: T.nilable(T.any(FalseClass, Encoding)), freeze: T.nilable(T::Boolean), frozen_string_literal: T.nilable(T::Boolean), line: T.nilable(Integer), main_script: T.nilable(T::Boolean), partial_script: T.nilable(T::Boolean), scopes: T.nilable(T::Array[T::Array[Symbol]]), version: T.nilable(String)).returns(T::Array[Prism::Comment]) }
|
44
|
+
def self.parse_file_comments(filepath, command_line: nil, encoding: nil, freeze: nil, frozen_string_literal: nil, line: nil, main_script: nil, partial_script: nil, scopes: nil, version: nil); end
|
45
45
|
|
46
|
-
sig { params(source: String, command_line: T.nilable(String), encoding: T.nilable(T.any(FalseClass, Encoding)), filepath: T.nilable(String), frozen_string_literal: T.nilable(T::Boolean), line: T.nilable(Integer), main_script: T.nilable(T::Boolean), partial_script: T.nilable(T::Boolean), scopes: T.nilable(T::Array[T::Array[Symbol]]), version: T.nilable(String)).returns(Prism::ParseLexResult) }
|
47
|
-
def self.parse_lex(source, command_line: nil, encoding: nil, filepath: nil, frozen_string_literal: nil, line: nil, main_script: nil, partial_script: nil, scopes: nil, version: nil); end
|
46
|
+
sig { params(source: String, command_line: T.nilable(String), encoding: T.nilable(T.any(FalseClass, Encoding)), filepath: T.nilable(String), freeze: T.nilable(T::Boolean), frozen_string_literal: T.nilable(T::Boolean), line: T.nilable(Integer), main_script: T.nilable(T::Boolean), partial_script: T.nilable(T::Boolean), scopes: T.nilable(T::Array[T::Array[Symbol]]), version: T.nilable(String)).returns(Prism::ParseLexResult) }
|
47
|
+
def self.parse_lex(source, command_line: nil, encoding: nil, filepath: nil, freeze: nil, frozen_string_literal: nil, line: nil, main_script: nil, partial_script: nil, scopes: nil, version: nil); end
|
48
48
|
|
49
|
-
sig { params(filepath: String, command_line: T.nilable(String), encoding: T.nilable(T.any(FalseClass, Encoding)), frozen_string_literal: T.nilable(T::Boolean), line: T.nilable(Integer), main_script: T.nilable(T::Boolean), partial_script: T.nilable(T::Boolean), scopes: T.nilable(T::Array[T::Array[Symbol]]), version: T.nilable(String)).returns(Prism::ParseLexResult) }
|
50
|
-
def self.parse_lex_file(filepath, command_line: nil, encoding: nil, frozen_string_literal: nil, line: nil, main_script: nil, partial_script: nil, scopes: nil, version: nil); end
|
49
|
+
sig { params(filepath: String, command_line: T.nilable(String), encoding: T.nilable(T.any(FalseClass, Encoding)), freeze: T.nilable(T::Boolean), frozen_string_literal: T.nilable(T::Boolean), line: T.nilable(Integer), main_script: T.nilable(T::Boolean), partial_script: T.nilable(T::Boolean), scopes: T.nilable(T::Array[T::Array[Symbol]]), version: T.nilable(String)).returns(Prism::ParseLexResult) }
|
50
|
+
def self.parse_lex_file(filepath, command_line: nil, encoding: nil, freeze: nil, frozen_string_literal: nil, line: nil, main_script: nil, partial_script: nil, scopes: nil, version: nil); end
|
51
51
|
|
52
|
-
sig { params(source: String, command_line: T.nilable(String), encoding: T.nilable(T.any(FalseClass, Encoding)), filepath: T.nilable(String), frozen_string_literal: T.nilable(T::Boolean), line: T.nilable(Integer), main_script: T.nilable(T::Boolean), partial_script: T.nilable(T::Boolean), scopes: T.nilable(T::Array[T::Array[Symbol]]), version: T.nilable(String)).returns(T::Boolean) }
|
53
|
-
def self.parse_success?(source, command_line: nil, encoding: nil, filepath: nil, frozen_string_literal: nil, line: nil, main_script: nil, partial_script: nil, scopes: nil, version: nil); end
|
52
|
+
sig { params(source: String, command_line: T.nilable(String), encoding: T.nilable(T.any(FalseClass, Encoding)), filepath: T.nilable(String), freeze: T.nilable(T::Boolean), frozen_string_literal: T.nilable(T::Boolean), line: T.nilable(Integer), main_script: T.nilable(T::Boolean), partial_script: T.nilable(T::Boolean), scopes: T.nilable(T::Array[T::Array[Symbol]]), version: T.nilable(String)).returns(T::Boolean) }
|
53
|
+
def self.parse_success?(source, command_line: nil, encoding: nil, filepath: nil, freeze: nil, frozen_string_literal: nil, line: nil, main_script: nil, partial_script: nil, scopes: nil, version: nil); end
|
54
54
|
|
55
|
-
sig { params(source: String, command_line: T.nilable(String), encoding: T.nilable(T.any(FalseClass, Encoding)), filepath: T.nilable(String), frozen_string_literal: T.nilable(T::Boolean), line: T.nilable(Integer), main_script: T.nilable(T::Boolean), partial_script: T.nilable(T::Boolean), scopes: T.nilable(T::Array[T::Array[Symbol]]), version: T.nilable(String)).returns(T::Boolean) }
|
56
|
-
def self.parse_failure?(source, command_line: nil, encoding: nil, filepath: nil, frozen_string_literal: nil, line: nil, main_script: nil, partial_script: nil, scopes: nil, version: nil); end
|
55
|
+
sig { params(source: String, command_line: T.nilable(String), encoding: T.nilable(T.any(FalseClass, Encoding)), filepath: T.nilable(String), freeze: T.nilable(T::Boolean), frozen_string_literal: T.nilable(T::Boolean), line: T.nilable(Integer), main_script: T.nilable(T::Boolean), partial_script: T.nilable(T::Boolean), scopes: T.nilable(T::Array[T::Array[Symbol]]), version: T.nilable(String)).returns(T::Boolean) }
|
56
|
+
def self.parse_failure?(source, command_line: nil, encoding: nil, filepath: nil, freeze: nil, frozen_string_literal: nil, line: nil, main_script: nil, partial_script: nil, scopes: nil, version: nil); end
|
57
57
|
|
58
|
-
sig { params(filepath: String, command_line: T.nilable(String), encoding: T.nilable(T.any(FalseClass, Encoding)), frozen_string_literal: T.nilable(T::Boolean), line: T.nilable(Integer), main_script: T.nilable(T::Boolean), partial_script: T.nilable(T::Boolean), scopes: T.nilable(T::Array[T::Array[Symbol]]), version: T.nilable(String)).returns(T::Boolean) }
|
59
|
-
def self.parse_file_success?(filepath, command_line: nil, encoding: nil, frozen_string_literal: nil, line: nil, main_script: nil, partial_script: nil, scopes: nil, version: nil); end
|
58
|
+
sig { params(filepath: String, command_line: T.nilable(String), encoding: T.nilable(T.any(FalseClass, Encoding)), freeze: T.nilable(T::Boolean), frozen_string_literal: T.nilable(T::Boolean), line: T.nilable(Integer), main_script: T.nilable(T::Boolean), partial_script: T.nilable(T::Boolean), scopes: T.nilable(T::Array[T::Array[Symbol]]), version: T.nilable(String)).returns(T::Boolean) }
|
59
|
+
def self.parse_file_success?(filepath, command_line: nil, encoding: nil, freeze: nil, frozen_string_literal: nil, line: nil, main_script: nil, partial_script: nil, scopes: nil, version: nil); end
|
60
60
|
|
61
|
-
sig { params(filepath: String, command_line: T.nilable(String), encoding: T.nilable(T.any(FalseClass, Encoding)), frozen_string_literal: T.nilable(T::Boolean), line: T.nilable(Integer), main_script: T.nilable(T::Boolean), partial_script: T.nilable(T::Boolean), scopes: T.nilable(T::Array[T::Array[Symbol]]), version: T.nilable(String)).returns(T::Boolean) }
|
62
|
-
def self.parse_file_failure?(filepath, command_line: nil, encoding: nil, frozen_string_literal: nil, line: nil, main_script: nil, partial_script: nil, scopes: nil, version: nil); end
|
61
|
+
sig { params(filepath: String, command_line: T.nilable(String), encoding: T.nilable(T.any(FalseClass, Encoding)), freeze: T.nilable(T::Boolean), frozen_string_literal: T.nilable(T::Boolean), line: T.nilable(Integer), main_script: T.nilable(T::Boolean), partial_script: T.nilable(T::Boolean), scopes: T.nilable(T::Array[T::Array[Symbol]]), version: T.nilable(String)).returns(T::Boolean) }
|
62
|
+
def self.parse_file_failure?(filepath, command_line: nil, encoding: nil, freeze: nil, frozen_string_literal: nil, line: nil, main_script: nil, partial_script: nil, scopes: nil, version: nil); end
|
63
|
+
|
64
|
+
sig { params(locals: T::Array[Symbol], forwarding: T::Array[Symbol]).returns(Prism::Scope) }
|
65
|
+
def self.scope(locals: [], forwarding: []); end
|
63
66
|
end
|
data/sig/prism/dsl.rbs
CHANGED
@@ -176,7 +176,7 @@ module Prism
|
|
176
176
|
|
177
177
|
def interpolated_regular_expression_node: (?source: Source, ?node_id: Integer, ?location: Location, ?flags: Integer, ?opening_loc: Location, ?parts: Array[StringNode | EmbeddedStatementsNode | EmbeddedVariableNode], ?closing_loc: Location) -> InterpolatedRegularExpressionNode
|
178
178
|
|
179
|
-
def interpolated_string_node: (?source: Source, ?node_id: Integer, ?location: Location, ?flags: Integer, ?opening_loc: Location?, ?parts: Array[StringNode | EmbeddedStatementsNode | EmbeddedVariableNode | InterpolatedStringNode], ?closing_loc: Location?) -> InterpolatedStringNode
|
179
|
+
def interpolated_string_node: (?source: Source, ?node_id: Integer, ?location: Location, ?flags: Integer, ?opening_loc: Location?, ?parts: Array[StringNode | EmbeddedStatementsNode | EmbeddedVariableNode | InterpolatedStringNode | XStringNode], ?closing_loc: Location?) -> InterpolatedStringNode
|
180
180
|
|
181
181
|
def interpolated_symbol_node: (?source: Source, ?node_id: Integer, ?location: Location, ?flags: Integer, ?opening_loc: Location?, ?parts: Array[StringNode | EmbeddedStatementsNode | EmbeddedVariableNode], ?closing_loc: Location?) -> InterpolatedSymbolNode
|
182
182
|
|
@@ -264,7 +264,7 @@ module Prism
|
|
264
264
|
|
265
265
|
def rescue_modifier_node: (?source: Source, ?node_id: Integer, ?location: Location, ?flags: Integer, ?expression: Prism::node, ?keyword_loc: Location, ?rescue_expression: Prism::node) -> RescueModifierNode
|
266
266
|
|
267
|
-
def rescue_node: (?source: Source, ?node_id: Integer, ?location: Location, ?flags: Integer, ?keyword_loc: Location, ?exceptions: Array[Prism::node], ?operator_loc: Location?, ?reference: LocalVariableTargetNode | InstanceVariableTargetNode | ClassVariableTargetNode | GlobalVariableTargetNode | ConstantTargetNode | ConstantPathTargetNode | CallTargetNode | IndexTargetNode | BackReferenceReadNode | NumberedReferenceReadNode | MissingNode | nil, ?statements: StatementsNode?, ?subsequent: RescueNode?) -> RescueNode
|
267
|
+
def rescue_node: (?source: Source, ?node_id: Integer, ?location: Location, ?flags: Integer, ?keyword_loc: Location, ?exceptions: Array[Prism::node], ?operator_loc: Location?, ?reference: LocalVariableTargetNode | InstanceVariableTargetNode | ClassVariableTargetNode | GlobalVariableTargetNode | ConstantTargetNode | ConstantPathTargetNode | CallTargetNode | IndexTargetNode | BackReferenceReadNode | NumberedReferenceReadNode | MissingNode | nil, ?then_keyword_loc: Location?, ?statements: StatementsNode?, ?subsequent: RescueNode?) -> RescueNode
|
268
268
|
|
269
269
|
def rest_parameter_node: (?source: Source, ?node_id: Integer, ?location: Location, ?flags: Integer, ?name: Symbol?, ?name_loc: Location?, ?operator_loc: Location) -> RestParameterNode
|
270
270
|
|
@@ -328,6 +328,8 @@ module Prism
|
|
328
328
|
|
329
329
|
def parameter_flag: (Symbol name) -> Integer
|
330
330
|
|
331
|
+
def parentheses_node_flag: (Symbol name) -> Integer
|
332
|
+
|
331
333
|
def range_flag: (Symbol name) -> Integer
|
332
334
|
|
333
335
|
def regular_expression_flag: (Symbol name) -> Integer
|
data/sig/prism/node.rbs
CHANGED
@@ -2003,12 +2003,12 @@ module Prism
|
|
2003
2003
|
def mutable?: () -> bool
|
2004
2004
|
|
2005
2005
|
attr_reader opening_loc: Location?
|
2006
|
-
attr_reader parts: Array[StringNode | EmbeddedStatementsNode | EmbeddedVariableNode | InterpolatedStringNode]
|
2006
|
+
attr_reader parts: Array[StringNode | EmbeddedStatementsNode | EmbeddedVariableNode | InterpolatedStringNode | XStringNode]
|
2007
2007
|
attr_reader closing_loc: Location?
|
2008
2008
|
|
2009
|
-
def initialize: (Source source, Integer node_id, Location location, Integer flags, Location? opening_loc, Array[StringNode | EmbeddedStatementsNode | EmbeddedVariableNode | InterpolatedStringNode] parts, Location? closing_loc) -> void
|
2010
|
-
def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?opening_loc: Location?, ?parts: Array[StringNode | EmbeddedStatementsNode | EmbeddedVariableNode | InterpolatedStringNode], ?closing_loc: Location?) -> InterpolatedStringNode
|
2011
|
-
def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, opening_loc: Location?, parts: Array[StringNode | EmbeddedStatementsNode | EmbeddedVariableNode | InterpolatedStringNode], closing_loc: Location? }
|
2009
|
+
def initialize: (Source source, Integer node_id, Location location, Integer flags, Location? opening_loc, Array[StringNode | EmbeddedStatementsNode | EmbeddedVariableNode | InterpolatedStringNode | XStringNode] parts, Location? closing_loc) -> void
|
2010
|
+
def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?opening_loc: Location?, ?parts: Array[StringNode | EmbeddedStatementsNode | EmbeddedVariableNode | InterpolatedStringNode | XStringNode], ?closing_loc: Location?) -> InterpolatedStringNode
|
2011
|
+
def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, opening_loc: Location?, parts: Array[StringNode | EmbeddedStatementsNode | EmbeddedVariableNode | InterpolatedStringNode | XStringNode], closing_loc: Location? }
|
2012
2012
|
def opening: () -> String?
|
2013
2013
|
def closing: () -> String?
|
2014
2014
|
def type: () -> :interpolated_string_node
|
@@ -2652,6 +2652,8 @@ module Prism
|
|
2652
2652
|
class ParenthesesNode < Node
|
2653
2653
|
include _Node
|
2654
2654
|
|
2655
|
+
def multiple_statements?: () -> bool
|
2656
|
+
|
2655
2657
|
attr_reader body: Prism::node?
|
2656
2658
|
attr_reader opening_loc: Location
|
2657
2659
|
attr_reader closing_loc: Location
|
@@ -2945,14 +2947,16 @@ module Prism
|
|
2945
2947
|
attr_reader exceptions: Array[Prism::node]
|
2946
2948
|
attr_reader operator_loc: Location?
|
2947
2949
|
attr_reader reference: LocalVariableTargetNode | InstanceVariableTargetNode | ClassVariableTargetNode | GlobalVariableTargetNode | ConstantTargetNode | ConstantPathTargetNode | CallTargetNode | IndexTargetNode | BackReferenceReadNode | NumberedReferenceReadNode | MissingNode | nil
|
2950
|
+
attr_reader then_keyword_loc: Location?
|
2948
2951
|
attr_reader statements: StatementsNode?
|
2949
2952
|
attr_reader subsequent: RescueNode?
|
2950
2953
|
|
2951
|
-
def initialize: (Source source, Integer node_id, Location location, Integer flags, Location keyword_loc, Array[Prism::node] exceptions, Location? operator_loc, LocalVariableTargetNode | InstanceVariableTargetNode | ClassVariableTargetNode | GlobalVariableTargetNode | ConstantTargetNode | ConstantPathTargetNode | CallTargetNode | IndexTargetNode | BackReferenceReadNode | NumberedReferenceReadNode | MissingNode | nil reference, StatementsNode? statements, RescueNode? subsequent) -> void
|
2952
|
-
def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?keyword_loc: Location, ?exceptions: Array[Prism::node], ?operator_loc: Location?, ?reference: LocalVariableTargetNode | InstanceVariableTargetNode | ClassVariableTargetNode | GlobalVariableTargetNode | ConstantTargetNode | ConstantPathTargetNode | CallTargetNode | IndexTargetNode | BackReferenceReadNode | NumberedReferenceReadNode | MissingNode | nil, ?statements: StatementsNode?, ?subsequent: RescueNode?) -> RescueNode
|
2953
|
-
def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, keyword_loc: Location, exceptions: Array[Prism::node], operator_loc: Location?, reference: LocalVariableTargetNode | InstanceVariableTargetNode | ClassVariableTargetNode | GlobalVariableTargetNode | ConstantTargetNode | ConstantPathTargetNode | CallTargetNode | IndexTargetNode | BackReferenceReadNode | NumberedReferenceReadNode | MissingNode | nil, statements: StatementsNode?, subsequent: RescueNode? }
|
2954
|
+
def initialize: (Source source, Integer node_id, Location location, Integer flags, Location keyword_loc, Array[Prism::node] exceptions, Location? operator_loc, LocalVariableTargetNode | InstanceVariableTargetNode | ClassVariableTargetNode | GlobalVariableTargetNode | ConstantTargetNode | ConstantPathTargetNode | CallTargetNode | IndexTargetNode | BackReferenceReadNode | NumberedReferenceReadNode | MissingNode | nil reference, Location? then_keyword_loc, StatementsNode? statements, RescueNode? subsequent) -> void
|
2955
|
+
def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?keyword_loc: Location, ?exceptions: Array[Prism::node], ?operator_loc: Location?, ?reference: LocalVariableTargetNode | InstanceVariableTargetNode | ClassVariableTargetNode | GlobalVariableTargetNode | ConstantTargetNode | ConstantPathTargetNode | CallTargetNode | IndexTargetNode | BackReferenceReadNode | NumberedReferenceReadNode | MissingNode | nil, ?then_keyword_loc: Location?, ?statements: StatementsNode?, ?subsequent: RescueNode?) -> RescueNode
|
2956
|
+
def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, keyword_loc: Location, exceptions: Array[Prism::node], operator_loc: Location?, reference: LocalVariableTargetNode | InstanceVariableTargetNode | ClassVariableTargetNode | GlobalVariableTargetNode | ConstantTargetNode | ConstantPathTargetNode | CallTargetNode | IndexTargetNode | BackReferenceReadNode | NumberedReferenceReadNode | MissingNode | nil, then_keyword_loc: Location?, statements: StatementsNode?, subsequent: RescueNode? }
|
2954
2957
|
def keyword: () -> String
|
2955
2958
|
def operator: () -> String?
|
2959
|
+
def then_keyword: () -> String?
|
2956
2960
|
def type: () -> :rescue_node
|
2957
2961
|
| ...
|
2958
2962
|
def self.type: () -> :rescue_node
|
@@ -3532,6 +3536,12 @@ module Prism
|
|
3532
3536
|
REPEATED_PARAMETER: Integer
|
3533
3537
|
end
|
3534
3538
|
|
3539
|
+
# Flags for parentheses nodes.
|
3540
|
+
module ParenthesesNodeFlags
|
3541
|
+
# parentheses that contain multiple potentially void statements
|
3542
|
+
MULTIPLE_STATEMENTS: Integer
|
3543
|
+
end
|
3544
|
+
|
3535
3545
|
# Flags for range and flip-flop nodes.
|
3536
3546
|
module RangeFlags
|
3537
3547
|
# ... operator
|