steep 1.7.0.dev.3 → 1.7.0.dev.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +12 -12
- data/doc/narrowing.md +1 -1
- data/doc/shape.md +176 -0
- data/gemfile_steep/Gemfile.lock +5 -5
- data/lib/steep/ast/types/factory.rb +27 -18
- data/lib/steep/ast/types/proc.rb +14 -9
- data/lib/steep/interface/block.rb +1 -1
- data/lib/steep/interface/builder.rb +1 -0
- data/lib/steep/interface/function.rb +14 -6
- data/lib/steep/interface/method_type.rb +15 -7
- data/lib/steep/project/pattern.rb +1 -2
- data/lib/steep/server/interaction_worker.rb +6 -0
- data/lib/steep/server/lsp_formatter.rb +2 -0
- data/lib/steep/services/completion_provider.rb +1 -1
- data/lib/steep/services/file_loader.rb +15 -20
- data/lib/steep/services/signature_help_provider.rb +11 -9
- data/lib/steep/signature/validator.rb +1 -1
- data/lib/steep/subtyping/check.rb +15 -6
- data/lib/steep/subtyping/variable_variance.rb +3 -3
- data/lib/steep/type_construction.rb +185 -149
- data/lib/steep/type_inference/block_params.rb +1 -1
- data/lib/steep/type_inference/logic_type_interpreter.rb +2 -1
- data/lib/steep/type_inference/method_params.rb +16 -0
- data/lib/steep/type_inference/send_args.rb +5 -2
- data/lib/steep/version.rb +1 -1
- data/sig/steep/ast/types/factory.rbs +2 -2
- data/sig/steep/interface/builder.rbs +12 -53
- data/sig/steep/interface/function.rbs +5 -4
- data/sig/steep/services/signature_help_provider.rbs +1 -1
- data/sig/steep/subtyping/variable_variance.rbs +1 -1
- data/sig/steep/type_inference/block_params.rbs +1 -1
- data/sig/steep/type_inference/method_params.rbs +3 -3
- data/steep.gemspec +1 -1
- metadata +5 -4
@@ -46,8 +46,6 @@ module Steep
|
|
46
46
|
|
47
47
|
def initialize: (AST::Types::Factory) -> void
|
48
48
|
|
49
|
-
def fetch_cache: [KEY] (Hash[KEY, Shape?], KEY) { () -> Shape? } -> Shape?
|
50
|
-
|
51
49
|
# Returns a shape of given type with respect to Config
|
52
50
|
#
|
53
51
|
# * If `self` occurs in the given type, it returns types with `self`
|
@@ -55,6 +53,10 @@ module Steep
|
|
55
53
|
#
|
56
54
|
def shape: (AST::Types::t, Config) -> Shape?
|
57
55
|
|
56
|
+
private
|
57
|
+
|
58
|
+
def fetch_cache: [KEY] (Hash[KEY, Shape?], KEY) { () -> Shape? } -> Shape?
|
59
|
+
|
58
60
|
# Returns a shape of given type with respect to Config
|
59
61
|
#
|
60
62
|
# The `self` types included in the returned Shape is the `self` type in the top level
|
@@ -66,10 +68,16 @@ module Steep
|
|
66
68
|
|
67
69
|
def self_shape: (AST::Types::t, Config) -> Shape?
|
68
70
|
|
69
|
-
|
70
|
-
|
71
|
+
# Returns a shape of instance type and interface type
|
72
|
+
#
|
73
|
+
# The `self` types included in the shape is the `self` types in the definition.
|
74
|
+
#
|
71
75
|
def object_shape: (RBS::TypeName) -> Shape
|
72
76
|
|
77
|
+
# Returns a shape of singleton type
|
78
|
+
#
|
79
|
+
# The `self` types included in the shape is the `self` types in the definition.
|
80
|
+
#
|
73
81
|
def singleton_shape: (RBS::TypeName) -> Shape
|
74
82
|
|
75
83
|
def union_shape: (AST::Types::t, Array[Shape]) -> Shape?
|
@@ -95,58 +103,9 @@ module Steep
|
|
95
103
|
|
96
104
|
def replace_primitive_method: (method_name, RBS::Definition::Method::TypeDef, MethodType) -> MethodType
|
97
105
|
|
98
|
-
# # Calculates the shape of given class, based on `public_only` and Config
|
99
|
-
# #
|
100
|
-
# # Returns `nil` if a type that cannot calculate Shape is given.
|
101
|
-
# #
|
102
|
-
# # * `public_only`: If false, returns a shape with private methods.
|
103
|
-
# #
|
104
|
-
# def shape: (AST::Types::t, public_only: bool, config: Config) -> Shape?
|
105
|
-
|
106
|
-
# private
|
107
|
-
|
108
106
|
@subtyping: Subtyping::Check?
|
109
107
|
|
110
108
|
def subtyping: () -> Subtyping::Check
|
111
|
-
|
112
|
-
# # Fetch and update cache
|
113
|
-
# #
|
114
|
-
# # Cache if given type is cacheable:
|
115
|
-
# #
|
116
|
-
# # * `self`, `instance`, `class` is not cacheable
|
117
|
-
# # * Type variables are not cacheable
|
118
|
-
# #
|
119
|
-
# def fetch_cache: (AST::Types::t, bool public_only, Config) { () -> Shape? } -> Shape?
|
120
|
-
|
121
|
-
# def include_self?: (AST::Types::t) -> bool
|
122
|
-
|
123
|
-
# def definition_builder: () -> RBS::DefinitionBuilder
|
124
|
-
|
125
|
-
# def object_shape: (
|
126
|
-
# AST::Types::Name::Instance | AST::Types::Name::Singleton | AST::Types::Name::Interface,
|
127
|
-
# bool public_only,
|
128
|
-
# boolish keep_self,
|
129
|
-
# boolish keep_instance,
|
130
|
-
# boolish keep_singleton
|
131
|
-
# ) -> Shape
|
132
|
-
|
133
|
-
# def raw_object_shape: (
|
134
|
-
# AST::Types::Name::Instance | AST::Types::Name::Singleton | AST::Types::Name::Interface,
|
135
|
-
# bool public_only,
|
136
|
-
# Substitution subst
|
137
|
-
# ) -> Shape
|
138
|
-
|
139
|
-
# def union_shape: (AST::Types::t, Array[Shape], bool public_only) -> Shape
|
140
|
-
|
141
|
-
# def intersection_shape: (AST::Types::t, Array[Shape], bool public_only) -> Shape
|
142
|
-
|
143
|
-
# def tuple_shape: (AST::Types::Tuple, bool public_only, Config) -> Shape
|
144
|
-
|
145
|
-
# def record_shape: (AST::Types::Record, bool public_only, Config) -> Shape?
|
146
|
-
|
147
|
-
# def proc_shape: (AST::Types::Proc, bool public_only, Config) -> Shape?
|
148
|
-
|
149
|
-
|
150
109
|
end
|
151
110
|
end
|
152
111
|
end
|
@@ -177,7 +177,7 @@ module Steep
|
|
177
177
|
|
178
178
|
def optional_keywords: () -> Hash[Symbol, AST::Types::t]
|
179
179
|
|
180
|
-
def rest_keywords: () -> AST::Types::t?
|
180
|
+
%a{pure} def rest_keywords: () -> AST::Types::t?
|
181
181
|
|
182
182
|
def has_keywords?: () -> bool
|
183
183
|
|
@@ -234,13 +234,14 @@ module Steep
|
|
234
234
|
|
235
235
|
type location = RBS::Location[untyped, untyped]
|
236
236
|
|
237
|
-
|
237
|
+
# Returns `nil` for `RBS::Types::UntypedFunction`
|
238
|
+
attr_reader params: Params?
|
238
239
|
|
239
240
|
attr_reader return_type: AST::Types::t
|
240
241
|
|
241
242
|
attr_reader location: location?
|
242
243
|
|
243
|
-
def initialize: (params: Params
|
244
|
+
def initialize: (params: Params?, return_type: AST::Types::t, location: location?) -> void
|
244
245
|
|
245
246
|
def ==: (untyped other) -> bool
|
246
247
|
|
@@ -260,7 +261,7 @@ module Steep
|
|
260
261
|
|
261
262
|
def map_type: () { (AST::Types::t) -> AST::Types::t } -> Function
|
262
263
|
|
263
|
-
def with: (?params: Params
|
264
|
+
def with: (?params: Params?, ?return_type: AST::Types::t) -> Function
|
264
265
|
|
265
266
|
def to_s: () -> ::String
|
266
267
|
|
@@ -17,7 +17,7 @@ module Steep
|
|
17
17
|
|
18
18
|
def self.from_method_type: (Interface::MethodType method_type) -> VariableVariance
|
19
19
|
|
20
|
-
def self.add_params: (Interface::Function::Params params, block: bool, covariants: Set[Symbol], contravariants: Set[Symbol]) -> void
|
20
|
+
def self.add_params: (Interface::Function::Params? params, block: bool, covariants: Set[Symbol], contravariants: Set[Symbol]) -> void
|
21
21
|
|
22
22
|
def self.add_type: (AST::Types::t `type`, variance: :covariant | :contravariant | :invariant, covariants: Set[Symbol], contravariants: Set[Symbol]) -> void
|
23
23
|
end
|
@@ -127,7 +127,7 @@ module Steep
|
|
127
127
|
| (hint: Interface::Function::Params?) -> Interface::Function::Params?
|
128
128
|
|
129
129
|
def zip: (
|
130
|
-
Interface::Function::Params params_type,
|
130
|
+
Interface::Function::Params? params_type,
|
131
131
|
Interface::Block? block,
|
132
132
|
factory: AST::Types::Factory
|
133
133
|
) -> Array[[Param | MultipleParam, AST::Types::t]]
|
@@ -102,9 +102,9 @@ module Steep
|
|
102
102
|
#
|
103
103
|
# `nil` if the node doesn't have it.
|
104
104
|
#
|
105
|
-
attr_reader forward_arg_type: [Params, Block?]
|
105
|
+
attr_reader forward_arg_type: [Params, Block?] | true | nil
|
106
106
|
|
107
|
-
def initialize: (args: Array[Node], method_type: MethodType?, forward_arg_type: [Params, Block?]
|
107
|
+
def initialize: (args: Array[Node], method_type: MethodType?, forward_arg_type: [Params, Block?] | true | nil) -> void
|
108
108
|
|
109
109
|
def []: (Symbol name) -> param
|
110
110
|
|
@@ -117,7 +117,7 @@ module Steep
|
|
117
117
|
|
118
118
|
def each: () { (Symbol, AST::Types::t) -> void } -> void
|
119
119
|
|
120
|
-
def update: (?forward_arg_type: [Params, Block?]
|
120
|
+
def update: (?forward_arg_type: [Params, Block?] | true | nil) -> MethodParams
|
121
121
|
|
122
122
|
def self.empty: (node: Node) -> MethodParams
|
123
123
|
|
data/steep.gemspec
CHANGED
@@ -33,7 +33,7 @@ Gem::Specification.new do |spec|
|
|
33
33
|
spec.add_runtime_dependency "rainbow", ">= 2.2.2", "< 4.0"
|
34
34
|
spec.add_runtime_dependency "listen", "~> 3.0"
|
35
35
|
spec.add_runtime_dependency "language_server-protocol", ">= 3.15", "< 4.0"
|
36
|
-
spec.add_runtime_dependency "rbs", ">= 3.
|
36
|
+
spec.add_runtime_dependency "rbs", ">= 3.5.0.pre"
|
37
37
|
spec.add_runtime_dependency "concurrent-ruby", ">= 1.1.10"
|
38
38
|
spec.add_runtime_dependency "terminal-table", ">= 2", "< 4"
|
39
39
|
spec.add_runtime_dependency "securerandom", ">= 0.1"
|
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.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: 2024-
|
11
|
+
date: 2024-05-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: parser
|
@@ -98,14 +98,14 @@ dependencies:
|
|
98
98
|
requirements:
|
99
99
|
- - ">="
|
100
100
|
- !ruby/object:Gem::Version
|
101
|
-
version: 3.
|
101
|
+
version: 3.5.0.pre
|
102
102
|
type: :runtime
|
103
103
|
prerelease: false
|
104
104
|
version_requirements: !ruby/object:Gem::Requirement
|
105
105
|
requirements:
|
106
106
|
- - ">="
|
107
107
|
- !ruby/object:Gem::Version
|
108
|
-
version: 3.
|
108
|
+
version: 3.5.0.pre
|
109
109
|
- !ruby/object:Gem::Dependency
|
110
110
|
name: concurrent-ruby
|
111
111
|
requirement: !ruby/object:Gem::Requirement
|
@@ -254,6 +254,7 @@ files:
|
|
254
254
|
- bin/steep
|
255
255
|
- bin/steep-prof
|
256
256
|
- doc/narrowing.md
|
257
|
+
- doc/shape.md
|
257
258
|
- exe/steep
|
258
259
|
- gemfile_steep/Gemfile
|
259
260
|
- gemfile_steep/Gemfile.lock
|