steep 1.2.0 → 1.3.0.pre.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 -2
- data/Gemfile.lock +14 -4
- data/Gemfile.steep +2 -2
- data/Gemfile.steep.lock +17 -5
- data/Steepfile +7 -9
- data/lib/steep/annotation_parser.rb +34 -28
- data/lib/steep/ast/annotation.rb +16 -5
- data/lib/steep/ast/node/type_application.rb +74 -0
- data/lib/steep/ast/node/type_assertion.rb +56 -0
- data/lib/steep/ast/types/factory.rb +5 -1
- data/lib/steep/diagnostic/helper.rb +2 -1
- data/lib/steep/diagnostic/lsp_formatter.rb +3 -1
- data/lib/steep/diagnostic/ruby.rb +70 -5
- data/lib/steep/diagnostic/signature.rb +21 -8
- data/lib/steep/drivers/check.rb +1 -1
- data/lib/steep/drivers/checkfile.rb +1 -1
- data/lib/steep/drivers/langserver.rb +2 -2
- data/lib/steep/drivers/stats.rb +1 -1
- data/lib/steep/drivers/watch.rb +1 -1
- data/lib/steep/drivers/worker.rb +0 -1
- data/lib/steep/server/lsp_formatter.rb +13 -3
- data/lib/steep/server/master.rb +4 -1
- data/lib/steep/server/worker_process.rb +86 -14
- data/lib/steep/services/hover_provider/rbs.rb +7 -7
- data/lib/steep/services/hover_provider/ruby.rb +19 -4
- data/lib/steep/services/signature_service.rb +7 -4
- data/lib/steep/signature/validator.rb +36 -13
- data/lib/steep/source.rb +189 -71
- data/lib/steep/type_construction.rb +232 -126
- data/lib/steep/type_inference/logic_type_interpreter.rb +31 -5
- data/lib/steep/version.rb +1 -1
- data/lib/steep.rb +2 -0
- data/rbs_collection.steep.lock.yaml +52 -11
- data/rbs_collection.steep.yaml +1 -1
- data/sig/shims/exception.rbs +4 -0
- data/sig/shims/parser/comment.rbs +33 -0
- data/sig/shims/parser.rbs +30 -2
- data/sig/steep/annotation_parser.rbs +59 -0
- data/sig/steep/ast/annotation.rbs +21 -26
- data/sig/steep/ast/node/type_application.rbs +31 -0
- data/sig/steep/ast/node/type_assertion.rbs +26 -0
- data/sig/steep/ast/types/factory.rbs +0 -2
- data/sig/steep/diagnostic/helper.rbs +9 -3
- data/sig/steep/diagnostic/lsp_formatter.rbs +12 -8
- data/sig/steep/diagnostic/ruby.rbs +62 -8
- data/sig/steep/diagnostic/signature.rbs +118 -85
- data/sig/steep/drivers/worker.rbs +11 -13
- data/sig/steep/range_extension.rbs +7 -0
- data/sig/steep/server/lsp_formatter.rbs +14 -7
- data/sig/steep/server/worker_process.rbs +74 -12
- data/sig/steep/services/hover_provider/rbs.rbs +27 -7
- data/sig/steep/services/hover_provider/ruby.rbs +18 -4
- data/sig/steep/services/hover_provider/singleton_methods.rbs +1 -1
- data/sig/steep/signature/validator.rbs +76 -0
- data/sig/steep/source.rbs +54 -30
- data/sig/steep/type_construction.rbs +85 -27
- data/sig/steep/type_inference/method_call.rbs +1 -1
- data/smoke/diagnostics-rbs/inherit-module.rbs +2 -0
- data/smoke/diagnostics-rbs/test_expectations.yml +12 -0
- data/steep.gemspec +6 -1
- metadata +86 -6
@@ -0,0 +1,76 @@
|
|
1
|
+
module Steep
|
2
|
+
module Signature
|
3
|
+
class Validator
|
4
|
+
Location: singleton(RBS::Location)
|
5
|
+
|
6
|
+
Declarations: singleton(RBS::AST::Declarations)
|
7
|
+
|
8
|
+
attr_reader checker: Subtyping::Check
|
9
|
+
|
10
|
+
@errors: Array[Diagnostic::Signature::Base]
|
11
|
+
|
12
|
+
@type_name_resolver: RBS::TypeNameResolver?
|
13
|
+
|
14
|
+
@validator: RBS::Validator?
|
15
|
+
|
16
|
+
def initialize: (checker: Subtyping::Check) -> void
|
17
|
+
|
18
|
+
def has_error?: () -> bool
|
19
|
+
|
20
|
+
def no_error?: () -> bool
|
21
|
+
|
22
|
+
def each_error: () { (Diagnostic::Signature::Base) -> void } -> void
|
23
|
+
| () -> Enumerator[Diagnostic::Signature::Base, void]
|
24
|
+
|
25
|
+
def env: () -> RBS::Environment
|
26
|
+
|
27
|
+
def builder: () -> RBS::DefinitionBuilder
|
28
|
+
|
29
|
+
def type_name_resolver: () -> RBS::TypeNameResolver
|
30
|
+
|
31
|
+
def validator: () -> RBS::Validator
|
32
|
+
|
33
|
+
def factory: () -> AST::Types::Factory
|
34
|
+
|
35
|
+
def validate: () -> void
|
36
|
+
|
37
|
+
def validate_type_application_constraints: (RBS::TypeName type_name, Array[RBS::AST::TypeParam] type_params, Array[RBS::Types::t] type_args, location: RBS::Location[untyped, untyped]?) -> void
|
38
|
+
|
39
|
+
def validate_type_application: (RBS::Types::t) -> void
|
40
|
+
|
41
|
+
def validate_type: (RBS::Types::t `type`) -> untyped
|
42
|
+
|
43
|
+
def ancestor_to_type: (RBS::Definition::Ancestor::t ancestor) -> (AST::Types::Name::Interface | AST::Types::Name::Instance)
|
44
|
+
|
45
|
+
def mixin_constraints: (RBS::Definition definition, Array[RBS::Definition::Ancestor::Instance] mixin_ancestors, immediate_self_types: Array[RBS::Definition::Ancestor::t]?) -> Array[[Subtyping::Relation[AST::Types::t], RBS::Definition::Ancestor::Instance]]
|
46
|
+
|
47
|
+
def each_method_type: (RBS::Definition) { (RBS::MethodType) -> void } -> void
|
48
|
+
|
49
|
+
def each_variable_type: (RBS::Definition) { (RBS::Types::t) -> void } -> void
|
50
|
+
|
51
|
+
def validate_definition_type: (RBS::Definition) -> void
|
52
|
+
|
53
|
+
def validate_one_class: (RBS::TypeName) -> void
|
54
|
+
|
55
|
+
def validate_ancestor_application: (RBS::TypeName, RBS::Definition::Ancestor::Instance ancestor) -> void
|
56
|
+
|
57
|
+
def validate_one_interface: (RBS::TypeName) -> void
|
58
|
+
|
59
|
+
def validate_decl: () -> void
|
60
|
+
|
61
|
+
def validate_const: () -> void
|
62
|
+
|
63
|
+
def validate_one_constant: (RBS::TypeName name, RBS::Environment::SingleEntry[RBS::TypeName, RBS::AST::Declarations::Constant] entry) -> void
|
64
|
+
|
65
|
+
def validate_global: () -> void
|
66
|
+
|
67
|
+
def validate_one_global: (Symbol name, RBS::Environment::SingleEntry[Symbol, RBS::AST::Declarations::Global]) -> void
|
68
|
+
|
69
|
+
def validate_one_alias: (RBS::TypeName name, ?RBS::Environment::SingleEntry[RBS::TypeName, RBS::AST::Declarations::Alias] entry) -> void
|
70
|
+
|
71
|
+
def validate_alias: () -> void
|
72
|
+
|
73
|
+
def rescue_validation_errors: (?RBS::TypeName? type_name) { () -> void } -> void
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
data/sig/steep/source.rbs
CHANGED
@@ -1,55 +1,79 @@
|
|
1
1
|
module Steep
|
2
2
|
class Source
|
3
|
-
|
4
|
-
attr_reader line: untyped
|
3
|
+
extend NodeHelper
|
5
4
|
|
6
|
-
|
5
|
+
attr_reader path: Pathname
|
7
6
|
|
8
|
-
|
7
|
+
attr_reader node: Parser::AST::Node?
|
9
8
|
|
10
|
-
|
9
|
+
attr_reader mapping: Hash[Parser::AST::Node, Array[AST::Annotation::t]]
|
11
10
|
|
12
|
-
|
13
|
-
end
|
14
|
-
|
15
|
-
attr_reader path: untyped
|
16
|
-
|
17
|
-
attr_reader node: untyped
|
18
|
-
|
19
|
-
attr_reader mapping: untyped
|
20
|
-
|
21
|
-
def initialize: (path: untyped, node: untyped, mapping: untyped) -> void
|
11
|
+
def initialize: (path: Pathname, node: Parser::AST::Node?, mapping: Hash[Parser::AST::Node, Array[AST::Annotation::t]]) -> void
|
22
12
|
|
23
|
-
class Builder
|
13
|
+
class Builder < ::Parser::Builders::Default
|
24
14
|
def string_value: (untyped token) -> untyped
|
25
15
|
end
|
26
16
|
|
27
|
-
def self.new_parser: () ->
|
17
|
+
def self.new_parser: () -> Parser::Ruby31
|
28
18
|
|
29
|
-
def self.parse: (
|
19
|
+
def self.parse: (String source_code, path: Pathname, factory: AST::Types::Factory) -> Source
|
30
20
|
|
31
|
-
def self.construct_mapping: (
|
21
|
+
def self.construct_mapping: (
|
22
|
+
node: Parser::AST::Node,
|
23
|
+
annotations: Array[AST::Annotation::t],
|
24
|
+
mapping: Hash[Parser::AST::Node, Array[AST::Annotation::t]],
|
25
|
+
?line_range: Range[Integer]?
|
26
|
+
) -> void
|
32
27
|
|
33
|
-
def self.
|
34
|
-
|
35
|
-
def self.map_child_nodes: (untyped node) { (untyped) -> untyped } -> untyped
|
28
|
+
def self.map_child_node: (Parser::AST::Node node, ?Symbol? type, ?skip: Set[Parser::AST::Node]?) { (Parser::AST::Node) -> Parser::AST::Node } -> Parser::AST::Node
|
36
29
|
|
37
30
|
def annotations: (block: Parser::AST::Node, factory: AST::Types::Factory, context: RBS::Resolver::context) -> AST::Annotation::Collection
|
38
31
|
|
39
|
-
def each_annotation: () { (
|
32
|
+
def each_annotation: () { ([Parser::AST::Node, Array[AST::Annotation::t]]) -> void } -> void
|
33
|
+
| () -> Enumerator[[Parser::AST::Node, Array[AST::Annotation::t]], void]
|
34
|
+
|
35
|
+
# Yields all heredoc node and its parents under `node` (or `self.node`)
|
36
|
+
#
|
37
|
+
# Yields arrays, inner node first, outer node last -- `[heredoc_node, *outer_node, node]`.
|
38
|
+
#
|
39
|
+
def each_heredoc_node: (?Parser::AST::Node? node, ?Array[Parser::AST::Node] parents) { (Array[Parser::AST::Node]) -> void } -> void
|
40
|
+
| (?Parser::AST::Node? node, ?Array[Parser::AST::Node] parents) -> Enumerator[Array[Parser::AST::Node], void]
|
41
|
+
|
42
|
+
# Returns array of nodes that is located inside heredoc
|
43
|
+
#
|
44
|
+
# ```ruby
|
45
|
+
# content = <<TEXT
|
46
|
+
# #{this or this}
|
47
|
+
# TEXT
|
48
|
+
# ```
|
49
|
+
#
|
50
|
+
# Returns arrays, inner node first, outer node last -- `[*nodes, heredoc_node]`.
|
51
|
+
#
|
52
|
+
def find_heredoc_nodes: (Integer line, Integer column, Integer position) -> Array[Parser::AST::Node]?
|
53
|
+
|
54
|
+
# Returns a node and it's outer nodes
|
55
|
+
#
|
56
|
+
def find_nodes_loc: (Parser::AST::Node node, Integer position, Array[Parser::AST::Node] parents) -> Array[Parser::AST::Node]?
|
57
|
+
|
58
|
+
# Returns a node and it's outer nodes
|
59
|
+
def find_nodes: (line: Integer, column: Integer) -> ::Array[Parser::AST::Node]?
|
60
|
+
|
61
|
+
def self.delete_defs: (Parser::AST::Node node, Set[Parser::AST::Node] allow_list) -> Parser::AST::Node
|
40
62
|
|
41
|
-
def
|
63
|
+
def without_unrelated_defs: (line: Integer, column: Integer) -> Source
|
42
64
|
|
43
|
-
|
65
|
+
type type_comment = AST::Node::TypeAssertion | AST::Node::TypeApplication
|
44
66
|
|
45
|
-
def
|
67
|
+
def self.insert_type_node: (Parser::AST::Node node, Hash[Integer, type_comment]) -> Parser::AST::Node
|
46
68
|
|
47
|
-
def
|
69
|
+
def self.adjust_location: (Parser::AST::Node) -> Parser::AST::Node
|
48
70
|
|
49
|
-
def self.
|
71
|
+
def self.assertion_node: (Parser::AST::Node, AST::Node::TypeAssertion) -> Parser::AST::Node
|
50
72
|
|
51
|
-
def
|
73
|
+
def self.type_application_node: (Parser::AST::Node, AST::Node::TypeApplication) -> Parser::AST::Node
|
52
74
|
|
53
|
-
|
75
|
+
# Returns a line of `selector` of `send` node, that can be used to look up a TypeApplication comment
|
76
|
+
#
|
77
|
+
def self.sendish_node?: (Parser::AST::Node) -> Integer?
|
54
78
|
end
|
55
79
|
end
|
@@ -32,8 +32,12 @@ module Steep
|
|
32
32
|
|
33
33
|
%a{pure} def module_context: () -> TypeInference::Context::ModuleContext?
|
34
34
|
|
35
|
+
def module_context!: () -> TypeInference::Context::ModuleContext
|
36
|
+
|
35
37
|
%a{pure} def method_context: () -> TypeInference::Context::MethodContext?
|
36
38
|
|
39
|
+
def method_context!: () -> TypeInference::Context::MethodContext
|
40
|
+
|
37
41
|
%a{pure} def block_context: () -> TypeInference::Context::BlockContext?
|
38
42
|
|
39
43
|
%a{pure} def break_context: () -> TypeInference::Context::BreakContext?
|
@@ -130,16 +134,94 @@ module Steep
|
|
130
134
|
|
131
135
|
def synthesize_children: (Parser::AST::Node node, ?skips: Array[Parser::AST::Node]) -> TypeConstruction
|
132
136
|
|
133
|
-
|
137
|
+
# Synthesize `:send`, `:csend`, `:block`, and `:numblock` node
|
138
|
+
#
|
139
|
+
def synthesize_sendish: (Parser::AST::Node sendish, hint: AST::Types::t?, tapp: AST::Node::TypeApplication?) -> Pair
|
140
|
+
|
141
|
+
# The entrypoint to type check method calls, which may be with blocks
|
142
|
+
#
|
143
|
+
# * `send_node` can be `:send`, `:super`, or `:zsuper`
|
144
|
+
# * `node` can be `:send`, `:block`, `:super`, or `:zsuper`
|
145
|
+
# * Specify `unwrap` keyword `true` to type check safe-navigation-operator, that unwraps the type of reeiver automatically and make the return type optional
|
146
|
+
#
|
147
|
+
def type_send: (
|
148
|
+
Parser::AST::Node node,
|
149
|
+
send_node: Parser::AST::Node,
|
150
|
+
block_params: Parser::AST::Node?,
|
151
|
+
block_body: Parser::AST::Node?,
|
152
|
+
?unwrap: bool,
|
153
|
+
tapp: AST::Node::TypeApplication?
|
154
|
+
) -> Pair
|
155
|
+
|
156
|
+
# The second step to type check method calls, which handles type refinements on *pure* calls
|
157
|
+
#
|
158
|
+
# * It receives `interface` keyword, that is the shape of the receiver type
|
159
|
+
# * It receives `arguments` keyword, that is an array of argument nodes
|
160
|
+
#
|
161
|
+
def type_send_interface: (
|
162
|
+
Parser::AST::Node node,
|
163
|
+
interface: Interface::Shape,
|
164
|
+
receiver: Parser::AST::Node?,
|
165
|
+
receiver_type: AST::Types::t,
|
166
|
+
method_name: Symbol,
|
167
|
+
arguments: Array[Parser::AST::Node],
|
168
|
+
block_params: Parser::AST::Node?,
|
169
|
+
block_body: Parser::AST::Node?,
|
170
|
+
tapp: AST::Node::TypeApplication?
|
171
|
+
) -> Pair
|
172
|
+
|
173
|
+
# The third step to type check method calls, which tries all of the overlods defined for the method
|
174
|
+
#
|
175
|
+
# * It receives the `Shape::Entry` object that represents an method entry of a shape
|
176
|
+
# * Returns `nil` when it cannot find suitable one from more than one overloads
|
177
|
+
# * It means the type checker can report only *no suitable overlod detected for this args* 😫
|
178
|
+
#
|
179
|
+
def type_method_call: (
|
180
|
+
Parser::AST::Node node,
|
181
|
+
method_name: Symbol,
|
182
|
+
receiver_type: AST::Types::t,
|
183
|
+
method: Interface::Shape::Entry,
|
184
|
+
arguments: Array[Parser::AST::Node],
|
185
|
+
block_params: Parser::AST::Node?,
|
186
|
+
block_body: Parser::AST::Node?,
|
187
|
+
tapp: AST::Node::TypeApplication?
|
188
|
+
) -> [TypeInference::MethodCall::t, TypeConstruction]?
|
189
|
+
|
190
|
+
# The core to type check method calls, which implements type checking arguments including blocks and type inference
|
191
|
+
#
|
192
|
+
# * `receiver_type` and `method_name` are only used for error reporting
|
193
|
+
#
|
194
|
+
def try_method_type: (
|
195
|
+
Parser::AST::Node node,
|
196
|
+
receiver_type: AST::Types::t,
|
197
|
+
method_name: Symbol,
|
198
|
+
method_type: Interface::MethodType,
|
199
|
+
arguments: Array[Parser::AST::Node],
|
200
|
+
block_params: Parser::AST::Node?,
|
201
|
+
block_body: Parser::AST::Node?,
|
202
|
+
tapp: AST::Node::TypeApplication?
|
203
|
+
) -> [TypeInference::MethodCall::t, TypeConstruction]
|
134
204
|
|
135
|
-
|
205
|
+
# Extra step to type check method calls, which implements custom typing rules based on the methods
|
206
|
+
#
|
207
|
+
# * Returns `nil` if the `method_type` object is not associated to a method with custom typing rules
|
208
|
+
#
|
209
|
+
def try_special_method: (
|
210
|
+
Parser::AST::Node node,
|
211
|
+
receiver_type: AST::Types::t,
|
212
|
+
method_name: Symbol,
|
213
|
+
method_type: Interface::MethodType,
|
214
|
+
arguments: Array[Parser::AST::Node],
|
215
|
+
block_params: Parser::AST::Node?,
|
216
|
+
block_body: Parser::AST::Node?
|
217
|
+
) -> [TypeInference::MethodCall::t, TypeConstruction]?
|
136
218
|
|
137
219
|
def builder_config: () -> Interface::Builder::Config
|
138
220
|
|
139
221
|
# Calculates the shape (interface) of an type
|
140
222
|
#
|
141
223
|
# * Returns `nil` if the type cannot be translated to a shape
|
142
|
-
# * Returns Shape::Entry instead of Shape
|
224
|
+
# * Returns Shape::Entry instead of Shape when `method_name` is given
|
143
225
|
#
|
144
226
|
def calculate_interface: (AST::Types::t `type`, private: bool) -> Interface::Shape?
|
145
227
|
| (AST::Types::t `type`, Symbol method_name, private: bool) -> Interface::Shape::Entry?
|
@@ -150,19 +232,6 @@ module Steep
|
|
150
232
|
|
151
233
|
KNOWN_PURE_METHODS: Set[method_name]
|
152
234
|
|
153
|
-
def try_special_method: (untyped node, receiver_type: untyped, method_name: untyped, method_type: untyped, arguments: untyped, block_params: untyped, block_body: untyped) -> (::Array[untyped] | nil)
|
154
|
-
|
155
|
-
def type_method_call: (
|
156
|
-
Parser::AST::Node node,
|
157
|
-
method_name: Symbol,
|
158
|
-
receiver_type: AST::Types::t,
|
159
|
-
method: Interface::Shape::Entry,
|
160
|
-
arguments: Array[Parser::AST::Node],
|
161
|
-
block_params: Parser::AST::Node?,
|
162
|
-
block_body: Parser::AST::Node?,
|
163
|
-
topdown_hint: untyped
|
164
|
-
) -> [TypeInference::MethodCall::t, TypeConstruction]?
|
165
|
-
|
166
235
|
def inspect: () -> ::String
|
167
236
|
|
168
237
|
def with_child_typing: [A] (range: Range[Integer]) { (TypeConstruction) -> A } -> A
|
@@ -186,17 +255,6 @@ module Steep
|
|
186
255
|
|
187
256
|
def eliminate_vars: (untyped `type`, untyped variables, ?to: untyped) -> untyped
|
188
257
|
|
189
|
-
def try_method_type: (
|
190
|
-
Parser::AST::Node node,
|
191
|
-
receiver_type: AST::Types::t,
|
192
|
-
method_name: Symbol,
|
193
|
-
method_type: Interface::MethodType,
|
194
|
-
arguments: Array[Parser::AST::Node],
|
195
|
-
block_params: Parser::AST::Node?,
|
196
|
-
block_body: Parser::AST::Node?,
|
197
|
-
topdown_hint: untyped
|
198
|
-
) -> [TypeInference::MethodCall::t, TypeConstruction]
|
199
|
-
|
200
258
|
def type_check_args: (
|
201
259
|
TypeInference::SendArgs,
|
202
260
|
Subtyping::Constraints,
|
@@ -72,7 +72,7 @@ module Steep
|
|
72
72
|
|
73
73
|
attr_reader method_decls: Set[MethodDecl]
|
74
74
|
|
75
|
-
def initialize: (node: Parser::AST::Node, context: context, method_name: Symbol, receiver_type: AST::Types::t, actual_method_type: Interface::MethodType, method_decls:
|
75
|
+
def initialize: (node: Parser::AST::Node, context: context, method_name: Symbol, receiver_type: AST::Types::t, actual_method_type: Interface::MethodType, method_decls: Set[MethodDecl], return_type: AST::Types::t) -> void
|
76
76
|
|
77
77
|
def update: (?node: Parser::AST::Node, ?return_type: AST::Types::t) -> self
|
78
78
|
|
@@ -46,6 +46,18 @@
|
|
46
46
|
severity: ERROR
|
47
47
|
message: Different generic parameters are specified across definitions of `::GenericParameterMismatchError::Foo`
|
48
48
|
code: RBS::GenericParameterMismatch
|
49
|
+
- file: inherit-module.rbs
|
50
|
+
diagnostics:
|
51
|
+
- range:
|
52
|
+
start:
|
53
|
+
line: 1
|
54
|
+
character: 22
|
55
|
+
end:
|
56
|
+
line: 1
|
57
|
+
character: -1
|
58
|
+
severity: ERROR
|
59
|
+
message: Cannot inherit from a module `::Kernel`
|
60
|
+
code: RBS::InheritModuleError
|
49
61
|
- file: invalid-method-overload.rbs
|
50
62
|
diagnostics:
|
51
63
|
- range:
|
data/steep.gemspec
CHANGED
@@ -33,8 +33,13 @@ Gem::Specification.new do |spec|
|
|
33
33
|
spec.add_runtime_dependency "rainbow", ">= 2.2.2", "< 4.0"
|
34
34
|
spec.add_runtime_dependency "listen", "~> 3.0"
|
35
35
|
spec.add_runtime_dependency "language_server-protocol", ">= 3.15", "< 4.0"
|
36
|
-
spec.add_runtime_dependency "rbs", ">= 2.
|
36
|
+
spec.add_runtime_dependency "rbs", ">= 2.8.0.pre"
|
37
37
|
spec.add_runtime_dependency "parallel", ">= 1.0.0"
|
38
38
|
spec.add_runtime_dependency "terminal-table", ">= 2", "< 4"
|
39
39
|
spec.add_runtime_dependency "securerandom", ">= 0.1"
|
40
|
+
spec.add_runtime_dependency "json", ">= 2.1.0"
|
41
|
+
spec.add_runtime_dependency "logger", ">= 1.3.0"
|
42
|
+
spec.add_runtime_dependency "fileutils", ">= 1.1.0"
|
43
|
+
spec.add_runtime_dependency "strscan", ">= 1.0.0"
|
44
|
+
spec.add_runtime_dependency "csv", ">= 3.0.9"
|
40
45
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: steep
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.0.pre.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Soutaro Matsumoto
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-11-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: parser
|
@@ -98,14 +98,14 @@ dependencies:
|
|
98
98
|
requirements:
|
99
99
|
- - ">="
|
100
100
|
- !ruby/object:Gem::Version
|
101
|
-
version: 2.
|
101
|
+
version: 2.8.0.pre
|
102
102
|
type: :runtime
|
103
103
|
prerelease: false
|
104
104
|
version_requirements: !ruby/object:Gem::Requirement
|
105
105
|
requirements:
|
106
106
|
- - ">="
|
107
107
|
- !ruby/object:Gem::Version
|
108
|
-
version: 2.
|
108
|
+
version: 2.8.0.pre
|
109
109
|
- !ruby/object:Gem::Dependency
|
110
110
|
name: parallel
|
111
111
|
requirement: !ruby/object:Gem::Requirement
|
@@ -154,6 +154,76 @@ dependencies:
|
|
154
154
|
- - ">="
|
155
155
|
- !ruby/object:Gem::Version
|
156
156
|
version: '0.1'
|
157
|
+
- !ruby/object:Gem::Dependency
|
158
|
+
name: json
|
159
|
+
requirement: !ruby/object:Gem::Requirement
|
160
|
+
requirements:
|
161
|
+
- - ">="
|
162
|
+
- !ruby/object:Gem::Version
|
163
|
+
version: 2.1.0
|
164
|
+
type: :runtime
|
165
|
+
prerelease: false
|
166
|
+
version_requirements: !ruby/object:Gem::Requirement
|
167
|
+
requirements:
|
168
|
+
- - ">="
|
169
|
+
- !ruby/object:Gem::Version
|
170
|
+
version: 2.1.0
|
171
|
+
- !ruby/object:Gem::Dependency
|
172
|
+
name: logger
|
173
|
+
requirement: !ruby/object:Gem::Requirement
|
174
|
+
requirements:
|
175
|
+
- - ">="
|
176
|
+
- !ruby/object:Gem::Version
|
177
|
+
version: 1.3.0
|
178
|
+
type: :runtime
|
179
|
+
prerelease: false
|
180
|
+
version_requirements: !ruby/object:Gem::Requirement
|
181
|
+
requirements:
|
182
|
+
- - ">="
|
183
|
+
- !ruby/object:Gem::Version
|
184
|
+
version: 1.3.0
|
185
|
+
- !ruby/object:Gem::Dependency
|
186
|
+
name: fileutils
|
187
|
+
requirement: !ruby/object:Gem::Requirement
|
188
|
+
requirements:
|
189
|
+
- - ">="
|
190
|
+
- !ruby/object:Gem::Version
|
191
|
+
version: 1.1.0
|
192
|
+
type: :runtime
|
193
|
+
prerelease: false
|
194
|
+
version_requirements: !ruby/object:Gem::Requirement
|
195
|
+
requirements:
|
196
|
+
- - ">="
|
197
|
+
- !ruby/object:Gem::Version
|
198
|
+
version: 1.1.0
|
199
|
+
- !ruby/object:Gem::Dependency
|
200
|
+
name: strscan
|
201
|
+
requirement: !ruby/object:Gem::Requirement
|
202
|
+
requirements:
|
203
|
+
- - ">="
|
204
|
+
- !ruby/object:Gem::Version
|
205
|
+
version: 1.0.0
|
206
|
+
type: :runtime
|
207
|
+
prerelease: false
|
208
|
+
version_requirements: !ruby/object:Gem::Requirement
|
209
|
+
requirements:
|
210
|
+
- - ">="
|
211
|
+
- !ruby/object:Gem::Version
|
212
|
+
version: 1.0.0
|
213
|
+
- !ruby/object:Gem::Dependency
|
214
|
+
name: csv
|
215
|
+
requirement: !ruby/object:Gem::Requirement
|
216
|
+
requirements:
|
217
|
+
- - ">="
|
218
|
+
- !ruby/object:Gem::Version
|
219
|
+
version: 3.0.9
|
220
|
+
type: :runtime
|
221
|
+
prerelease: false
|
222
|
+
version_requirements: !ruby/object:Gem::Requirement
|
223
|
+
requirements:
|
224
|
+
- - ">="
|
225
|
+
- !ruby/object:Gem::Version
|
226
|
+
version: 3.0.9
|
157
227
|
description: Gradual Typing for Ruby
|
158
228
|
email:
|
159
229
|
- matsumoto@soutaro.com
|
@@ -188,6 +258,8 @@ files:
|
|
188
258
|
- lib/steep/ast/annotation.rb
|
189
259
|
- lib/steep/ast/annotation/collection.rb
|
190
260
|
- lib/steep/ast/builtin.rb
|
261
|
+
- lib/steep/ast/node/type_application.rb
|
262
|
+
- lib/steep/ast/node/type_assertion.rb
|
191
263
|
- lib/steep/ast/type_params.rb
|
192
264
|
- lib/steep/ast/types.rb
|
193
265
|
- lib/steep/ast/types/any.rb
|
@@ -302,16 +374,21 @@ files:
|
|
302
374
|
- sample/lib/length.rb
|
303
375
|
- sample/sig/conference.rbs
|
304
376
|
- sample/sig/length.rbs
|
377
|
+
- sig/shims/exception.rbs
|
305
378
|
- sig/shims/language-server_protocol.rbs
|
306
379
|
- sig/shims/parallel.rbs
|
307
380
|
- sig/shims/parser.rbs
|
381
|
+
- sig/shims/parser/comment.rbs
|
308
382
|
- sig/shims/parser/source/map.rbs
|
309
383
|
- sig/shims/parser/source/range.rbs
|
310
384
|
- sig/shims/tagged_logging.rbs
|
311
385
|
- sig/steep.rbs
|
386
|
+
- sig/steep/annotation_parser.rbs
|
312
387
|
- sig/steep/ast/annotation.rbs
|
313
388
|
- sig/steep/ast/annotation/collection.rbs
|
314
389
|
- sig/steep/ast/builtin.rbs
|
390
|
+
- sig/steep/ast/node/type_application.rbs
|
391
|
+
- sig/steep/ast/node/type_assertion.rbs
|
315
392
|
- sig/steep/ast/type_params.rbs
|
316
393
|
- sig/steep/ast/types.rbs
|
317
394
|
- sig/steep/ast/types/any.rbs
|
@@ -374,6 +451,7 @@ files:
|
|
374
451
|
- sig/steep/project/options.rbs
|
375
452
|
- sig/steep/project/pattern.rbs
|
376
453
|
- sig/steep/project/target.rbs
|
454
|
+
- sig/steep/range_extension.rbs
|
377
455
|
- sig/steep/server/base_worker.rbs
|
378
456
|
- sig/steep/server/change_buffer.rbs
|
379
457
|
- sig/steep/server/interaction_worker.rbs
|
@@ -392,6 +470,7 @@ files:
|
|
392
470
|
- sig/steep/services/signature_service.rbs
|
393
471
|
- sig/steep/services/stats_calculator.rbs
|
394
472
|
- sig/steep/services/type_check_service.rbs
|
473
|
+
- sig/steep/signature/validator.rbs
|
395
474
|
- sig/steep/source.rbs
|
396
475
|
- sig/steep/subtyping/cache.rbs
|
397
476
|
- sig/steep/subtyping/check.rbs
|
@@ -467,6 +546,7 @@ files:
|
|
467
546
|
- smoke/diagnostics-rbs/Steepfile
|
468
547
|
- smoke/diagnostics-rbs/duplicated-method-definition.rbs
|
469
548
|
- smoke/diagnostics-rbs/generic-parameter-mismatch.rbs
|
549
|
+
- smoke/diagnostics-rbs/inherit-module.rbs
|
470
550
|
- smoke/diagnostics-rbs/invalid-method-overload.rbs
|
471
551
|
- smoke/diagnostics-rbs/invalid-type-application.rbs
|
472
552
|
- smoke/diagnostics-rbs/invalid_variance_annotation.rbs
|
@@ -684,9 +764,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
684
764
|
version: 2.6.0
|
685
765
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
686
766
|
requirements:
|
687
|
-
- - "
|
767
|
+
- - ">"
|
688
768
|
- !ruby/object:Gem::Version
|
689
|
-
version:
|
769
|
+
version: 1.3.1
|
690
770
|
requirements: []
|
691
771
|
rubygems_version: 3.3.7
|
692
772
|
signing_key:
|