steep 1.3.0.pre.2 → 1.4.0.dev.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/.github/workflows/ruby-windows.yml +1 -0
- data/.github/workflows/ruby.yml +1 -5
- data/CHANGELOG.md +6 -0
- data/Gemfile +2 -0
- data/Gemfile.lock +17 -14
- data/Gemfile.steep +2 -2
- data/Gemfile.steep.lock +5 -5
- data/bin/rbs +21 -0
- data/bin/setup +1 -1
- data/lib/steep/ast/types/class.rb +9 -3
- data/lib/steep/ast/types/factory.rb +9 -2
- data/lib/steep/ast/types/instance.rb +8 -3
- data/lib/steep/ast/types/intersection.rb +6 -2
- data/lib/steep/ast/types/literal.rb +1 -1
- data/lib/steep/ast/types/logic.rb +1 -3
- data/lib/steep/ast/types/name.rb +11 -5
- data/lib/steep/ast/types/proc.rb +5 -5
- data/lib/steep/ast/types/record.rb +5 -1
- data/lib/steep/ast/types/self.rb +8 -2
- data/lib/steep/ast/types/tuple.rb +7 -5
- data/lib/steep/ast/types/union.rb +10 -4
- data/lib/steep/ast/types/var.rb +1 -1
- data/lib/steep/index/rbs_index.rb +13 -6
- data/lib/steep/interface/substitution.rb +11 -10
- data/lib/steep/project/dsl.rb +12 -4
- data/lib/steep/project/options.rb +3 -1
- data/lib/steep/signature/validator.rb +13 -13
- data/lib/steep/type_inference/logic_type_interpreter.rb +2 -2
- data/lib/steep/version.rb +1 -1
- data/lib/steep.rb +0 -1
- data/rbs_collection.steep.lock.yaml +44 -43
- data/sig/steep/ast/builtin.rbs +1 -1
- data/sig/steep/ast/types/any.rbs +5 -5
- data/sig/steep/ast/types/boolean.rbs +6 -6
- data/sig/steep/ast/types/bot.rbs +5 -5
- data/sig/steep/ast/types/class.rbs +7 -6
- data/sig/steep/ast/types/helper.rbs +2 -2
- data/sig/steep/ast/types/instance.rbs +6 -5
- data/sig/steep/ast/types/intersection.rbs +12 -9
- data/sig/steep/ast/types/literal.rbs +6 -4
- data/sig/steep/ast/types/logic.rbs +7 -9
- data/sig/steep/ast/types/name.rbs +7 -3
- data/sig/steep/ast/types/nil.rbs +6 -6
- data/sig/steep/ast/types/proc.rbs +8 -3
- data/sig/steep/ast/types/record.rbs +7 -8
- data/sig/steep/ast/types/self.rbs +7 -6
- data/sig/steep/ast/types/top.rbs +6 -6
- data/sig/steep/ast/types/tuple.rbs +5 -4
- data/sig/steep/ast/types/union.rbs +8 -8
- data/sig/steep/ast/types/var.rbs +16 -11
- data/sig/steep/ast/types/void.rbs +5 -5
- data/sig/steep/ast/types.rbs +5 -26
- data/sig/steep/index/rbs_index.rbs +83 -37
- data/sig/steep/interface/substitution.rbs +9 -9
- data/sig/steep/project/dsl.rbs +35 -30
- data/sig/steep/project/options.rbs +16 -4
- data/smoke/diagnostics-rbs/test_expectations.yml +1 -1
- data/steep.gemspec +3 -2
- metadata +21 -7
- data/lib/steep/ast/types.rb +0 -62
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bdccb93c5fd95bbc2e6af98021d0beadfb7aab30f3b398cb9e8414d5ea0e6f38
|
4
|
+
data.tar.gz: 6dfab6ba13555e6a6c37c69950383e1e7608c21bc26eacf1a695de91a5fe6293
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c09f6cd8780f428305edc405885c4080816470c05815515c8005e368532146b1e99e939699b3ff835d6909a2beeae074e38b79a1c8e2121652d008fc2f759316
|
7
|
+
data.tar.gz: a579bca90d0a7cd5a689068e7de97ca2d5ac9d7d40ccd291d2b61df57f519997bbf8c3e376904b4369c256aac75b62a5ee89915940436ded62c68212a4926e50
|
data/.github/workflows/ruby.yml
CHANGED
@@ -11,10 +11,10 @@ jobs:
|
|
11
11
|
strategy:
|
12
12
|
matrix:
|
13
13
|
container_tag:
|
14
|
-
- "2.6"
|
15
14
|
- "2.7"
|
16
15
|
- "3.0"
|
17
16
|
- "3.1"
|
17
|
+
- "3.2"
|
18
18
|
- "master-nightly-focal"
|
19
19
|
task:
|
20
20
|
- test
|
@@ -25,10 +25,6 @@ jobs:
|
|
25
25
|
image: rubylang/ruby:${{ matrix.container_tag }}
|
26
26
|
steps:
|
27
27
|
- uses: actions/checkout@v3
|
28
|
-
- name: Reset bundler
|
29
|
-
run: |
|
30
|
-
rm Gemfile.lock Gemfile.steep.lock
|
31
|
-
if: contains(matrix.container_tag, '2.6')
|
32
28
|
- name: Run test
|
33
29
|
run: |
|
34
30
|
git config --global --add safe.directory /__w/steep/steep
|
data/CHANGELOG.md
CHANGED
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
steep (1.
|
4
|
+
steep (1.4.0.dev.1)
|
5
5
|
activesupport (>= 5.1)
|
6
6
|
csv (>= 3.0.9)
|
7
7
|
fileutils (>= 1.1.0)
|
@@ -11,8 +11,9 @@ PATH
|
|
11
11
|
logger (>= 1.3.0)
|
12
12
|
parallel (>= 1.0.0)
|
13
13
|
parser (>= 3.1)
|
14
|
+
pathname (>= 0.2.1)
|
14
15
|
rainbow (>= 2.2.2, < 4.0)
|
15
|
-
rbs (>= 2.8.0
|
16
|
+
rbs (>= 2.8.0)
|
16
17
|
securerandom (>= 0.1)
|
17
18
|
strscan (>= 1.0.0)
|
18
19
|
terminal-table (>= 2, < 4)
|
@@ -27,44 +28,45 @@ GEM
|
|
27
28
|
tzinfo (~> 2.0)
|
28
29
|
ast (2.4.2)
|
29
30
|
concurrent-ruby (1.1.10)
|
30
|
-
csv (3.2.
|
31
|
+
csv (3.2.6)
|
31
32
|
debase (0.2.5.beta2)
|
32
33
|
debase-ruby_core_source (>= 0.10.12)
|
33
|
-
debase-ruby_core_source (
|
34
|
+
debase-ruby_core_source (3.2.0)
|
34
35
|
ffi (1.15.5)
|
35
|
-
fileutils (1.
|
36
|
+
fileutils (1.7.0)
|
36
37
|
i18n (1.12.0)
|
37
38
|
concurrent-ruby (~> 1.0)
|
38
|
-
json (2.6.
|
39
|
-
language_server-protocol (3.17.0.
|
39
|
+
json (2.6.3)
|
40
|
+
language_server-protocol (3.17.0.2)
|
40
41
|
listen (3.7.1)
|
41
42
|
rb-fsevent (~> 0.10, >= 0.10.3)
|
42
43
|
rb-inotify (~> 0.9, >= 0.9.10)
|
43
|
-
logger (1.5.
|
44
|
+
logger (1.5.3)
|
44
45
|
minitest (5.16.3)
|
45
46
|
minitest-hooks (1.5.0)
|
46
47
|
minitest (> 5.3)
|
47
48
|
minitest-slow_test (0.2.0)
|
48
49
|
minitest (>= 5.0)
|
49
50
|
parallel (1.22.1)
|
50
|
-
parser (3.
|
51
|
+
parser (3.2.0.0)
|
51
52
|
ast (~> 2.4.1)
|
53
|
+
pathname (0.2.1)
|
52
54
|
rainbow (3.1.1)
|
53
55
|
rake (13.0.6)
|
54
56
|
rb-fsevent (0.11.2)
|
55
57
|
rb-inotify (0.10.1)
|
56
58
|
ffi (~> 1.0)
|
57
|
-
rbs (
|
59
|
+
rbs (3.0.0.dev.1)
|
58
60
|
ruby-debug-ide (0.7.3)
|
59
61
|
rake (>= 0.8.1)
|
60
|
-
securerandom (0.2.
|
61
|
-
stackprof (0.2.
|
62
|
-
strscan (3.0.
|
62
|
+
securerandom (0.2.2)
|
63
|
+
stackprof (0.2.23)
|
64
|
+
strscan (3.0.5)
|
63
65
|
terminal-table (3.0.2)
|
64
66
|
unicode-display_width (>= 1.1.1, < 3)
|
65
67
|
tzinfo (2.0.5)
|
66
68
|
concurrent-ruby (~> 1.0)
|
67
|
-
unicode-display_width (2.
|
69
|
+
unicode-display_width (2.4.2)
|
68
70
|
|
69
71
|
PLATFORMS
|
70
72
|
ruby
|
@@ -75,6 +77,7 @@ DEPENDENCIES
|
|
75
77
|
minitest-hooks
|
76
78
|
minitest-slow_test
|
77
79
|
rake
|
80
|
+
rbs (~> 3.0.0.dev)
|
78
81
|
ruby-debug-ide
|
79
82
|
stackprof
|
80
83
|
steep!
|
data/Gemfile.steep
CHANGED
data/Gemfile.steep.lock
CHANGED
@@ -27,9 +27,9 @@ GEM
|
|
27
27
|
rb-fsevent (0.11.2)
|
28
28
|
rb-inotify (0.10.1)
|
29
29
|
ffi (~> 1.0)
|
30
|
-
rbs (
|
30
|
+
rbs (3.0.0.dev.1)
|
31
31
|
securerandom (0.2.0)
|
32
|
-
steep (1.
|
32
|
+
steep (1.3.0)
|
33
33
|
activesupport (>= 5.1)
|
34
34
|
csv (>= 3.0.9)
|
35
35
|
fileutils (>= 1.1.0)
|
@@ -40,7 +40,7 @@ GEM
|
|
40
40
|
parallel (>= 1.0.0)
|
41
41
|
parser (>= 3.1)
|
42
42
|
rainbow (>= 2.2.2, < 4.0)
|
43
|
-
rbs (>= 2.
|
43
|
+
rbs (>= 2.8.0)
|
44
44
|
securerandom (>= 0.1)
|
45
45
|
strscan (>= 1.0.0)
|
46
46
|
terminal-table (>= 2, < 4)
|
@@ -55,8 +55,8 @@ PLATFORMS
|
|
55
55
|
arm64-darwin-21
|
56
56
|
|
57
57
|
DEPENDENCIES
|
58
|
-
rbs (~>
|
59
|
-
steep (~> 1.
|
58
|
+
rbs (~> 3.0.0.dev)
|
59
|
+
steep (~> 1.3.0)
|
60
60
|
|
61
61
|
BUNDLED WITH
|
62
62
|
2.3.15
|
data/bin/rbs
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
#!/usr/bin/env bash
|
2
|
+
|
3
|
+
BINSTUB_DIR=$(cd $(dirname $0); pwd)
|
4
|
+
GEMFILE=$(readlink -f ${BINSTUB_DIR}/../Gemfile.steep)
|
5
|
+
COLLECTION=$(readlink -f ${BINSTUB_DIR}/../rbs_collection.steep.yaml)
|
6
|
+
ROOT_DIR=$(readlink -f ${BINSTUB_DIR}/..)
|
7
|
+
|
8
|
+
RBS="bundle exec --gemfile=${GEMFILE} rbs --collection=${COLLECTION}"
|
9
|
+
|
10
|
+
if type "rbenv" > /dev/null 2>&1; then
|
11
|
+
RBS="rbenv exec ${RBS}"
|
12
|
+
else
|
13
|
+
if type "rvm" > /dev/null 2>&1; then
|
14
|
+
if [ -e ${ROOT_DIR}/.ruby-version ]; then
|
15
|
+
RBS="rvm ${ROOT_DIR} do ${RBS}"
|
16
|
+
fi
|
17
|
+
fi
|
18
|
+
fi
|
19
|
+
|
20
|
+
exec $RBS $@
|
21
|
+
|
data/bin/setup
CHANGED
@@ -27,11 +27,17 @@ module Steep
|
|
27
27
|
alias eql? ==
|
28
28
|
|
29
29
|
def subst(s)
|
30
|
-
s.module_type
|
30
|
+
if s.module_type
|
31
|
+
s.module_type
|
32
|
+
else
|
33
|
+
self
|
34
|
+
end
|
31
35
|
end
|
32
36
|
|
33
|
-
|
34
|
-
|
37
|
+
@@fvs = Set[instance]
|
38
|
+
|
39
|
+
def free_variables
|
40
|
+
@@fvs
|
35
41
|
end
|
36
42
|
|
37
43
|
include Helper::NoChild
|
@@ -204,7 +204,7 @@ module Steep
|
|
204
204
|
when Logic::Base
|
205
205
|
RBS::Types::Bases::Bool.new(location: type.location)
|
206
206
|
else
|
207
|
-
raise "Unexpected type given: #{type} (#{type.class})"
|
207
|
+
__skip__ = raise "Unexpected type given: #{type} (#{type.class})"
|
208
208
|
end
|
209
209
|
end
|
210
210
|
|
@@ -248,7 +248,14 @@ module Steep
|
|
248
248
|
RBS::AST::TypeParam.new(
|
249
249
|
name: type_param.name,
|
250
250
|
variance: type_param.variance,
|
251
|
-
upper_bound: type_param.upper_bound&.yield_self {|u|
|
251
|
+
upper_bound: type_param.upper_bound&.yield_self {|u|
|
252
|
+
case u_ = type_1(u)
|
253
|
+
when RBS::Types::ClassInstance, RBS::Types::ClassSingleton, RBS::Types::Interface
|
254
|
+
u_
|
255
|
+
else
|
256
|
+
raise "`#{u_}` cannot be type parameter upper bound"
|
257
|
+
end
|
258
|
+
},
|
252
259
|
location: type_param.location
|
253
260
|
).unchecked!(type_param.unchecked)
|
254
261
|
end
|
@@ -23,11 +23,16 @@ module Steep
|
|
23
23
|
alias eql? ==
|
24
24
|
|
25
25
|
def subst(s)
|
26
|
-
s.instance_type
|
26
|
+
if s.instance_type
|
27
|
+
s.instance_type
|
28
|
+
else
|
29
|
+
self
|
30
|
+
end
|
27
31
|
end
|
28
32
|
|
29
|
-
|
30
|
-
|
33
|
+
@@fvs = Set[instance]
|
34
|
+
def free_variables
|
35
|
+
@@fvs
|
31
36
|
end
|
32
37
|
|
33
38
|
include Helper::NoChild
|
@@ -35,7 +35,7 @@ module Steep
|
|
35
35
|
when 0
|
36
36
|
AST::Types::Top.new(location: location)
|
37
37
|
when 1
|
38
|
-
tys.first
|
38
|
+
tys.first || raise
|
39
39
|
else
|
40
40
|
new(types: dups.to_a, location: location)
|
41
41
|
end
|
@@ -73,7 +73,11 @@ module Steep
|
|
73
73
|
include Helper::ChildrenLevel
|
74
74
|
|
75
75
|
def each_child(&block)
|
76
|
-
|
76
|
+
if block
|
77
|
+
types.each(&block)
|
78
|
+
else
|
79
|
+
types.each
|
80
|
+
end
|
77
81
|
end
|
78
82
|
|
79
83
|
def level
|
data/lib/steep/ast/types/name.rb
CHANGED
@@ -51,14 +51,16 @@ module Steep
|
|
51
51
|
end
|
52
52
|
|
53
53
|
def with_location(new_location)
|
54
|
-
self.class.new(name: name, args: args, location: new_location)
|
54
|
+
_ = self.class.new(name: name, args: args, location: new_location)
|
55
55
|
end
|
56
56
|
|
57
57
|
def subst(s)
|
58
58
|
if free_variables.intersect?(s.domain)
|
59
|
-
self.class.new(
|
60
|
-
|
61
|
-
|
59
|
+
_ = self.class.new(
|
60
|
+
location: location,
|
61
|
+
name: name,
|
62
|
+
args: args.map {|a| a.subst(s) }
|
63
|
+
)
|
62
64
|
else
|
63
65
|
self
|
64
66
|
end
|
@@ -73,7 +75,11 @@ module Steep
|
|
73
75
|
end
|
74
76
|
|
75
77
|
def each_child(&block)
|
76
|
-
|
78
|
+
if block
|
79
|
+
args.each(&block)
|
80
|
+
else
|
81
|
+
args.each
|
82
|
+
end
|
77
83
|
end
|
78
84
|
|
79
85
|
include Helper::ChildrenLevel
|
data/lib/steep/ast/types/proc.rb
CHANGED
@@ -68,10 +68,6 @@ module Steep
|
|
68
68
|
[0] + level_of_children(children)
|
69
69
|
end
|
70
70
|
|
71
|
-
def closed?
|
72
|
-
type.closed? && (block.nil? || block.closed?) && (self_type ? self_type.closed? : false)
|
73
|
-
end
|
74
|
-
|
75
71
|
def with_location(new_location)
|
76
72
|
self.class.new(location: new_location, block: block, type: type, self_type: self_type)
|
77
73
|
end
|
@@ -103,7 +99,11 @@ module Steep
|
|
103
99
|
end
|
104
100
|
|
105
101
|
def block_required?
|
106
|
-
|
102
|
+
if block
|
103
|
+
!block.optional?
|
104
|
+
else
|
105
|
+
false
|
106
|
+
end
|
107
107
|
end
|
108
108
|
|
109
109
|
def each_child(&block)
|
data/lib/steep/ast/types/self.rb
CHANGED
@@ -29,11 +29,17 @@ module Steep
|
|
29
29
|
include Helper::NoChild
|
30
30
|
|
31
31
|
def subst(s)
|
32
|
-
s.self_type
|
32
|
+
if s.self_type
|
33
|
+
s.self_type
|
34
|
+
else
|
35
|
+
self
|
36
|
+
end
|
33
37
|
end
|
34
38
|
|
39
|
+
@@fvs = Set[instance]
|
40
|
+
|
35
41
|
def free_variables
|
36
|
-
|
42
|
+
@@fvs
|
37
43
|
end
|
38
44
|
|
39
45
|
def level
|
@@ -31,17 +31,19 @@ module Steep
|
|
31
31
|
end
|
32
32
|
|
33
33
|
def free_variables()
|
34
|
-
@fvs ||= Set
|
35
|
-
|
36
|
-
set.merge(type.free_variables)
|
37
|
-
end
|
34
|
+
@fvs ||= each_child.with_object(Set[]) do |type, set| #$ Set[variable]
|
35
|
+
set.merge(type.free_variables)
|
38
36
|
end
|
39
37
|
end
|
40
38
|
|
41
39
|
include Helper::ChildrenLevel
|
42
40
|
|
43
41
|
def each_child(&block)
|
44
|
-
|
42
|
+
if block
|
43
|
+
types.each(&block)
|
44
|
+
else
|
45
|
+
types.each
|
46
|
+
end
|
45
47
|
end
|
46
48
|
|
47
49
|
def level
|
@@ -12,7 +12,9 @@ module Steep
|
|
12
12
|
|
13
13
|
def self.build(types:, location: nil)
|
14
14
|
return AST::Types::Bot.new if types.empty?
|
15
|
-
|
15
|
+
if types.size == 1
|
16
|
+
return types.first || raise
|
17
|
+
end
|
16
18
|
|
17
19
|
types.flat_map do |type|
|
18
20
|
if type.is_a?(Union)
|
@@ -36,7 +38,7 @@ module Steep
|
|
36
38
|
when 0
|
37
39
|
AST::Types::Bot.new
|
38
40
|
when 1
|
39
|
-
tys.first
|
41
|
+
tys.first || raise
|
40
42
|
else
|
41
43
|
new(types: tys, location: location)
|
42
44
|
end
|
@@ -49,7 +51,7 @@ module Steep
|
|
49
51
|
end
|
50
52
|
|
51
53
|
def hash
|
52
|
-
@hash ||= types.inject(self.class.hash) {|c, type| type.hash ^ c }
|
54
|
+
@hash ||= types.inject(self.class.hash) {|c, type| type.hash ^ c } #$ Integer
|
53
55
|
end
|
54
56
|
|
55
57
|
alias eql? ==
|
@@ -71,7 +73,11 @@ module Steep
|
|
71
73
|
end
|
72
74
|
|
73
75
|
def each_child(&block)
|
74
|
-
|
76
|
+
if block
|
77
|
+
types.each(&block)
|
78
|
+
else
|
79
|
+
types.each
|
80
|
+
end
|
75
81
|
end
|
76
82
|
|
77
83
|
include Helper::ChildrenLevel
|
data/lib/steep/ast/types/var.rb
CHANGED
@@ -148,7 +148,7 @@ module Steep
|
|
148
148
|
end
|
149
149
|
|
150
150
|
def each_entry(&block)
|
151
|
-
if
|
151
|
+
if block
|
152
152
|
type_index.each_value(&block)
|
153
153
|
method_index.each_value(&block)
|
154
154
|
const_index.each_value(&block)
|
@@ -176,7 +176,7 @@ module Steep
|
|
176
176
|
|
177
177
|
def each_declaration(type_name: nil, method_name: nil, const_name: nil, global_name: nil, &block)
|
178
178
|
if block
|
179
|
-
entry = entry(type_name: type_name, method_name: method_name, const_name: const_name, global_name: global_name)
|
179
|
+
entry = __skip__ = entry(type_name: type_name, method_name: method_name, const_name: const_name, global_name: global_name)
|
180
180
|
entry.declarations.each(&block)
|
181
181
|
else
|
182
182
|
enum_for(:each_declaration, type_name: type_name, method_name: method_name, const_name: const_name, global_name: global_name)
|
@@ -187,9 +187,12 @@ module Steep
|
|
187
187
|
entry(type_name: type_name).add_reference(ref)
|
188
188
|
end
|
189
189
|
|
190
|
-
def each_reference(type_name
|
190
|
+
def each_reference(type_name:, &block)
|
191
191
|
if block
|
192
|
-
|
192
|
+
case
|
193
|
+
when type_name
|
194
|
+
entry(type_name: type_name).references.each(&block)
|
195
|
+
end
|
193
196
|
else
|
194
197
|
enum_for(:each_reference, type_name: type_name)
|
195
198
|
end
|
@@ -205,8 +208,8 @@ module Steep
|
|
205
208
|
def member(type_name, member)
|
206
209
|
case member
|
207
210
|
when RBS::AST::Members::MethodDefinition
|
208
|
-
member.
|
209
|
-
method_type.each_type do |type|
|
211
|
+
member.overloads.each do |overload|
|
212
|
+
overload.method_type.each_type do |type|
|
210
213
|
type_reference type, from: member
|
211
214
|
end
|
212
215
|
end
|
@@ -230,6 +233,8 @@ module Steep
|
|
230
233
|
InstanceMethodName.new(type_name: type_name, method_name: member.name)
|
231
234
|
when :singleton
|
232
235
|
SingletonMethodName.new(type_name: type_name, method_name: member.name)
|
236
|
+
else
|
237
|
+
raise
|
233
238
|
end
|
234
239
|
index.add_method_declaration(method_name, member)
|
235
240
|
end
|
@@ -240,6 +245,8 @@ module Steep
|
|
240
245
|
InstanceMethodName.new(type_name: type_name, method_name: "#{member.name}=".to_sym)
|
241
246
|
when :singleton
|
242
247
|
SingletonMethodName.new(type_name: type_name, method_name: "#{member.name}=".to_sym)
|
248
|
+
else
|
249
|
+
raise
|
243
250
|
end
|
244
251
|
index.add_method_declaration(method_name, member)
|
245
252
|
end
|
@@ -6,7 +6,7 @@ module Steep
|
|
6
6
|
attr_reader :types_size
|
7
7
|
|
8
8
|
def initialize(vars_size:, types_size:)
|
9
|
-
@
|
9
|
+
@vars_size = vars_size
|
10
10
|
@types_size = types_size
|
11
11
|
|
12
12
|
super "Invalid substitution: vars.size=#{vars_size}, types.size=#{types_size}"
|
@@ -43,15 +43,15 @@ module Steep
|
|
43
43
|
set = Set.new
|
44
44
|
|
45
45
|
set.merge(dictionary.keys)
|
46
|
-
set << AST::Types::
|
47
|
-
set << AST::Types::Class.instance
|
48
|
-
set << AST::Types::Instance.instance
|
46
|
+
set << AST::Types::Self.instance if self_type
|
47
|
+
set << AST::Types::Class.instance if module_type
|
48
|
+
set << AST::Types::Instance.instance if instance_type
|
49
49
|
|
50
50
|
set
|
51
51
|
end
|
52
52
|
|
53
53
|
def to_s
|
54
|
-
a = []
|
54
|
+
a = [] #: Array[String]
|
55
55
|
|
56
56
|
dictionary.each do |x, ty|
|
57
57
|
a << "#{x} -> #{ty}"
|
@@ -87,12 +87,13 @@ module Steep
|
|
87
87
|
end
|
88
88
|
end
|
89
89
|
|
90
|
-
def self.build(vars, types = nil, instance_type:
|
90
|
+
def self.build(vars, types = nil, instance_type: nil, module_type: nil, self_type: nil)
|
91
91
|
types ||= vars.map {|var| AST::Types::Var.fresh(var) }
|
92
92
|
|
93
93
|
raise InvalidSubstitutionError.new(vars_size: vars.size, types_size: types.size) unless vars.size == types.size
|
94
94
|
|
95
|
-
dic = vars.zip(types).each.with_object({}) do |(var, type), d|
|
95
|
+
dic = vars.zip(types).each.with_object({}) do |(var, type), d| #$ Hash[Symbol, AST::Types::t]
|
96
|
+
type or raise
|
96
97
|
d[var] = type
|
97
98
|
end
|
98
99
|
|
@@ -130,9 +131,9 @@ module Steep
|
|
130
131
|
end
|
131
132
|
end
|
132
133
|
|
133
|
-
@instance_type = instance_type.subst(s)
|
134
|
-
@module_type = module_type.subst(s)
|
135
|
-
@self_type = self_type.subst(s)
|
134
|
+
@instance_type = instance_type.subst(s) if instance_type
|
135
|
+
@module_type = module_type.subst(s) if module_type
|
136
|
+
@self_type = self_type.subst(s) if self_type
|
136
137
|
|
137
138
|
self
|
138
139
|
end
|
data/lib/steep/project/dsl.rb
CHANGED
@@ -172,8 +172,12 @@ module Steep
|
|
172
172
|
yield code_diagnostics_config if block_given?
|
173
173
|
end
|
174
174
|
|
175
|
+
def project!
|
176
|
+
project or raise "TargetDSL doesn't have project (#{name})"
|
177
|
+
end
|
178
|
+
|
175
179
|
def collection_config(path)
|
176
|
-
@collection_config_path = project
|
180
|
+
@collection_config_path = project!.absolute_path(path)
|
177
181
|
end
|
178
182
|
|
179
183
|
def disable_collection
|
@@ -196,7 +200,6 @@ module Steep
|
|
196
200
|
|
197
201
|
def initialize(project:)
|
198
202
|
@project = project
|
199
|
-
@global_signatures = []
|
200
203
|
end
|
201
204
|
|
202
205
|
def self.register_template(name, target)
|
@@ -218,13 +221,18 @@ module Steep
|
|
218
221
|
end
|
219
222
|
|
220
223
|
Steep.logger.tagged "target=#{name}" do
|
221
|
-
target.instance_eval(&block) if
|
224
|
+
target.instance_eval(&block) if block
|
222
225
|
end
|
223
226
|
|
224
227
|
source_pattern = Pattern.new(patterns: target.sources, ignores: target.ignored_sources, ext: ".rb")
|
225
228
|
signature_pattern = Pattern.new(patterns: target.signatures, ext: ".rbs")
|
226
229
|
|
227
|
-
|
230
|
+
|
231
|
+
if config_path = target.collection_config_path
|
232
|
+
lockfile_path = RBS::Collection::Config.to_lockfile_path(config_path)
|
233
|
+
content = YAML.load_file(lockfile_path.to_s)
|
234
|
+
collection_lock = RBS::Collection::Config::Lockfile.from_lockfile(lockfile_path: lockfile_path, data: content)
|
235
|
+
end
|
228
236
|
|
229
237
|
Project::Target.new(
|
230
238
|
name: target.name,
|