steep 1.7.0.dev.1 → 1.7.0.dev.2
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/Gemfile.lock +5 -5
- data/Rakefile +5 -0
- data/gemfile_steep/Gemfile +1 -1
- data/gemfile_steep/Gemfile.lock +5 -5
- data/lib/steep/services/signature_help_provider.rb +13 -11
- data/lib/steep/subtyping/check.rb +6 -0
- data/lib/steep/subtyping/result.rb +6 -0
- data/lib/steep/type_construction.rb +0 -4
- data/lib/steep/version.rb +1 -1
- data/sig/steep/subtyping/check.rbs +2 -0
- data/sig/steep/subtyping/result.rbs +5 -1
- metadata +2 -3
- data/sig/steep/type_inference/branch.rbs +0 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0646b6c1cb596e684bc62461ee2dac160e134bc7e126f447df8f6e46a535c8b6
|
4
|
+
data.tar.gz: fda1f8d1903253537fec79679dd88f3579404372d4fc611a0d4b9d085e5b3502
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 46fe48e86a4fe74482765debeb255e1b806298fb797603ebf292443432506e80ac7ffb7aa964b6331e4f71d2f4e607379340834a6f66866d75bc8c0ca4b73633
|
7
|
+
data.tar.gz: c822e0bf8a0484914423ece12d3d38bebf4102d6f63b1eb79f779cc3bf8aa9b909d34b189a594cf5d0a4f607ed0474d7b9bb2ed6a6c6d400212e329f4d5a8e96
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
steep (1.7.0.dev.
|
4
|
+
steep (1.7.0.dev.2)
|
5
5
|
activesupport (>= 5.1)
|
6
6
|
concurrent-ruby (>= 1.1.10)
|
7
7
|
csv (>= 3.0.9)
|
@@ -21,7 +21,7 @@ GEM
|
|
21
21
|
remote: https://rubygems.org/
|
22
22
|
specs:
|
23
23
|
abbrev (0.1.2)
|
24
|
-
activesupport (7.1.3)
|
24
|
+
activesupport (7.1.3.2)
|
25
25
|
base64
|
26
26
|
bigdecimal
|
27
27
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
@@ -56,7 +56,7 @@ GEM
|
|
56
56
|
rb-fsevent (~> 0.10, >= 0.10.3)
|
57
57
|
rb-inotify (~> 0.9, >= 0.9.10)
|
58
58
|
logger (1.6.0)
|
59
|
-
minitest (5.
|
59
|
+
minitest (5.22.2)
|
60
60
|
minitest-hooks (1.5.1)
|
61
61
|
minitest (> 5.3)
|
62
62
|
minitest-slow_test (0.2.0)
|
@@ -73,7 +73,7 @@ GEM
|
|
73
73
|
rb-fsevent (0.11.2)
|
74
74
|
rb-inotify (0.10.1)
|
75
75
|
ffi (~> 1.0)
|
76
|
-
rbs (3.4.
|
76
|
+
rbs (3.4.4)
|
77
77
|
abbrev
|
78
78
|
rdoc (6.6.2)
|
79
79
|
psych (>= 4.0.0)
|
@@ -83,7 +83,7 @@ GEM
|
|
83
83
|
securerandom (0.3.1)
|
84
84
|
stackprof (0.2.26)
|
85
85
|
stringio (3.1.0)
|
86
|
-
strscan (3.0
|
86
|
+
strscan (3.1.0)
|
87
87
|
terminal-table (3.0.2)
|
88
88
|
unicode-display_width (>= 1.1.1, < 3)
|
89
89
|
tzinfo (2.0.6)
|
data/Rakefile
CHANGED
@@ -188,6 +188,11 @@ NOTES
|
|
188
188
|
milestone = "Steep #{major}.#{minor}.x"
|
189
189
|
end
|
190
190
|
|
191
|
+
if pre =~ /dev/
|
192
|
+
puts "🔍 Skipping `Released` tags because `dev` release: `#{pre}`"
|
193
|
+
next
|
194
|
+
end
|
195
|
+
|
191
196
|
puts "🔍 Finding pull requests that is associated to milestone `#{milestone}`..."
|
192
197
|
|
193
198
|
command = [
|
data/gemfile_steep/Gemfile
CHANGED
data/gemfile_steep/Gemfile.lock
CHANGED
@@ -30,7 +30,7 @@ GEM
|
|
30
30
|
rb-fsevent (~> 0.10, >= 0.10.3)
|
31
31
|
rb-inotify (~> 0.9, >= 0.9.10)
|
32
32
|
logger (1.6.0)
|
33
|
-
minitest (5.
|
33
|
+
minitest (5.22.2)
|
34
34
|
mutex_m (0.2.0)
|
35
35
|
parser (3.3.0.5)
|
36
36
|
ast (~> 2.4.1)
|
@@ -40,11 +40,11 @@ GEM
|
|
40
40
|
rb-fsevent (0.11.2)
|
41
41
|
rb-inotify (0.10.1)
|
42
42
|
ffi (~> 1.0)
|
43
|
-
rbs (3.4.
|
43
|
+
rbs (3.4.4)
|
44
44
|
abbrev
|
45
45
|
ruby2_keywords (0.0.5)
|
46
46
|
securerandom (0.3.1)
|
47
|
-
steep (1.
|
47
|
+
steep (1.7.0.dev.1)
|
48
48
|
activesupport (>= 5.1)
|
49
49
|
concurrent-ruby (>= 1.1.10)
|
50
50
|
csv (>= 3.0.9)
|
@@ -59,7 +59,7 @@ GEM
|
|
59
59
|
securerandom (>= 0.1)
|
60
60
|
strscan (>= 1.0.0)
|
61
61
|
terminal-table (>= 2, < 4)
|
62
|
-
strscan (3.0
|
62
|
+
strscan (3.1.0)
|
63
63
|
terminal-table (3.0.2)
|
64
64
|
unicode-display_width (>= 1.1.1, < 3)
|
65
65
|
tzinfo (2.0.6)
|
@@ -73,7 +73,7 @@ PLATFORMS
|
|
73
73
|
x86_64-linux
|
74
74
|
|
75
75
|
DEPENDENCIES
|
76
|
-
steep
|
76
|
+
steep (~> 1.7.0.dev)
|
77
77
|
|
78
78
|
BUNDLED WITH
|
79
79
|
2.3.15
|
@@ -175,18 +175,20 @@ module Steep
|
|
175
175
|
when :splat
|
176
176
|
method_type.type.required_positionals.size + method_type.type.optional_positionals.size if method_type.type.rest_positionals
|
177
177
|
when :kwargs
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
178
|
+
if argument_nodes[-3]
|
179
|
+
case argument_nodes[-3].type
|
180
|
+
when :pair
|
181
|
+
argname = argument_nodes[-3].children.first.children.first
|
182
|
+
if method_type.type.required_keywords.key?(argname)
|
183
|
+
positionals + method_type.type.required_keywords.keys.index(argname).to_i
|
184
|
+
elsif method_type.type.optional_keywords.key?(argname)
|
185
|
+
positionals + method_type.type.required_keywords.size + method_type.type.optional_keywords.keys.index(argname).to_i
|
186
|
+
elsif method_type.type.rest_keywords
|
187
|
+
positionals + method_type.type.required_keywords.size + method_type.type.optional_keywords.size
|
188
|
+
end
|
189
|
+
when :kwsplat
|
190
|
+
positionals + method_type.type.required_keywords.size + method_type.type.optional_keywords.size if method_type.type.rest_keywords
|
187
191
|
end
|
188
|
-
when :kwsplat
|
189
|
-
positionals + method_type.type.required_keywords.size + method_type.type.optional_keywords.size if method_type.type.rest_keywords
|
190
192
|
end
|
191
193
|
else
|
192
194
|
pos = (node.children[2...] || raise).index { |c| c.location == argument_nodes[-2].location }.to_i
|
@@ -1,6 +1,8 @@
|
|
1
1
|
module Steep
|
2
2
|
module Subtyping
|
3
3
|
class Check
|
4
|
+
ABORT_LIMIT = ENV.fetch("STEEP_SUBTYPING_ABORT_LIMIT", 50).to_i
|
5
|
+
|
4
6
|
attr_reader :builder
|
5
7
|
attr_reader :cache
|
6
8
|
|
@@ -187,6 +189,10 @@ module Steep
|
|
187
189
|
end
|
188
190
|
|
189
191
|
def check_type(relation)
|
192
|
+
if assumptions.size > ABORT_LIMIT
|
193
|
+
return Failure(relation, Result::Failure::LoopAbort.new)
|
194
|
+
end
|
195
|
+
|
190
196
|
relation.type!
|
191
197
|
|
192
198
|
Steep.logger.tagged "#{relation.sub_type} <: #{relation.super_type}" do
|
@@ -269,6 +269,12 @@ module Steep
|
|
269
269
|
end
|
270
270
|
end
|
271
271
|
|
272
|
+
class LoopAbort
|
273
|
+
def message
|
274
|
+
"Detected infinite loop with limit of `#{Check::ABORT_LIMIT}`; specify $STEEP_SUBTYPING_ABORT_LIMIT env var to override the limit."
|
275
|
+
end
|
276
|
+
end
|
277
|
+
|
272
278
|
attr_reader :error
|
273
279
|
|
274
280
|
def initialize(relation, error)
|
data/lib/steep/version.rb
CHANGED
@@ -81,7 +81,7 @@ module Steep
|
|
81
81
|
class Failure < Base
|
82
82
|
type error = MethodMissingError | BlockMismatchError | ParameterMismatchError
|
83
83
|
| UnknownPairError | PolyMethodSubtyping | UnsatisfiedConstraints
|
84
|
-
| SelfBindingMismatch
|
84
|
+
| SelfBindingMismatch | LoopAbort
|
85
85
|
|
86
86
|
class MethodMissingError
|
87
87
|
attr_reader name: untyped
|
@@ -145,6 +145,10 @@ module Steep
|
|
145
145
|
def message: () -> String
|
146
146
|
end
|
147
147
|
|
148
|
+
class LoopAbort
|
149
|
+
def message: () -> String
|
150
|
+
end
|
151
|
+
|
148
152
|
attr_reader error: error
|
149
153
|
|
150
154
|
def initialize: (Relation[untyped] relation, error error) -> void
|
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.7.0.dev.
|
4
|
+
version: 1.7.0.dev.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Soutaro Matsumoto
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-02-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: parser
|
@@ -503,7 +503,6 @@ files:
|
|
503
503
|
- sig/steep/thread_waiter.rbs
|
504
504
|
- sig/steep/type_construction.rbs
|
505
505
|
- sig/steep/type_inference/block_params.rbs
|
506
|
-
- sig/steep/type_inference/branch.rbs
|
507
506
|
- sig/steep/type_inference/case_when.rbs
|
508
507
|
- sig/steep/type_inference/constant_env.rbs
|
509
508
|
- sig/steep/type_inference/context.rbs
|
@@ -1,15 +0,0 @@
|
|
1
|
-
use Steep::TypeConstruction::Pair, Steep::TypeInference::LogicTypeInterpreter::Result
|
2
|
-
|
3
|
-
module Steep
|
4
|
-
module TypeInference
|
5
|
-
class Branch
|
6
|
-
attr_reader start_env: TypeEnv
|
7
|
-
|
8
|
-
def initialize: (TypeEnv start_env) -> void
|
9
|
-
|
10
|
-
def add_branch: () { (TypeEnv) -> [Result, Pair] } -> void
|
11
|
-
|
12
|
-
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|