steep 1.1.1 → 1.2.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +20 -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 +23 -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 +24 -1
- data/lib/steep/diagnostic/ruby.rb +17 -22
- data/lib/steep/drivers/checkfile.rb +205 -0
- data/lib/steep/drivers/validate.rb +3 -1
- 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/subtyping/check.rb +154 -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 +71 -2
- 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/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/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 +26 -0
- data/sig/steep/drivers/diagnostic_printer.rbs +25 -0
- data/sig/steep/drivers/init.rbs +19 -0
- data/sig/steep/drivers/langserver.rbs +35 -0
- data/sig/steep/drivers/print_project.rbs +15 -0
- data/sig/steep/drivers/stats.rbs +37 -0
- data/sig/steep/drivers/utils/driver_helper.rbs +23 -0
- data/sig/steep/drivers/utils/jobs_count.rbs +11 -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 +7 -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 +61 -9
- data/lib/steep/interface/interface.rb +0 -34
- data/sig/steep/interface/interface.rbs +0 -23
- data/sig/version.rbs +0 -3
data/lib/steep.rb
CHANGED
@@ -60,7 +60,8 @@ require "steep/interface/function"
|
|
60
60
|
require "steep/interface/block"
|
61
61
|
require "steep/interface/method_type"
|
62
62
|
require "steep/interface/substitution"
|
63
|
-
require "steep/interface/
|
63
|
+
require "steep/interface/shape"
|
64
|
+
require "steep/interface/builder"
|
64
65
|
|
65
66
|
require "steep/subtyping/result"
|
66
67
|
require "steep/subtyping/check"
|
@@ -126,6 +127,7 @@ require "steep/expectations"
|
|
126
127
|
require "steep/drivers/utils/driver_helper"
|
127
128
|
require "steep/drivers/utils/jobs_count"
|
128
129
|
require "steep/drivers/check"
|
130
|
+
require "steep/drivers/checkfile"
|
129
131
|
require "steep/drivers/stats"
|
130
132
|
require "steep/drivers/validate"
|
131
133
|
require "steep/drivers/annotations"
|
@@ -145,7 +147,7 @@ $stderr = STDERR
|
|
145
147
|
|
146
148
|
module Steep
|
147
149
|
def self.logger
|
148
|
-
@logger
|
150
|
+
@logger || raise
|
149
151
|
end
|
150
152
|
|
151
153
|
def self.new_logger(output, prev_level)
|
@@ -245,3 +247,70 @@ module Steep
|
|
245
247
|
result
|
246
248
|
end
|
247
249
|
end
|
250
|
+
|
251
|
+
klasses = [
|
252
|
+
# Steep::Interface::MethodType
|
253
|
+
]
|
254
|
+
|
255
|
+
klasses.each do |klass|
|
256
|
+
klass.instance_eval do
|
257
|
+
def self.new(*_, **__, &___)
|
258
|
+
super
|
259
|
+
end
|
260
|
+
end
|
261
|
+
end
|
262
|
+
|
263
|
+
module GCCounter
|
264
|
+
module_function
|
265
|
+
|
266
|
+
def count_objects(title, regexp = /^Steep/, skip: false)
|
267
|
+
if ENV["COUNT_GC_OBJECTS"] && !skip
|
268
|
+
unless GC.disable
|
269
|
+
GC.start(immediate_sweep: true, immediate_mark: true, full_mark: true)
|
270
|
+
|
271
|
+
begin
|
272
|
+
yield
|
273
|
+
ensure
|
274
|
+
Steep.logger.fatal "===== #{title} ==============================="
|
275
|
+
|
276
|
+
klasses = []
|
277
|
+
|
278
|
+
ObjectSpace.each_object(Class) do |klass|
|
279
|
+
if (klass.name || "") =~ regexp
|
280
|
+
klasses << klass
|
281
|
+
end
|
282
|
+
end
|
283
|
+
|
284
|
+
before = {}
|
285
|
+
|
286
|
+
klasses.each do |klass|
|
287
|
+
count = ObjectSpace.each_object(klass).count
|
288
|
+
before[klass] = count
|
289
|
+
end
|
290
|
+
|
291
|
+
GC.start(immediate_sweep: true, immediate_mark: true, full_mark: true)
|
292
|
+
|
293
|
+
gceds = []
|
294
|
+
|
295
|
+
klasses.each do |klass|
|
296
|
+
count = ObjectSpace.each_object(klass).count
|
297
|
+
gced = (before[klass] || 0) - count
|
298
|
+
|
299
|
+
gceds << [klass, gced] if gced > 0
|
300
|
+
end
|
301
|
+
|
302
|
+
gceds.sort_by! {|_, count| -count }
|
303
|
+
gceds.each do |klass, count|
|
304
|
+
Steep.logger.fatal { "#{klass.name} => #{count}"}
|
305
|
+
end
|
306
|
+
|
307
|
+
GC.enable
|
308
|
+
end
|
309
|
+
else
|
310
|
+
yield
|
311
|
+
end
|
312
|
+
else
|
313
|
+
yield
|
314
|
+
end
|
315
|
+
end
|
316
|
+
end
|
@@ -10,16 +10,12 @@ gems:
|
|
10
10
|
version: '0'
|
11
11
|
source:
|
12
12
|
type: stdlib
|
13
|
-
- name: rbs
|
14
|
-
version: 2.5.1
|
15
|
-
source:
|
16
|
-
type: rubygems
|
17
13
|
- name: activesupport
|
18
14
|
version: '6.0'
|
19
15
|
source:
|
20
16
|
type: git
|
21
17
|
name: ruby/gem_rbs_collection
|
22
|
-
revision:
|
18
|
+
revision: dc7059ea0cdf67f486ca9cea2b01d53f04724652
|
23
19
|
remote: https://github.com/ruby/gem_rbs_collection.git
|
24
20
|
repo_dir: gems
|
25
21
|
- name: ast
|
@@ -27,7 +23,7 @@ gems:
|
|
27
23
|
source:
|
28
24
|
type: git
|
29
25
|
name: ruby/gem_rbs_collection
|
30
|
-
revision:
|
26
|
+
revision: dc7059ea0cdf67f486ca9cea2b01d53f04724652
|
31
27
|
remote: https://github.com/ruby/gem_rbs_collection.git
|
32
28
|
repo_dir: gems
|
33
29
|
- name: i18n
|
@@ -35,7 +31,7 @@ gems:
|
|
35
31
|
source:
|
36
32
|
type: git
|
37
33
|
name: ruby/gem_rbs_collection
|
38
|
-
revision:
|
34
|
+
revision: dc7059ea0cdf67f486ca9cea2b01d53f04724652
|
39
35
|
remote: https://github.com/ruby/gem_rbs_collection.git
|
40
36
|
repo_dir: gems
|
41
37
|
- name: listen
|
@@ -43,15 +39,19 @@ gems:
|
|
43
39
|
source:
|
44
40
|
type: git
|
45
41
|
name: ruby/gem_rbs_collection
|
46
|
-
revision:
|
42
|
+
revision: dc7059ea0cdf67f486ca9cea2b01d53f04724652
|
47
43
|
remote: https://github.com/ruby/gem_rbs_collection.git
|
48
44
|
repo_dir: gems
|
45
|
+
- name: minitest
|
46
|
+
version: '0'
|
47
|
+
source:
|
48
|
+
type: stdlib
|
49
49
|
- name: parallel
|
50
50
|
version: '1.20'
|
51
51
|
source:
|
52
52
|
type: git
|
53
53
|
name: ruby/gem_rbs_collection
|
54
|
-
revision:
|
54
|
+
revision: dc7059ea0cdf67f486ca9cea2b01d53f04724652
|
55
55
|
remote: https://github.com/ruby/gem_rbs_collection.git
|
56
56
|
repo_dir: gems
|
57
57
|
- name: rainbow
|
@@ -59,50 +59,38 @@ gems:
|
|
59
59
|
source:
|
60
60
|
type: git
|
61
61
|
name: ruby/gem_rbs_collection
|
62
|
-
revision:
|
62
|
+
revision: dc7059ea0cdf67f486ca9cea2b01d53f04724652
|
63
63
|
remote: https://github.com/ruby/gem_rbs_collection.git
|
64
64
|
repo_dir: gems
|
65
|
-
- name:
|
66
|
-
version: '0'
|
67
|
-
source:
|
68
|
-
type: stdlib
|
69
|
-
- name: pathname
|
65
|
+
- name: securerandom
|
70
66
|
version: '0'
|
71
67
|
source:
|
72
68
|
type: stdlib
|
73
|
-
- name:
|
74
|
-
version: '0'
|
75
|
-
source:
|
76
|
-
type: stdlib
|
77
|
-
- name: optparse
|
78
|
-
version: '0'
|
79
|
-
source:
|
80
|
-
type: stdlib
|
81
|
-
- name: rubygems
|
69
|
+
- name: monitor
|
82
70
|
version: '0'
|
83
71
|
source:
|
84
72
|
type: stdlib
|
85
|
-
- name:
|
73
|
+
- name: date
|
86
74
|
version: '0'
|
87
75
|
source:
|
88
76
|
type: stdlib
|
89
|
-
- name:
|
77
|
+
- name: singleton
|
90
78
|
version: '0'
|
91
79
|
source:
|
92
80
|
type: stdlib
|
93
|
-
- name:
|
81
|
+
- name: logger
|
94
82
|
version: '0'
|
95
83
|
source:
|
96
84
|
type: stdlib
|
97
|
-
- name:
|
85
|
+
- name: mutex_m
|
98
86
|
version: '0'
|
99
87
|
source:
|
100
88
|
type: stdlib
|
101
|
-
- name:
|
89
|
+
- name: time
|
102
90
|
version: '0'
|
103
91
|
source:
|
104
92
|
type: stdlib
|
105
|
-
- name:
|
93
|
+
- name: pathname
|
106
94
|
version: '0'
|
107
95
|
source:
|
108
96
|
type: stdlib
|
data/rbs_collection.steep.yaml
CHANGED
@@ -0,0 +1,20 @@
|
|
1
|
+
module LanguageServer
|
2
|
+
module Protocol
|
3
|
+
module Transport
|
4
|
+
module Io
|
5
|
+
class Writer
|
6
|
+
def initialize: (IO) -> void
|
7
|
+
|
8
|
+
def write: (**untyped) -> void
|
9
|
+
| (Hash[Symbol, untyped]) -> void
|
10
|
+
end
|
11
|
+
|
12
|
+
class Reader
|
13
|
+
def initialize: (IO) -> void
|
14
|
+
|
15
|
+
def read: () { (untyped) -> void } -> bot
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -40,17 +40,17 @@ module Steep
|
|
40
40
|
|
41
41
|
def method_type: (untyped name) -> (untyped | nil)
|
42
42
|
|
43
|
-
def block_type: () ->
|
43
|
+
%a{pure} def block_type: () -> Types::t?
|
44
44
|
|
45
|
-
def return_type: () ->
|
45
|
+
%a{pure} def return_type: () -> Types::t?
|
46
46
|
|
47
|
-
def self_type: () ->
|
47
|
+
%a{pure} def self_type: () -> Types::t?
|
48
48
|
|
49
|
-
def instance_type: () ->
|
49
|
+
%a{pure} def instance_type: () -> Types::t?
|
50
50
|
|
51
|
-
def module_type: () ->
|
51
|
+
%a{pure} def module_type: () -> Types::t?
|
52
52
|
|
53
|
-
def break_type: () ->
|
53
|
+
%a{pure} def break_type: () -> Types::t?
|
54
54
|
|
55
55
|
def lvar_types: () -> untyped
|
56
56
|
|
@@ -2,74 +2,80 @@ module Steep
|
|
2
2
|
module AST
|
3
3
|
module Types
|
4
4
|
class Factory
|
5
|
-
|
5
|
+
@env: RBS::Environment
|
6
|
+
|
7
|
+
@type_name_resolver: RBS::Resolver::TypeNameResolver
|
6
8
|
|
7
|
-
attr_reader
|
9
|
+
attr_reader definition_builder: RBS::DefinitionBuilder
|
8
10
|
|
9
|
-
attr_reader type_cache:
|
11
|
+
attr_reader type_cache: Hash[RBS::Types::t, t]
|
10
12
|
|
11
13
|
attr_reader type_interface_cache: untyped
|
12
14
|
|
15
|
+
@type_name_resolver: RBS::Resolver::TypeNameResolver?
|
16
|
+
|
13
17
|
def inspect: () -> String
|
14
18
|
|
15
19
|
def initialize: (builder: RBS::DefinitionBuilder) -> void
|
16
20
|
|
17
|
-
def type_name_resolver: () ->
|
21
|
+
def type_name_resolver: () -> RBS::Resolver::TypeNameResolver
|
18
22
|
|
19
|
-
def
|
23
|
+
def type: (RBS::Types::t `type`) -> t
|
20
24
|
|
21
|
-
def
|
25
|
+
def type_opt: (RBS::Types::t? `type`) -> t?
|
22
26
|
|
23
|
-
def type_1: (
|
27
|
+
def type_1: (t `type`) -> RBS::Types::t
|
24
28
|
|
25
|
-
def
|
29
|
+
def type_1_opt: (t?) -> RBS::Types::t?
|
26
30
|
|
27
|
-
def
|
31
|
+
def function_1: (Interface::Function func) -> RBS::Types::Function
|
28
32
|
|
29
|
-
def
|
33
|
+
def params: (RBS::Types::Function `type`) -> Interface::Function::Params
|
30
34
|
|
31
|
-
def
|
35
|
+
def type_param: (RBS::AST::TypeParam type_param) -> Interface::TypeParam
|
32
36
|
|
33
|
-
def
|
34
|
-
| [A] (RBS::MethodType method_type, self_type: AST::Types::t, method_decls: untyped, ?subst2: Interface::Substitution?) { (Interface::MethodType) -> A } -> A
|
37
|
+
def type_param_1: (Interface::TypeParam type_param) -> RBS::AST::TypeParam
|
35
38
|
|
36
|
-
|
39
|
+
@method_type_cache: Hash[RBS::MethodType, Interface::MethodType]
|
37
40
|
|
38
|
-
|
39
|
-
attr_reader type: untyped
|
41
|
+
def method_type: (RBS::MethodType method_type, method_decls: Set[TypeInference::MethodCall::MethodDecl]) -> Interface::MethodType
|
40
42
|
|
41
|
-
|
42
|
-
end
|
43
|
+
def method_type_1: (Interface::MethodType method_type) -> RBS::MethodType
|
43
44
|
|
44
45
|
def unfold: (RBS::TypeName type_name, Array[t] args) -> t
|
45
46
|
|
47
|
+
# Unfold type alias one step, or returns itself
|
48
|
+
#
|
46
49
|
def expand_alias: (t `type`) -> t
|
47
|
-
| [A] (t) { (t) -> A } -> A
|
48
50
|
|
49
|
-
|
50
|
-
|
51
|
+
# Unfold type alias until non alias type
|
52
|
+
#
|
53
|
+
# * Unions and intersections are expanded
|
54
|
+
# * Returns `nil` if it is recursive
|
55
|
+
#
|
56
|
+
def deep_expand_alias: (t `type`, ?recursive: Set[RBS::TypeName]) -> t?
|
51
57
|
|
52
|
-
|
58
|
+
# Convert union types to array of types
|
59
|
+
#
|
60
|
+
def flatten_union: (t `type`, ?Array[t] acc) -> Array[t]
|
53
61
|
|
54
62
|
def unwrap_optional: (Types::t `type`) -> [Types::t, Types::t]
|
55
63
|
|
56
|
-
|
57
|
-
|
58
|
-
def setup_primitives: (untyped method_name, untyped method_def, untyped method_type) -> untyped
|
64
|
+
def module_name?: (RBS::TypeName type_name) -> bool
|
59
65
|
|
60
|
-
def
|
61
|
-
|
62
|
-
def module_name?: (untyped type_name) -> untyped
|
63
|
-
|
64
|
-
def class_name?: (untyped type_name) -> untyped
|
66
|
+
def class_name?: (RBS::TypeName type_name) -> bool
|
65
67
|
|
66
68
|
def env: () -> RBS::Environment
|
67
69
|
|
68
|
-
def absolute_type: (
|
70
|
+
def absolute_type: (t `type`, context: RBS::Resolver::context) -> t
|
69
71
|
|
70
|
-
def absolute_type_name: (
|
72
|
+
def absolute_type_name: (RBS::TypeName type_name, context: RBS::Resolver::context) -> RBS::TypeName?
|
71
73
|
|
72
74
|
def instance_type: (RBS::TypeName type_name, ?args: Array[t]?, ?location: untyped?) -> t
|
75
|
+
|
76
|
+
def try_singleton_type: (t) -> t?
|
77
|
+
|
78
|
+
def try_instance_type: (t) -> t?
|
73
79
|
end
|
74
80
|
end
|
75
81
|
end
|
@@ -8,25 +8,25 @@ module Steep
|
|
8
8
|
|
9
9
|
def initialize: (value: untyped, ?location: untyped?) -> void
|
10
10
|
|
11
|
-
def ==: (untyped other) ->
|
11
|
+
def ==: (untyped other) -> bool
|
12
12
|
|
13
|
-
def hash: () ->
|
13
|
+
def hash: () -> Integer
|
14
14
|
|
15
15
|
alias eql? ==
|
16
16
|
|
17
|
-
def subst: (
|
17
|
+
def subst: (Interface::Substitution s) -> self
|
18
18
|
|
19
|
-
def to_s: () ->
|
19
|
+
def to_s: () -> String
|
20
20
|
|
21
21
|
include Helper::NoFreeVariables
|
22
22
|
|
23
23
|
include Helper::NoChild
|
24
24
|
|
25
|
-
def level: () ->
|
25
|
+
def level: () -> Array[Integer]
|
26
26
|
|
27
|
-
def with_location: (untyped new_location) ->
|
27
|
+
def with_location: (untyped new_location) -> self
|
28
28
|
|
29
|
-
def back_type: () ->
|
29
|
+
def back_type: () -> AST::Types::Name::Instance
|
30
30
|
end
|
31
31
|
end
|
32
32
|
end
|
@@ -5,37 +5,38 @@ module Steep
|
|
5
5
|
class Base
|
6
6
|
attr_reader location: untyped
|
7
7
|
|
8
|
-
attr_reader name:
|
8
|
+
attr_reader name: RBS::TypeName
|
9
9
|
|
10
|
-
def initialize: (name:
|
10
|
+
def initialize: (name: RBS::TypeName, ?location: untyped?) -> void
|
11
11
|
|
12
12
|
include Helper::NoFreeVariables
|
13
13
|
|
14
|
-
def subst: (
|
14
|
+
def subst: (Steep::Interface::Substitution s) -> self
|
15
15
|
|
16
16
|
def level: () -> ::Array[0]
|
17
17
|
end
|
18
18
|
|
19
19
|
class Applying < Base
|
20
|
-
attr_reader args:
|
20
|
+
attr_reader args: Array[t]
|
21
21
|
|
22
|
-
def initialize: (name:
|
22
|
+
def initialize: (name: RBS::TypeName, args: Array[t], ?location: untyped?) -> void
|
23
23
|
|
24
|
-
def ==: (untyped other) ->
|
24
|
+
def ==: (untyped other) -> bool
|
25
25
|
|
26
26
|
alias eql? ==
|
27
27
|
|
28
|
-
def hash: () ->
|
28
|
+
def hash: () -> Integer
|
29
29
|
|
30
30
|
def to_s: () -> ::String
|
31
31
|
|
32
32
|
def with_location: (untyped new_location) -> untyped
|
33
33
|
|
34
|
-
def subst: (
|
34
|
+
def subst: (Steep::Interface::Substitution s) -> self
|
35
35
|
|
36
|
-
def free_variables: () ->
|
36
|
+
def free_variables: () -> Set[Symbol]
|
37
37
|
|
38
|
-
def each_child: ()
|
38
|
+
def each_child: () { (t) -> void } -> void
|
39
|
+
| () -> Enumerator[t, void]
|
39
40
|
|
40
41
|
include Helper::ChildrenLevel
|
41
42
|
|
@@ -43,11 +44,11 @@ module Steep
|
|
43
44
|
end
|
44
45
|
|
45
46
|
class Singleton < Base
|
46
|
-
def ==: (untyped other) ->
|
47
|
+
def ==: (untyped other) -> bool
|
47
48
|
|
48
49
|
alias eql? ==
|
49
50
|
|
50
|
-
def hash: () ->
|
51
|
+
def hash: () -> Integer
|
51
52
|
|
52
53
|
def to_s: () -> ::String
|
53
54
|
|
@@ -57,7 +58,7 @@ module Steep
|
|
57
58
|
end
|
58
59
|
|
59
60
|
class Instance < Applying
|
60
|
-
def to_module: () ->
|
61
|
+
def to_module: () -> Singleton
|
61
62
|
end
|
62
63
|
|
63
64
|
class Interface < Applying
|
@@ -6,9 +6,11 @@ module Steep
|
|
6
6
|
|
7
7
|
attr_reader type: Interface::Function
|
8
8
|
|
9
|
+
attr_reader self_type: AST::Types::t?
|
10
|
+
|
9
11
|
attr_reader block: Interface::Block?
|
10
12
|
|
11
|
-
def initialize: (type: Interface::Function, block: Interface::Block?, ?location: untyped) -> void
|
13
|
+
def initialize: (type: Interface::Function, self_type: AST::Types::t?, block: Interface::Block?, ?location: untyped) -> void
|
12
14
|
|
13
15
|
def ==: (untyped other) -> bool
|
14
16
|
|
data/sig/steep/ast/types/var.rbs
CHANGED
@@ -44,53 +44,51 @@ module Steep
|
|
44
44
|
end
|
45
45
|
|
46
46
|
class UnexpectedPositionalArgument < Base
|
47
|
-
|
48
|
-
|
49
|
-
attr_reader method_type: untyped
|
47
|
+
# Node of argument
|
48
|
+
attr_reader node (): Parser::AST::Node
|
50
49
|
|
51
|
-
attr_reader
|
50
|
+
attr_reader params: Interface::Function::Params
|
52
51
|
|
53
|
-
def initialize: (node:
|
52
|
+
def initialize: (node: Parser::AST::Node, params: Interface::Function::Params) -> void
|
54
53
|
|
55
|
-
def header_line: () ->
|
54
|
+
def header_line: () -> String
|
56
55
|
end
|
57
56
|
|
58
57
|
class InsufficientPositionalArguments < Base
|
59
|
-
|
60
|
-
|
61
|
-
attr_reader
|
58
|
+
# Send/csend node for method calls without blocks
|
59
|
+
# block/numblock node for method calls with blocks
|
60
|
+
attr_reader node (): Parser::AST::Node
|
62
61
|
|
63
|
-
attr_reader
|
62
|
+
attr_reader params: Interface::Function::Params
|
64
63
|
|
65
|
-
def initialize: (node:
|
64
|
+
def initialize: (node: Parser::AST::Node, params: Interface::Function::Params) -> void
|
66
65
|
|
67
|
-
def header_line: () ->
|
66
|
+
def header_line: () -> String
|
68
67
|
end
|
69
68
|
|
70
69
|
class UnexpectedKeywordArgument < Base
|
71
|
-
|
70
|
+
# pair/kwsplat node
|
71
|
+
attr_reader node (): Parser::AST::Node
|
72
72
|
|
73
|
-
attr_reader
|
74
|
-
|
75
|
-
attr_reader method_type: untyped
|
73
|
+
attr_reader params: Interface::Function::Params
|
76
74
|
|
77
|
-
def initialize: (node:
|
75
|
+
def initialize: (node: Parser::AST::Node, params: Interface::Function::Params) -> void
|
78
76
|
|
79
|
-
def header_line: () ->
|
77
|
+
def header_line: () -> String
|
80
78
|
end
|
81
79
|
|
82
80
|
class InsufficientKeywordArguments < Base
|
83
|
-
|
81
|
+
# Send/csend node for method calls without blocks
|
82
|
+
# block/numblock node for method calls with blocks
|
83
|
+
attr_reader node (): Parser::AST::Node
|
84
84
|
|
85
|
-
attr_reader
|
85
|
+
attr_reader params: Interface::Function::Params
|
86
86
|
|
87
|
-
attr_reader
|
87
|
+
attr_reader missing_keywords: Array[Symbol]
|
88
88
|
|
89
|
-
|
89
|
+
def initialize: (node: Parser::AST::Node, params: Interface::Function::Params, missing_keywords: Array[Symbol]) -> void
|
90
90
|
|
91
|
-
def
|
92
|
-
|
93
|
-
def header_line: () -> ::String
|
91
|
+
def header_line: () -> String
|
94
92
|
end
|
95
93
|
|
96
94
|
class UnresolvedOverloading < Base
|
@@ -110,19 +108,17 @@ module Steep
|
|
110
108
|
end
|
111
109
|
|
112
110
|
class ArgumentTypeMismatch < Base
|
113
|
-
attr_reader node:
|
114
|
-
|
115
|
-
attr_reader expected: untyped
|
111
|
+
attr_reader node (): Parser::AST::Node
|
116
112
|
|
117
|
-
attr_reader
|
113
|
+
attr_reader expected: AST::Types::t
|
118
114
|
|
119
|
-
attr_reader
|
115
|
+
attr_reader actual: AST::Types::t
|
120
116
|
|
121
|
-
attr_reader result:
|
117
|
+
attr_reader result: Subtyping::Result::t
|
122
118
|
|
123
119
|
include ResultPrinter
|
124
120
|
|
125
|
-
def initialize: (node:
|
121
|
+
def initialize: (node: Parser::AST::Node, expected: AST::Types::t, actual: AST::Types::t, result: Subtyping::Result::t) -> void
|
126
122
|
|
127
123
|
def header_line: () -> ::String
|
128
124
|
end
|
@@ -302,9 +298,9 @@ module Steep
|
|
302
298
|
end
|
303
299
|
|
304
300
|
class UnexpectedSuper < Base
|
305
|
-
attr_reader method:
|
301
|
+
attr_reader method: Symbol?
|
306
302
|
|
307
|
-
def initialize: (node:
|
303
|
+
def initialize: (node: Parser::AST::Node, method: Symbol?) -> void
|
308
304
|
|
309
305
|
def header_line: () -> ::String
|
310
306
|
end
|