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.
Files changed (62) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +23 -2
  3. data/Gemfile.lock +14 -4
  4. data/Gemfile.steep +2 -2
  5. data/Gemfile.steep.lock +17 -5
  6. data/Steepfile +7 -9
  7. data/lib/steep/annotation_parser.rb +34 -28
  8. data/lib/steep/ast/annotation.rb +16 -5
  9. data/lib/steep/ast/node/type_application.rb +74 -0
  10. data/lib/steep/ast/node/type_assertion.rb +56 -0
  11. data/lib/steep/ast/types/factory.rb +5 -1
  12. data/lib/steep/diagnostic/helper.rb +2 -1
  13. data/lib/steep/diagnostic/lsp_formatter.rb +3 -1
  14. data/lib/steep/diagnostic/ruby.rb +70 -5
  15. data/lib/steep/diagnostic/signature.rb +21 -8
  16. data/lib/steep/drivers/check.rb +1 -1
  17. data/lib/steep/drivers/checkfile.rb +1 -1
  18. data/lib/steep/drivers/langserver.rb +2 -2
  19. data/lib/steep/drivers/stats.rb +1 -1
  20. data/lib/steep/drivers/watch.rb +1 -1
  21. data/lib/steep/drivers/worker.rb +0 -1
  22. data/lib/steep/server/lsp_formatter.rb +13 -3
  23. data/lib/steep/server/master.rb +4 -1
  24. data/lib/steep/server/worker_process.rb +86 -14
  25. data/lib/steep/services/hover_provider/rbs.rb +7 -7
  26. data/lib/steep/services/hover_provider/ruby.rb +19 -4
  27. data/lib/steep/services/signature_service.rb +7 -4
  28. data/lib/steep/signature/validator.rb +36 -13
  29. data/lib/steep/source.rb +189 -71
  30. data/lib/steep/type_construction.rb +232 -126
  31. data/lib/steep/type_inference/logic_type_interpreter.rb +31 -5
  32. data/lib/steep/version.rb +1 -1
  33. data/lib/steep.rb +2 -0
  34. data/rbs_collection.steep.lock.yaml +52 -11
  35. data/rbs_collection.steep.yaml +1 -1
  36. data/sig/shims/exception.rbs +4 -0
  37. data/sig/shims/parser/comment.rbs +33 -0
  38. data/sig/shims/parser.rbs +30 -2
  39. data/sig/steep/annotation_parser.rbs +59 -0
  40. data/sig/steep/ast/annotation.rbs +21 -26
  41. data/sig/steep/ast/node/type_application.rbs +31 -0
  42. data/sig/steep/ast/node/type_assertion.rbs +26 -0
  43. data/sig/steep/ast/types/factory.rbs +0 -2
  44. data/sig/steep/diagnostic/helper.rbs +9 -3
  45. data/sig/steep/diagnostic/lsp_formatter.rbs +12 -8
  46. data/sig/steep/diagnostic/ruby.rbs +62 -8
  47. data/sig/steep/diagnostic/signature.rbs +118 -85
  48. data/sig/steep/drivers/worker.rbs +11 -13
  49. data/sig/steep/range_extension.rbs +7 -0
  50. data/sig/steep/server/lsp_formatter.rbs +14 -7
  51. data/sig/steep/server/worker_process.rbs +74 -12
  52. data/sig/steep/services/hover_provider/rbs.rbs +27 -7
  53. data/sig/steep/services/hover_provider/ruby.rbs +18 -4
  54. data/sig/steep/services/hover_provider/singleton_methods.rbs +1 -1
  55. data/sig/steep/signature/validator.rbs +76 -0
  56. data/sig/steep/source.rbs +54 -30
  57. data/sig/steep/type_construction.rbs +85 -27
  58. data/sig/steep/type_inference/method_call.rbs +1 -1
  59. data/smoke/diagnostics-rbs/inherit-module.rbs +2 -0
  60. data/smoke/diagnostics-rbs/test_expectations.yml +12 -0
  61. data/steep.gemspec +6 -1
  62. 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
- class LocatedAnnotation
4
- attr_reader line: untyped
3
+ extend NodeHelper
5
4
 
6
- attr_reader annotation: untyped
5
+ attr_reader path: Pathname
7
6
 
8
- attr_reader source: untyped
7
+ attr_reader node: Parser::AST::Node?
9
8
 
10
- def initialize: (line: untyped, source: untyped, annotation: untyped) -> void
9
+ attr_reader mapping: Hash[Parser::AST::Node, Array[AST::Annotation::t]]
11
10
 
12
- def ==: (untyped other) -> untyped
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: () -> untyped
17
+ def self.new_parser: () -> Parser::Ruby31
28
18
 
29
- def self.parse: (untyped source_code, path: untyped, factory: untyped) -> untyped
19
+ def self.parse: (String source_code, path: Pathname, factory: AST::Types::Factory) -> Source
30
20
 
31
- def self.construct_mapping: (node: untyped, annotations: untyped, mapping: untyped, ?line_range: untyped?) -> untyped
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.each_child_node: (untyped node) { (untyped) -> untyped } -> untyped
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: () { (untyped, untyped) -> untyped } -> untyped
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 each_heredoc_node: (?untyped node, ?untyped parents) { (untyped) -> untyped } -> untyped
63
+ def without_unrelated_defs: (line: Integer, column: Integer) -> Source
42
64
 
43
- def find_heredoc_nodes: (untyped line, untyped column, untyped position) -> (untyped | nil)
65
+ type type_comment = AST::Node::TypeAssertion | AST::Node::TypeApplication
44
66
 
45
- def find_nodes_loc: (untyped node, untyped position, untyped parents) -> untyped
67
+ def self.insert_type_node: (Parser::AST::Node node, Hash[Integer, type_comment]) -> Parser::AST::Node
46
68
 
47
- def find_nodes: (line: Integer, column: Integer) -> ::Array[Parser::AST::Node]?
69
+ def self.adjust_location: (Parser::AST::Node) -> Parser::AST::Node
48
70
 
49
- def self.delete_defs: (untyped node, untyped allow_list) -> untyped
71
+ def self.assertion_node: (Parser::AST::Node, AST::Node::TypeAssertion) -> Parser::AST::Node
50
72
 
51
- def without_unrelated_defs: (line: untyped, column: untyped) -> (untyped | self)
73
+ def self.type_application_node: (Parser::AST::Node, AST::Node::TypeApplication) -> Parser::AST::Node
52
74
 
53
- def compact_siblings: (untyped node) -> untyped
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
- def type_send_interface: (Parser::AST::Node node, interface: Interface::Shape, receiver: Parser::AST::Node, receiver_type: AST::Types::t, method_name: Symbol, arguments: Array[Parser::AST::Node], block_params: Parser::AST::Node?, block_body: Parser::AST::Node?) -> Pair
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
- def type_send: (untyped node, send_node: untyped, block_params: untyped, block_body: untyped, ?unwrap: bool) -> untyped
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, if `method_name` is given
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: Array[MethodDecl], return_type: AST::Types::t) -> void
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
 
@@ -0,0 +1,2 @@
1
+ class InheritModule < Kernel
2
+ end
@@ -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.7.0"
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.2.0
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-10-07 00:00:00.000000000 Z
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.7.0
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.7.0
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: '0'
769
+ version: 1.3.1
690
770
  requirements: []
691
771
  rubygems_version: 3.3.7
692
772
  signing_key: