steep 1.4.0.dev.2 → 1.4.0.dev.4
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/.github/workflows/ruby.yml +1 -2
- data/Gemfile +1 -1
- data/Gemfile.lock +9 -11
- data/Gemfile.steep +1 -2
- data/Gemfile.steep.lock +11 -14
- data/README.md +7 -1
- data/Steepfile +0 -3
- data/bin/rbs +0 -1
- data/guides/README.md +5 -0
- data/guides/src/gem-rbs-collection/gem-rbs-collection.md +143 -0
- data/guides/src/getting-started/getting-started.md +164 -0
- data/guides/src/nil-optional/nil-optional.md +195 -0
- data/lib/steep/diagnostic/ruby.rb +80 -6
- data/lib/steep/drivers/check.rb +4 -4
- data/lib/steep/interface/block.rb +10 -0
- data/lib/steep/interface/builder.rb +3 -3
- data/lib/steep/method_name.rb +8 -0
- data/lib/steep/module_helper.rb +13 -11
- data/lib/steep/path_helper.rb +4 -0
- data/lib/steep/server/interaction_worker.rb +197 -230
- data/lib/steep/server/lsp_formatter.rb +308 -154
- data/lib/steep/server/master.rb +4 -1
- data/lib/steep/services/completion_provider.rb +140 -103
- data/lib/steep/services/hover_provider/rbs.rb +37 -32
- data/lib/steep/services/signature_help_provider.rb +108 -0
- data/lib/steep/services/type_name_completion.rb +165 -0
- data/lib/steep/source.rb +1 -0
- data/lib/steep/type_construction.rb +460 -266
- data/lib/steep/type_inference/block_params.rb +13 -0
- data/lib/steep/type_inference/context.rb +3 -3
- data/lib/steep/type_inference/method_call.rb +1 -1
- data/lib/steep/type_inference/method_params.rb +42 -16
- data/lib/steep/type_inference/send_args.rb +80 -51
- data/lib/steep/type_inference/type_env.rb +12 -4
- data/lib/steep/version.rb +1 -1
- data/lib/steep.rb +2 -0
- data/rbs_collection.steep.lock.yaml +0 -28
- data/rbs_collection.steep.yaml +10 -9
- data/sample/Steepfile +2 -0
- data/sample/lib/conference.rb +12 -0
- data/sample/sig/conference.rbs +5 -0
- data/sig/shims/language-server_protocol.rbs +277 -0
- data/sig/shims/parser/nodes.rbs +37 -0
- data/sig/shims/parser.rbs +4 -0
- data/sig/shims/string.rbs +4 -0
- data/sig/steep/ast/types/factory.rbs +10 -8
- data/sig/steep/diagnostic/lsp_formatter.rbs +1 -1
- data/sig/steep/diagnostic/ruby.rbs +38 -2
- data/sig/steep/drivers/check.rbs +1 -1
- data/sig/steep/drivers/checkfile.rbs +1 -1
- data/sig/steep/drivers/diagnostic_printer.rbs +1 -1
- data/sig/steep/drivers/watch.rbs +1 -1
- data/sig/steep/index/signature_symbol_provider.rbs +1 -1
- data/sig/steep/interface/block.rbs +2 -0
- data/sig/steep/interface/builder.rbs +5 -3
- data/sig/steep/interface/method_type.rbs +5 -3
- data/sig/steep/method_name.rbs +5 -1
- data/sig/steep/module_helper.rbs +9 -0
- data/sig/steep/path_helper.rbs +3 -1
- data/sig/steep/server/base_worker.rbs +1 -1
- data/sig/steep/server/interaction_worker.rbs +52 -17
- data/sig/steep/server/lsp_formatter.rbs +43 -18
- data/sig/steep/server/master.rbs +1 -1
- data/sig/steep/server/type_check_worker.rbs +7 -5
- data/sig/steep/server/worker_process.rbs +6 -4
- data/sig/steep/services/completion_provider.rbs +106 -28
- data/sig/steep/services/hover_provider/rbs.rbs +13 -9
- data/sig/steep/services/signature_help_provider.rbs +39 -0
- data/sig/steep/services/type_name_completion.rbs +122 -0
- data/sig/steep/type_construction.rbs +99 -30
- data/sig/steep/type_inference/block_params.rbs +4 -0
- data/sig/steep/type_inference/context.rbs +70 -22
- data/sig/steep/type_inference/method_call.rbs +1 -1
- data/sig/steep/type_inference/method_params.rbs +43 -24
- data/sig/steep/type_inference/multiple_assignment.rbs +1 -1
- data/sig/steep/type_inference/send_args.rbs +19 -5
- data/sig/steep/typing.rbs +8 -3
- data/smoke/diagnostics/test_expectations.yml +1 -0
- data/steep.gemspec +0 -1
- metadata +12 -16
@@ -52,7 +52,9 @@ module Steep
|
|
52
52
|
include Equatable
|
53
53
|
end
|
54
54
|
|
55
|
-
type arg = NodeParamPair | NodeTypePair | SplatArg |
|
55
|
+
type arg = NodeParamPair | NodeTypePair | SplatArg | error_arg
|
56
|
+
|
57
|
+
type error_arg = UnexpectedArg | MissingArg
|
56
58
|
|
57
59
|
attr_reader args: Array[Parser::AST::Node]
|
58
60
|
|
@@ -68,7 +70,7 @@ module Steep
|
|
68
70
|
|
69
71
|
def following_args: () -> Array[Parser::AST::Node]
|
70
72
|
|
71
|
-
def param: () -> Interface::Function::Params::PositionalParams::param?
|
73
|
+
%a{pure} def param: () -> Interface::Function::Params::PositionalParams::param?
|
72
74
|
|
73
75
|
def update: (?index: Integer, ?positional_params: Interface::Function::Params::PositionalParams?, ?uniform: bool) -> PositionalArgs
|
74
76
|
|
@@ -134,7 +136,9 @@ module Steep
|
|
134
136
|
def initialize: (keywords: Set[Symbol]) -> void
|
135
137
|
end
|
136
138
|
|
137
|
-
type arg = ArgTypePairs | SplatArg |
|
139
|
+
type arg = ArgTypePairs | SplatArg | error_arg
|
140
|
+
|
141
|
+
type error_arg = UnexpectedKeyword | MissingKeyword
|
138
142
|
|
139
143
|
attr_reader kwarg_nodes: Array[Parser::AST::Node]
|
140
144
|
|
@@ -198,6 +202,14 @@ module Steep
|
|
198
202
|
def node_type: () -> AST::Types::t
|
199
203
|
end
|
200
204
|
|
205
|
+
class ForwardedArgs
|
206
|
+
attr_reader node: Parser::AST::Node
|
207
|
+
|
208
|
+
attr_reader params: Interface::Function::Params
|
209
|
+
|
210
|
+
def initialize: (node: Parser::AST::Node, params: Interface::Function::Params) -> void
|
211
|
+
end
|
212
|
+
|
201
213
|
attr_reader node: Parser::AST::Node
|
202
214
|
|
203
215
|
attr_reader arguments: Array[Parser::AST::Node]
|
@@ -216,14 +228,16 @@ module Steep
|
|
216
228
|
|
217
229
|
def kwargs_node: () -> Parser::AST::Node?
|
218
230
|
|
231
|
+
def forwarded_args_node: () -> Parser::AST::Node?
|
232
|
+
|
219
233
|
def positional_arg: () -> PositionalArgs
|
220
234
|
|
221
235
|
def keyword_args: () -> KeywordArgs
|
222
236
|
|
223
237
|
def block_pass_arg: () -> BlockPassArg
|
224
238
|
|
225
|
-
def each: () { (PositionalArgs::arg | KeywordArgs::arg) -> void } -> Array[Diagnostic::Ruby::Base]
|
226
|
-
| () -> Enumerator[PositionalArgs::arg | KeywordArgs::arg, Array[Diagnostic::Ruby::Base]]
|
239
|
+
def each: () { (PositionalArgs::arg | KeywordArgs::arg) -> void } -> [ForwardedArgs?, Array[Diagnostic::Ruby::Base]]
|
240
|
+
| () -> Enumerator[PositionalArgs::arg | KeywordArgs::arg, [ForwardedArgs?, Array[Diagnostic::Ruby::Base]]]
|
227
241
|
end
|
228
242
|
end
|
229
243
|
end
|
data/sig/steep/typing.rbs
CHANGED
@@ -34,7 +34,7 @@ module Steep
|
|
34
34
|
|
35
35
|
def add_error: (Diagnostic::Ruby::Base error) -> void
|
36
36
|
|
37
|
-
def add_typing: (Parser::AST::Node node, AST::Types::t `type`,
|
37
|
+
def add_typing: (Parser::AST::Node node, AST::Types::t `type`, top) -> untyped
|
38
38
|
|
39
39
|
def add_call: (untyped node, untyped call) -> untyped
|
40
40
|
|
@@ -44,7 +44,7 @@ module Steep
|
|
44
44
|
|
45
45
|
def type_of: (node: Parser::AST::Node) -> AST::Types::t
|
46
46
|
|
47
|
-
def call_of: (node:
|
47
|
+
def call_of: (node: Parser::AST::Node) -> TypeInference::MethodCall::t
|
48
48
|
|
49
49
|
def add_context_for_node: (untyped node, context: untyped) -> untyped
|
50
50
|
|
@@ -61,8 +61,13 @@ module Steep
|
|
61
61
|
def new_child: [A] (Range[Integer] range) { (Typing) -> A } -> A
|
62
62
|
| (Range[Integer]) -> Typing
|
63
63
|
|
64
|
-
def each_typing: () { () ->
|
64
|
+
def each_typing: () { (Parser::AST::Node, AST::Types::t) -> void } -> void
|
65
65
|
|
66
|
+
# Push the current changes to the `#parent` typing
|
67
|
+
#
|
68
|
+
# * Raises an error if `#parent` is `nil`
|
69
|
+
# * Raises an error if `#parent` is changed since `#new_child` call that instantiated `self`
|
70
|
+
#
|
66
71
|
def save!: () -> void
|
67
72
|
end
|
68
73
|
end
|
@@ -46,6 +46,7 @@
|
|
46
46
|
message: |-
|
47
47
|
Cannot pass a value of type `^(untyped, untyped, untyped) -> untyped` as a block-pass-argument of type `^(::Integer) -> void`
|
48
48
|
^(untyped, untyped, untyped) -> untyped <: ^(::Integer) -> void
|
49
|
+
(Params are incompatible)
|
49
50
|
code: Ruby::BlockTypeMismatch
|
50
51
|
- file: break_type_mismatch.rb
|
51
52
|
diagnostics:
|
data/steep.gemspec
CHANGED
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.0.dev.
|
4
|
+
version: 1.4.0.dev.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Soutaro Matsumoto
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-04-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: parser
|
@@ -224,20 +224,6 @@ dependencies:
|
|
224
224
|
- - ">="
|
225
225
|
- !ruby/object:Gem::Version
|
226
226
|
version: 3.0.9
|
227
|
-
- !ruby/object:Gem::Dependency
|
228
|
-
name: pathname
|
229
|
-
requirement: !ruby/object:Gem::Requirement
|
230
|
-
requirements:
|
231
|
-
- - ">="
|
232
|
-
- !ruby/object:Gem::Version
|
233
|
-
version: 0.2.1
|
234
|
-
type: :runtime
|
235
|
-
prerelease: false
|
236
|
-
version_requirements: !ruby/object:Gem::Requirement
|
237
|
-
requirements:
|
238
|
-
- - ">="
|
239
|
-
- !ruby/object:Gem::Version
|
240
|
-
version: 0.2.1
|
241
227
|
description: Gradual Typing for Ruby
|
242
228
|
email:
|
243
229
|
- matsumoto@soutaro.com
|
@@ -268,6 +254,10 @@ files:
|
|
268
254
|
- bin/steep
|
269
255
|
- bin/steep-prof
|
270
256
|
- exe/steep
|
257
|
+
- guides/README.md
|
258
|
+
- guides/src/gem-rbs-collection/gem-rbs-collection.md
|
259
|
+
- guides/src/getting-started/getting-started.md
|
260
|
+
- guides/src/nil-optional/nil-optional.md
|
271
261
|
- lib/steep.rb
|
272
262
|
- lib/steep/annotation_parser.rb
|
273
263
|
- lib/steep/ast/annotation.rb
|
@@ -353,9 +343,11 @@ files:
|
|
353
343
|
- lib/steep/services/hover_provider/ruby.rb
|
354
344
|
- lib/steep/services/hover_provider/singleton_methods.rb
|
355
345
|
- lib/steep/services/path_assignment.rb
|
346
|
+
- lib/steep/services/signature_help_provider.rb
|
356
347
|
- lib/steep/services/signature_service.rb
|
357
348
|
- lib/steep/services/stats_calculator.rb
|
358
349
|
- lib/steep/services/type_check_service.rb
|
350
|
+
- lib/steep/services/type_name_completion.rb
|
359
351
|
- lib/steep/shims/filter_map.rb
|
360
352
|
- lib/steep/shims/symbol_start_with.rb
|
361
353
|
- lib/steep/signature/validator.rb
|
@@ -393,8 +385,10 @@ files:
|
|
393
385
|
- sig/shims/parallel.rbs
|
394
386
|
- sig/shims/parser.rbs
|
395
387
|
- sig/shims/parser/comment.rbs
|
388
|
+
- sig/shims/parser/nodes.rbs
|
396
389
|
- sig/shims/parser/source/map.rbs
|
397
390
|
- sig/shims/parser/source/range.rbs
|
391
|
+
- sig/shims/string.rbs
|
398
392
|
- sig/shims/tagged_logging.rbs
|
399
393
|
- sig/steep.rbs
|
400
394
|
- sig/steep/annotation_parser.rbs
|
@@ -481,9 +475,11 @@ files:
|
|
481
475
|
- sig/steep/services/hover_provider/ruby.rbs
|
482
476
|
- sig/steep/services/hover_provider/singleton_methods.rbs
|
483
477
|
- sig/steep/services/path_assignment.rbs
|
478
|
+
- sig/steep/services/signature_help_provider.rbs
|
484
479
|
- sig/steep/services/signature_service.rbs
|
485
480
|
- sig/steep/services/stats_calculator.rbs
|
486
481
|
- sig/steep/services/type_check_service.rbs
|
482
|
+
- sig/steep/services/type_name_completion.rbs
|
487
483
|
- sig/steep/signature/validator.rbs
|
488
484
|
- sig/steep/source.rbs
|
489
485
|
- sig/steep/subtyping/cache.rbs
|