steep 1.1.1 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +31 -0
- data/Gemfile +0 -1
- data/Gemfile.lock +12 -11
- data/Gemfile.steep +1 -1
- data/Gemfile.steep.lock +9 -9
- data/README.md +3 -3
- data/Steepfile +24 -0
- data/bin/steep-prof +2 -1
- data/lib/steep/annotation_parser.rb +1 -1
- data/lib/steep/ast/types/class.rb +4 -0
- data/lib/steep/ast/types/factory.rb +86 -602
- data/lib/steep/ast/types/instance.rb +4 -0
- data/lib/steep/ast/types/literal.rb +1 -1
- data/lib/steep/ast/types/proc.rb +22 -8
- data/lib/steep/ast/types/self.rb +4 -0
- data/lib/steep/ast/types/union.rb +1 -1
- data/lib/steep/cli.rb +35 -13
- data/lib/steep/diagnostic/ruby.rb +17 -22
- data/lib/steep/drivers/check.rb +4 -3
- data/lib/steep/drivers/checkfile.rb +210 -0
- data/lib/steep/drivers/langserver.rb +4 -6
- data/lib/steep/drivers/stats.rb +4 -3
- data/lib/steep/drivers/utils/jobs_option.rb +27 -0
- data/lib/steep/drivers/validate.rb +3 -1
- data/lib/steep/drivers/watch.rb +7 -6
- data/lib/steep/equatable.rb +2 -0
- data/lib/steep/interface/block.rb +21 -11
- data/lib/steep/interface/builder.rb +756 -0
- data/lib/steep/interface/function.rb +32 -24
- data/lib/steep/interface/method_type.rb +191 -78
- data/lib/steep/interface/shape.rb +132 -0
- data/lib/steep/interface/substitution.rb +23 -12
- data/lib/steep/interface/type_param.rb +1 -2
- data/lib/steep/path_helper.rb +1 -1
- data/lib/steep/project.rb +5 -7
- data/lib/steep/server/base_worker.rb +2 -2
- data/lib/steep/server/change_buffer.rb +4 -3
- data/lib/steep/server/interaction_worker.rb +1 -1
- data/lib/steep/server/master.rb +69 -9
- data/lib/steep/server/type_check_worker.rb +13 -11
- data/lib/steep/server/worker_process.rb +9 -7
- data/lib/steep/services/completion_provider.rb +15 -3
- data/lib/steep/services/hover_provider/singleton_methods.rb +5 -6
- data/lib/steep/services/signature_service.rb +13 -8
- data/lib/steep/services/type_check_service.rb +2 -0
- data/lib/steep/signature/validator.rb +1 -1
- data/lib/steep/source.rb +0 -2
- data/lib/steep/subtyping/check.rb +153 -103
- data/lib/steep/subtyping/relation.rb +3 -3
- data/lib/steep/subtyping/result.rb +20 -2
- data/lib/steep/subtyping/variable_variance.rb +9 -0
- data/lib/steep/type_construction.rb +558 -299
- data/lib/steep/type_inference/block_params.rb +169 -86
- data/lib/steep/type_inference/logic_type_interpreter.rb +9 -14
- data/lib/steep/type_inference/method_params.rb +12 -7
- data/lib/steep/type_inference/send_args.rb +41 -35
- data/lib/steep/type_inference/type_env_builder.rb +1 -1
- data/lib/steep/version.rb +1 -1
- data/lib/steep.rb +72 -3
- data/rbs_collection.steep.lock.yaml +18 -30
- data/rbs_collection.steep.yaml +1 -0
- data/sig/shims/language-server_protocol.rbs +20 -0
- data/sig/shims/parallel.rbs +5 -0
- data/sig/shims/tagged_logging.rbs +6 -0
- data/sig/steep/ast/annotation/collection.rbs +6 -6
- data/sig/steep/ast/types/class.rbs +3 -0
- data/sig/steep/ast/types/factory.rbs +38 -32
- data/sig/steep/ast/types/instance.rbs +3 -0
- data/sig/steep/ast/types/intersection.rbs +1 -1
- data/sig/steep/ast/types/literal.rbs +7 -7
- data/sig/steep/ast/types/name.rbs +14 -13
- data/sig/steep/ast/types/proc.rbs +3 -1
- data/sig/steep/ast/types/self.rbs +3 -0
- data/sig/steep/ast/types/var.rbs +1 -1
- data/sig/steep/cli.rbs +55 -0
- data/sig/steep/diagnostic/ruby.rbs +30 -34
- data/sig/steep/drivers/annotations.rbs +17 -0
- data/sig/steep/drivers/check.rbs +33 -0
- data/sig/steep/drivers/checkfile.rbs +27 -0
- data/sig/steep/drivers/diagnostic_printer.rbs +25 -0
- data/sig/steep/drivers/init.rbs +19 -0
- data/sig/steep/drivers/langserver.rbs +36 -0
- data/sig/steep/drivers/print_project.rbs +15 -0
- data/sig/steep/drivers/stats.rbs +47 -0
- data/sig/steep/drivers/utils/driver_helper.rbs +23 -0
- data/sig/steep/drivers/utils/jobs_option.rbs +23 -0
- data/sig/steep/drivers/validate.rbs +15 -0
- data/sig/steep/drivers/vendor.rbs +19 -0
- data/sig/steep/drivers/watch.rbs +27 -0
- data/sig/steep/drivers/worker.rbs +31 -0
- data/sig/steep/equatable.rbs +11 -0
- data/sig/steep/index/rbs_index.rbs +91 -0
- data/sig/steep/index/signature_symbol_provider.rbs +29 -0
- data/sig/steep/index/source_index.rbs +63 -0
- data/sig/steep/interface/block.rbs +3 -1
- data/sig/steep/interface/builder.rbs +152 -0
- data/sig/steep/interface/function.rbs +67 -55
- data/sig/steep/interface/method_type.rbs +60 -12
- data/sig/steep/interface/shape.rbs +61 -0
- data/sig/steep/interface/substitution.rbs +18 -22
- data/sig/steep/interface/type_param.rbs +9 -1
- data/sig/steep/path_helper.rbs +13 -0
- data/sig/steep/project/pattern.rbs +10 -10
- data/sig/steep/project/target.rbs +2 -2
- data/sig/steep/project.rbs +15 -8
- data/sig/steep/server/base_worker.rbs +49 -0
- data/sig/steep/server/change_buffer.rbs +32 -0
- data/sig/steep/server/interaction_worker.rbs +41 -0
- data/sig/steep/server/lsp_formatter.rbs +29 -0
- data/sig/steep/server/master.rbs +260 -0
- data/sig/steep/server/type_check_worker.rbs +135 -0
- data/sig/steep/server/worker_process.rbs +29 -0
- data/sig/steep/services/completion_provider.rbs +5 -5
- data/sig/steep/services/content_change.rbs +14 -12
- data/sig/steep/services/file_loader.rbs +12 -4
- data/sig/steep/services/hover_provider/singleton_methods.rbs +1 -1
- data/sig/steep/services/path_assignment.rbs +7 -7
- data/sig/steep/services/signature_service.rbs +67 -40
- data/sig/steep/services/type_check_service.rbs +53 -39
- data/sig/steep/subtyping/check.rbs +80 -44
- data/sig/steep/subtyping/relation.rbs +24 -22
- data/sig/steep/subtyping/result.rbs +48 -30
- data/sig/steep/subtyping/variable_variance.rbs +2 -0
- data/sig/steep/type_construction.rbs +132 -23
- data/sig/steep/type_inference/block_params.rbs +120 -18
- data/sig/steep/type_inference/context.rbs +45 -20
- data/sig/steep/type_inference/context_array.rbs +37 -0
- data/sig/steep/type_inference/logic_type_interpreter.rbs +3 -1
- data/sig/steep/type_inference/method_params.rbs +13 -9
- data/sig/steep/type_inference/send_args.rbs +229 -0
- data/sig/steep/type_inference/type_env_builder.rbs +1 -1
- data/sig/steep/typing.rbs +4 -4
- data/sig/steep.rbs +4 -2
- data/smoke/block/e.rb +12 -0
- data/smoke/block/e.rbs +4 -0
- data/smoke/block/test_expectations.yml +12 -0
- data/smoke/regression/block_param_split.rb +7 -0
- data/smoke/regression/block_param_split.rbs +3 -0
- data/smoke/regression/empty_yield.rb +5 -0
- data/smoke/regression/empty_yield.rbs +3 -0
- data/smoke/regression/test_expectations.yml +12 -0
- data/smoke/yield/test_expectations.yml +4 -4
- data/steep.gemspec +2 -1
- metadata +63 -9
- data/lib/steep/drivers/utils/jobs_count.rb +0 -9
- data/lib/steep/interface/interface.rb +0 -34
- data/sig/steep/interface/interface.rbs +0 -23
- data/sig/version.rbs +0 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 93e3e37cfc8107518827a5b5e7126618c6189fae7804456e706b8ee810941ad7
|
4
|
+
data.tar.gz: c80ef32b93abb3f0c1f6f77eba1a675c993a2eb94632825f9057f76a39edb0ce
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 72d8aadb1ea9454f47f4ab98dbd353c8372aa676096923c05d13d87f3b226fc7102c573bf02d563a5adbb2a072747ff5e9ea282e33cf0654ad3d3f562ebe81a5
|
7
|
+
data.tar.gz: 15fe6ea35cb298337440074e188178c6fdf73a03b5104fbca92863f8863862bfbb9d8e942e0b2482394307a19061185335da442af29d878c7d98f904ee52d2ab
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,37 @@
|
|
2
2
|
|
3
3
|
## master
|
4
4
|
|
5
|
+
## 1.2.0 (2022-10-08)
|
6
|
+
|
7
|
+
### Commandline tool
|
8
|
+
|
9
|
+
* Refactor `--jobs` and `--steep-command` option handling ([#654](https://github.com/soutaro/steep/pull/654))
|
10
|
+
|
11
|
+
### Miscellaneous
|
12
|
+
|
13
|
+
* Delete debug prints ([#653](https://github.com/soutaro/steep/pull/653))
|
14
|
+
* Update RBS to 2.7.0 ([#655](https://github.com/soutaro/steep/pull/655))
|
15
|
+
|
16
|
+
## 1.2.0.pre.1 (2022-10-06)
|
17
|
+
|
18
|
+
### Type checker core
|
19
|
+
|
20
|
+
* Support type checking block/proc self type binding ([#637](https://github.com/soutaro/steep/pull/637))
|
21
|
+
* Type check multiple assignment on block parameters ([#641](https://github.com/soutaro/steep/pull/641), [#643](https://github.com/soutaro/steep/pull/643))
|
22
|
+
* Make more multiple assignments type check ([#630](https://github.com/soutaro/steep/pull/630))
|
23
|
+
* Refactor *shape* calculation ([#635](https://github.com/soutaro/steep/pull/635), [#649
|
24
|
+
](https://github.com/soutaro/steep/pull/649))
|
25
|
+
* Report type errors if argument mismatch on yield ([#640](https://github.com/soutaro/steep/pull/640))
|
26
|
+
* Relax caching requirements to cache more results ([#651](https://github.com/soutaro/steep/pull/651))
|
27
|
+
|
28
|
+
### Commandline tool
|
29
|
+
|
30
|
+
* Add `steep checkfile` command ([#650](https://github.com/soutaro/steep/pull/650))
|
31
|
+
|
32
|
+
### Miscellaneous
|
33
|
+
|
34
|
+
* Add docs for sublime text integration ([#633](https://github.com/soutaro/steep/pull/633))
|
35
|
+
|
5
36
|
## 1.1.1 (2022-07-31)
|
6
37
|
|
7
38
|
### Type checker core
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,20 +1,21 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
steep (1.
|
4
|
+
steep (1.2.0)
|
5
5
|
activesupport (>= 5.1)
|
6
6
|
language_server-protocol (>= 3.15, < 4.0)
|
7
7
|
listen (~> 3.0)
|
8
8
|
parallel (>= 1.0.0)
|
9
9
|
parser (>= 3.1)
|
10
10
|
rainbow (>= 2.2.2, < 4.0)
|
11
|
-
rbs (>= 2.
|
11
|
+
rbs (>= 2.7.0)
|
12
|
+
securerandom (>= 0.1)
|
12
13
|
terminal-table (>= 2, < 4)
|
13
14
|
|
14
15
|
GEM
|
15
16
|
remote: https://rubygems.org/
|
16
17
|
specs:
|
17
|
-
activesupport (7.0.
|
18
|
+
activesupport (7.0.4)
|
18
19
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
19
20
|
i18n (>= 1.6, < 2)
|
20
21
|
minitest (>= 5.1)
|
@@ -27,32 +28,33 @@ GEM
|
|
27
28
|
ffi (1.15.5)
|
28
29
|
i18n (1.12.0)
|
29
30
|
concurrent-ruby (~> 1.0)
|
30
|
-
language_server-protocol (3.
|
31
|
+
language_server-protocol (3.17.0.1)
|
31
32
|
listen (3.7.1)
|
32
33
|
rb-fsevent (~> 0.10, >= 0.10.3)
|
33
34
|
rb-inotify (~> 0.9, >= 0.9.10)
|
34
|
-
minitest (5.16.
|
35
|
+
minitest (5.16.3)
|
35
36
|
minitest-hooks (1.5.0)
|
36
37
|
minitest (> 5.3)
|
37
38
|
minitest-slow_test (0.2.0)
|
38
39
|
minitest (>= 5.0)
|
39
40
|
parallel (1.22.1)
|
40
|
-
parser (3.1.2.
|
41
|
+
parser (3.1.2.1)
|
41
42
|
ast (~> 2.4.1)
|
42
43
|
rainbow (3.1.1)
|
43
44
|
rake (13.0.6)
|
44
|
-
rb-fsevent (0.11.
|
45
|
+
rb-fsevent (0.11.2)
|
45
46
|
rb-inotify (0.10.1)
|
46
47
|
ffi (~> 1.0)
|
47
|
-
rbs (2.
|
48
|
+
rbs (2.7.0)
|
48
49
|
ruby-debug-ide (0.7.3)
|
49
50
|
rake (>= 0.8.1)
|
50
|
-
|
51
|
+
securerandom (0.2.0)
|
52
|
+
stackprof (0.2.21)
|
51
53
|
terminal-table (3.0.2)
|
52
54
|
unicode-display_width (>= 1.1.1, < 3)
|
53
55
|
tzinfo (2.0.5)
|
54
56
|
concurrent-ruby (~> 1.0)
|
55
|
-
unicode-display_width (2.
|
57
|
+
unicode-display_width (2.3.0)
|
56
58
|
|
57
59
|
PLATFORMS
|
58
60
|
ruby
|
@@ -63,7 +65,6 @@ DEPENDENCIES
|
|
63
65
|
minitest-hooks
|
64
66
|
minitest-slow_test
|
65
67
|
rake
|
66
|
-
rbs (~> 2.5.1)
|
67
68
|
ruby-debug-ide
|
68
69
|
stackprof
|
69
70
|
steep!
|
data/Gemfile.steep
CHANGED
data/Gemfile.steep.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
GEM
|
2
2
|
remote: https://rubygems.org/
|
3
3
|
specs:
|
4
|
-
activesupport (7.0.
|
4
|
+
activesupport (7.0.4)
|
5
5
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
6
6
|
i18n (>= 1.6, < 2)
|
7
7
|
minitest (>= 5.1)
|
@@ -11,20 +11,20 @@ GEM
|
|
11
11
|
ffi (1.15.5)
|
12
12
|
i18n (1.12.0)
|
13
13
|
concurrent-ruby (~> 1.0)
|
14
|
-
language_server-protocol (3.
|
14
|
+
language_server-protocol (3.17.0.1)
|
15
15
|
listen (3.7.1)
|
16
16
|
rb-fsevent (~> 0.10, >= 0.10.3)
|
17
17
|
rb-inotify (~> 0.9, >= 0.9.10)
|
18
|
-
minitest (5.16.
|
18
|
+
minitest (5.16.3)
|
19
19
|
parallel (1.22.1)
|
20
|
-
parser (3.1.2.
|
20
|
+
parser (3.1.2.1)
|
21
21
|
ast (~> 2.4.1)
|
22
22
|
rainbow (3.1.1)
|
23
|
-
rb-fsevent (0.11.
|
23
|
+
rb-fsevent (0.11.2)
|
24
24
|
rb-inotify (0.10.1)
|
25
25
|
ffi (~> 1.0)
|
26
|
-
rbs (2.
|
27
|
-
steep (1.1.
|
26
|
+
rbs (2.7.0.pre.2)
|
27
|
+
steep (1.1.1)
|
28
28
|
activesupport (>= 5.1)
|
29
29
|
language_server-protocol (>= 3.15, < 4.0)
|
30
30
|
listen (~> 3.0)
|
@@ -37,13 +37,13 @@ GEM
|
|
37
37
|
unicode-display_width (>= 1.1.1, < 3)
|
38
38
|
tzinfo (2.0.5)
|
39
39
|
concurrent-ruby (~> 1.0)
|
40
|
-
unicode-display_width (2.
|
40
|
+
unicode-display_width (2.3.0)
|
41
41
|
|
42
42
|
PLATFORMS
|
43
43
|
arm64-darwin-21
|
44
44
|
|
45
45
|
DEPENDENCIES
|
46
|
-
rbs (~> 2.
|
46
|
+
rbs (~> 2.7.pre)
|
47
47
|
steep (~> 1.1.0)
|
48
48
|
|
49
49
|
BUNDLED WITH
|
data/README.md
CHANGED
@@ -207,9 +207,9 @@ You can find examples in `smoke` directory.
|
|
207
207
|
|
208
208
|
## IDEs
|
209
209
|
|
210
|
-
Steep implements some of the Language Server Protocol features.
|
211
|
-
|
212
|
-
- https://github.com/
|
210
|
+
Steep implements some of the Language Server Protocol features.
|
211
|
+
- For **VSCode** please install [the plugin](https://github.com/soutaro/steep-vscode)
|
212
|
+
- For **SublimeText** please install [LSP](https://github.com/sublimelsp/LSP) package and follow [instructions](https://lsp.sublimetext.io/language_servers/#steep)
|
213
213
|
|
214
214
|
Other LSP supporting tools may work with Steep where it starts the server as `steep langserver`.
|
215
215
|
|
data/Steepfile
CHANGED
@@ -3,4 +3,28 @@ target :app do
|
|
3
3
|
signature "sig"
|
4
4
|
|
5
5
|
collection_config "rbs_collection.steep.yaml"
|
6
|
+
|
7
|
+
signature "../rbs/sig", "../rbs/stdlib/rdoc/0"
|
8
|
+
library(
|
9
|
+
"set",
|
10
|
+
"pathname",
|
11
|
+
"json",
|
12
|
+
"logger",
|
13
|
+
"monitor",
|
14
|
+
"tsort",
|
15
|
+
"uri",
|
16
|
+
'yaml',
|
17
|
+
'dbm',
|
18
|
+
'pstore',
|
19
|
+
'singleton',
|
20
|
+
'shellwords',
|
21
|
+
'fileutils',
|
22
|
+
'find',
|
23
|
+
'digest',
|
24
|
+
"strscan",
|
25
|
+
"rubygems",
|
26
|
+
"optparse",
|
27
|
+
"securerandom",
|
28
|
+
"csv"
|
29
|
+
)
|
6
30
|
end
|
data/bin/steep-prof
CHANGED
@@ -4,12 +4,13 @@ require "stackprof"
|
|
4
4
|
|
5
5
|
mode = (ENV["STEEP_STACKPROF_MODE"] || :wall).to_sym
|
6
6
|
out = ENV["STEEP_STACKPROF_OUT"] || "tmp/stackprof-#{mode}-steep.dump"
|
7
|
+
interval = ENV["STEEP_STACKPROF_INTERVAL"]&.to_i || 1000
|
7
8
|
|
8
9
|
def exit(*)
|
9
10
|
|
10
11
|
end
|
11
12
|
|
12
13
|
STDERR.puts "Running profiler: mode=#{mode}, out=#{out}"
|
13
|
-
StackProf.run(mode: mode, out: out, raw: true) do
|
14
|
+
StackProf.run(mode: mode, out: out, raw: true, interval: interval) do
|
14
15
|
load File.join(__dir__, "../exe/steep")
|
15
16
|
end
|
@@ -76,7 +76,7 @@ module Steep
|
|
76
76
|
name = match[:name]
|
77
77
|
type = match[:type]
|
78
78
|
|
79
|
-
method_type = factory.method_type(RBS::Parser.parse_method_type(type),
|
79
|
+
method_type = factory.method_type(RBS::Parser.parse_method_type(type), method_decls: Set[])
|
80
80
|
|
81
81
|
AST::Annotation::MethodType.new(name: name.to_sym,
|
82
82
|
type: method_type,
|