steep 1.7.0.dev.3 → 1.7.0
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 +43 -0
- data/README.md +18 -0
- data/doc/narrowing.md +1 -1
- data/doc/shape.md +176 -0
- data/guides/src/gem-rbs-collection/gem-rbs-collection.md +7 -24
- 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/rake_task.rb +132 -0
- 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 +186 -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/steep.gemspec +5 -2
- metadata +7 -145
- data/.github/dependabot.yml +0 -28
- data/.github/workflows/ruby-windows.yml +0 -35
- data/.github/workflows/ruby.yml +0 -32
- data/.vscode/steep-shared.code-snippets +0 -41
- data/Gemfile +0 -14
- data/Gemfile.lock +0 -104
- data/Gemfile.steep +0 -0
- data/gemfile_steep/Gemfile +0 -3
- data/gemfile_steep/Gemfile.lock +0 -77
- data/rbs_collection.steep.lock.yaml +0 -108
- data/rbs_collection.steep.yaml +0 -23
- data/sig/shims/bundler.rbs +0 -3
- data/sig/shims/concurrent-ruby.rbs +0 -39
- data/sig/shims/exception.rbs +0 -4
- data/sig/shims/language-server_protocol.rbs +0 -450
- data/sig/shims/parser/comment.rbs +0 -33
- data/sig/shims/parser/nodes.rbs +0 -252
- data/sig/shims/parser/source/map.rbs +0 -146
- data/sig/shims/parser/source/range.rbs +0 -237
- data/sig/shims/parser.rbs +0 -69
- data/sig/shims/string.rbs +0 -4
- data/sig/shims/tagged_logging.rbs +0 -6
- data/sig/shims/yaml.rbs +0 -4
- data/sig/steep/annotation_parser.rbs +0 -60
- data/sig/steep/ast/annotation/collection.rbs +0 -78
- data/sig/steep/ast/annotation.rbs +0 -121
- data/sig/steep/ast/builtin.rbs +0 -69
- data/sig/steep/ast/ignore.rbs +0 -66
- data/sig/steep/ast/node/type_application.rbs +0 -31
- data/sig/steep/ast/node/type_assertion.rbs +0 -32
- data/sig/steep/ast/types/any.rbs +0 -29
- data/sig/steep/ast/types/boolean.rbs +0 -31
- data/sig/steep/ast/types/bot.rbs +0 -29
- data/sig/steep/ast/types/class.rbs +0 -33
- data/sig/steep/ast/types/factory.rbs +0 -110
- data/sig/steep/ast/types/helper.rbs +0 -24
- data/sig/steep/ast/types/instance.rbs +0 -33
- data/sig/steep/ast/types/intersection.rbs +0 -40
- data/sig/steep/ast/types/literal.rbs +0 -35
- data/sig/steep/ast/types/logic.rbs +0 -83
- data/sig/steep/ast/types/name.rbs +0 -84
- data/sig/steep/ast/types/nil.rbs +0 -31
- data/sig/steep/ast/types/proc.rbs +0 -53
- data/sig/steep/ast/types/record.rbs +0 -39
- data/sig/steep/ast/types/self.rbs +0 -33
- data/sig/steep/ast/types/top.rbs +0 -29
- data/sig/steep/ast/types/tuple.rbs +0 -37
- data/sig/steep/ast/types/union.rbs +0 -40
- data/sig/steep/ast/types/var.rbs +0 -42
- data/sig/steep/ast/types/void.rbs +0 -29
- data/sig/steep/ast/types.rbs +0 -16
- data/sig/steep/cli.rbs +0 -55
- data/sig/steep/diagnostic/deprecated/else_on_exhaustive_case.rbs +0 -13
- data/sig/steep/diagnostic/deprecated/unknown_constant_assigned.rbs +0 -15
- data/sig/steep/diagnostic/helper.rbs +0 -15
- data/sig/steep/diagnostic/lsp_formatter.rbs +0 -36
- data/sig/steep/diagnostic/ruby.rbs +0 -703
- data/sig/steep/diagnostic/signature.rbs +0 -252
- data/sig/steep/drivers/annotations.rbs +0 -17
- data/sig/steep/drivers/check.rbs +0 -33
- data/sig/steep/drivers/checkfile.rbs +0 -27
- data/sig/steep/drivers/diagnostic_printer.rbs +0 -25
- data/sig/steep/drivers/init.rbs +0 -19
- data/sig/steep/drivers/langserver.rbs +0 -36
- data/sig/steep/drivers/print_project.rbs +0 -15
- data/sig/steep/drivers/stats.rbs +0 -47
- data/sig/steep/drivers/utils/driver_helper.rbs +0 -25
- data/sig/steep/drivers/utils/jobs_option.rbs +0 -19
- data/sig/steep/drivers/validate.rbs +0 -15
- data/sig/steep/drivers/vendor.rbs +0 -19
- data/sig/steep/drivers/watch.rbs +0 -27
- data/sig/steep/drivers/worker.rbs +0 -29
- data/sig/steep/equatable.rbs +0 -11
- data/sig/steep/expectations.rbs +0 -72
- data/sig/steep/index/rbs_index.rbs +0 -141
- data/sig/steep/index/signature_symbol_provider.rbs +0 -41
- data/sig/steep/index/source_index.rbs +0 -63
- data/sig/steep/interface/block.rbs +0 -41
- data/sig/steep/interface/builder.rbs +0 -152
- data/sig/steep/interface/function.rbs +0 -270
- data/sig/steep/interface/method_type.rbs +0 -105
- data/sig/steep/interface/shape.rbs +0 -80
- data/sig/steep/interface/substitution.rbs +0 -51
- data/sig/steep/interface/type_param.rbs +0 -43
- data/sig/steep/method_name.rbs +0 -30
- data/sig/steep/module_helper.rbs +0 -16
- data/sig/steep/node_helper.rbs +0 -91
- data/sig/steep/path_helper.rbs +0 -15
- data/sig/steep/project/dsl.rbs +0 -108
- data/sig/steep/project/options.rbs +0 -47
- data/sig/steep/project/pattern.rbs +0 -47
- data/sig/steep/project/target.rbs +0 -25
- data/sig/steep/project.rbs +0 -26
- data/sig/steep/range_extension.rbs +0 -7
- data/sig/steep/server/base_worker.rbs +0 -49
- data/sig/steep/server/change_buffer.rbs +0 -38
- data/sig/steep/server/delay_queue.rbs +0 -37
- data/sig/steep/server/interaction_worker.rbs +0 -90
- data/sig/steep/server/lsp_formatter.rbs +0 -63
- data/sig/steep/server/master.rbs +0 -299
- data/sig/steep/server/type_check_worker.rbs +0 -141
- data/sig/steep/server/worker_process.rbs +0 -97
- data/sig/steep/services/completion_provider.rbs +0 -264
- data/sig/steep/services/content_change.rbs +0 -37
- data/sig/steep/services/file_loader.rbs +0 -21
- data/sig/steep/services/goto_service.rbs +0 -106
- data/sig/steep/services/hover_provider/rbs.rbs +0 -47
- data/sig/steep/services/hover_provider/ruby.rbs +0 -127
- data/sig/steep/services/hover_provider/singleton_methods.rbs +0 -11
- data/sig/steep/services/path_assignment.rbs +0 -21
- data/sig/steep/services/signature_help_provider.rbs +0 -51
- data/sig/steep/services/signature_service.rbs +0 -156
- data/sig/steep/services/stats_calculator.rbs +0 -41
- data/sig/steep/services/type_check_service.rbs +0 -112
- data/sig/steep/services/type_name_completion.rbs +0 -135
- data/sig/steep/signature/validator.rbs +0 -85
- data/sig/steep/source/ignore_ranges.rbs +0 -38
- data/sig/steep/source.rbs +0 -105
- data/sig/steep/subtyping/cache.rbs +0 -17
- data/sig/steep/subtyping/check.rbs +0 -131
- data/sig/steep/subtyping/constraints.rbs +0 -111
- data/sig/steep/subtyping/relation.rbs +0 -63
- data/sig/steep/subtyping/result.rbs +0 -179
- data/sig/steep/subtyping/variable_variance.rbs +0 -25
- data/sig/steep/thread_waiter.rbs +0 -13
- data/sig/steep/type_construction.rbs +0 -542
- data/sig/steep/type_inference/block_params.rbs +0 -170
- data/sig/steep/type_inference/case_when.rbs +0 -130
- data/sig/steep/type_inference/constant_env.rbs +0 -29
- data/sig/steep/type_inference/context.rbs +0 -216
- data/sig/steep/type_inference/context_array.rbs +0 -38
- data/sig/steep/type_inference/logic_type_interpreter.rbs +0 -108
- data/sig/steep/type_inference/method_call.rbs +0 -124
- data/sig/steep/type_inference/method_params.rbs +0 -127
- data/sig/steep/type_inference/multiple_assignment.rbs +0 -76
- data/sig/steep/type_inference/send_args.rbs +0 -243
- data/sig/steep/type_inference/type_env.rbs +0 -160
- data/sig/steep/type_inference/type_env_builder.rbs +0 -81
- data/sig/steep/typing.rbs +0 -75
- data/sig/steep.rbs +0 -45
|
@@ -1,703 +0,0 @@
|
|
|
1
|
-
module Steep
|
|
2
|
-
module Diagnostic
|
|
3
|
-
module Ruby
|
|
4
|
-
type location = Parser::Source::Range | RBS::Location[untyped, untyped]
|
|
5
|
-
|
|
6
|
-
class Base
|
|
7
|
-
include Helper
|
|
8
|
-
|
|
9
|
-
attr_reader node: Parser::AST::Node?
|
|
10
|
-
|
|
11
|
-
attr_reader location: location?
|
|
12
|
-
|
|
13
|
-
def initialize: (node: Parser::AST::Node?, ?location: location?) -> void
|
|
14
|
-
|
|
15
|
-
def header_line: () -> String
|
|
16
|
-
|
|
17
|
-
def detail_lines: () -> String?
|
|
18
|
-
|
|
19
|
-
def diagnostic_code: () -> ::String
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
interface _DiagnosticWithResult
|
|
23
|
-
def result: () -> Subtyping::Result::Base
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
module ResultPrinter : _DiagnosticWithResult
|
|
27
|
-
def relation_message: (Subtyping::Relation[untyped] relation) -> String?
|
|
28
|
-
|
|
29
|
-
def detail_lines: () -> String?
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
module ResultPrinter2 : _DiagnosticWithResult
|
|
33
|
-
def result_line: (Subtyping::Result::t result) -> String?
|
|
34
|
-
|
|
35
|
-
def detail_lines: () -> String?
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
class IncompatibleAssignment < Base
|
|
39
|
-
attr_reader lhs_type: untyped
|
|
40
|
-
|
|
41
|
-
attr_reader rhs_type: untyped
|
|
42
|
-
|
|
43
|
-
attr_reader result: untyped
|
|
44
|
-
|
|
45
|
-
include ResultPrinter
|
|
46
|
-
|
|
47
|
-
def initialize: (node: untyped, lhs_type: untyped, rhs_type: untyped, result: untyped) -> void
|
|
48
|
-
|
|
49
|
-
def header_line: () -> ::String
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
class UnexpectedPositionalArgument < Base
|
|
53
|
-
# Node of argument
|
|
54
|
-
attr_reader node (): Parser::AST::Node
|
|
55
|
-
|
|
56
|
-
attr_reader params: Interface::Function::Params
|
|
57
|
-
|
|
58
|
-
def initialize: (node: Parser::AST::Node, params: Interface::Function::Params) -> void
|
|
59
|
-
|
|
60
|
-
def header_line: () -> String
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
class InsufficientPositionalArguments < Base
|
|
64
|
-
# Send/csend node for method calls without blocks
|
|
65
|
-
# block/numblock node for method calls with blocks
|
|
66
|
-
attr_reader node (): Parser::AST::Node
|
|
67
|
-
|
|
68
|
-
attr_reader params: Interface::Function::Params
|
|
69
|
-
|
|
70
|
-
def initialize: (node: Parser::AST::Node, params: Interface::Function::Params) -> void
|
|
71
|
-
|
|
72
|
-
def header_line: () -> String
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
class UnexpectedKeywordArgument < Base
|
|
76
|
-
# pair/kwsplat node
|
|
77
|
-
attr_reader node (): Parser::AST::Node
|
|
78
|
-
|
|
79
|
-
attr_reader params: Interface::Function::Params
|
|
80
|
-
|
|
81
|
-
def initialize: (node: Parser::AST::Node, params: Interface::Function::Params) -> void
|
|
82
|
-
|
|
83
|
-
def header_line: () -> String
|
|
84
|
-
end
|
|
85
|
-
|
|
86
|
-
class InsufficientKeywordArguments < Base
|
|
87
|
-
# Send/csend node for method calls without blocks
|
|
88
|
-
# block/numblock node for method calls with blocks
|
|
89
|
-
attr_reader node (): Parser::AST::Node
|
|
90
|
-
|
|
91
|
-
attr_reader params: Interface::Function::Params
|
|
92
|
-
|
|
93
|
-
attr_reader missing_keywords: Array[Symbol]
|
|
94
|
-
|
|
95
|
-
def initialize: (node: Parser::AST::Node, params: Interface::Function::Params, missing_keywords: Array[Symbol]) -> void
|
|
96
|
-
|
|
97
|
-
def header_line: () -> String
|
|
98
|
-
end
|
|
99
|
-
|
|
100
|
-
class UnresolvedOverloading < Base
|
|
101
|
-
attr_reader node (): Parser::AST::Node
|
|
102
|
-
|
|
103
|
-
attr_reader receiver_type: AST::Types::t
|
|
104
|
-
|
|
105
|
-
attr_reader method_name: Symbol
|
|
106
|
-
|
|
107
|
-
attr_reader method_types: Array[Interface::MethodType]
|
|
108
|
-
|
|
109
|
-
def initialize: (node: Parser::AST::Node, receiver_type: AST::Types::t, method_name: Symbol, method_types: Array[Interface::MethodType]) -> void
|
|
110
|
-
|
|
111
|
-
def header_line: () -> String
|
|
112
|
-
|
|
113
|
-
def detail_lines: () -> String
|
|
114
|
-
end
|
|
115
|
-
|
|
116
|
-
class ArgumentTypeMismatch < Base
|
|
117
|
-
attr_reader node (): Parser::AST::Node
|
|
118
|
-
|
|
119
|
-
attr_reader expected: AST::Types::t
|
|
120
|
-
|
|
121
|
-
attr_reader actual: AST::Types::t
|
|
122
|
-
|
|
123
|
-
attr_reader result: Subtyping::Result::t
|
|
124
|
-
|
|
125
|
-
include ResultPrinter
|
|
126
|
-
|
|
127
|
-
def initialize: (node: Parser::AST::Node, expected: AST::Types::t, actual: AST::Types::t, result: Subtyping::Result::t) -> void
|
|
128
|
-
|
|
129
|
-
def header_line: () -> ::String
|
|
130
|
-
end
|
|
131
|
-
|
|
132
|
-
class NoMethod < Base
|
|
133
|
-
attr_reader type: AST::Types::t
|
|
134
|
-
|
|
135
|
-
attr_reader method: Symbol
|
|
136
|
-
|
|
137
|
-
def initialize: (node: Parser::AST::Node, type: AST::Types::t, method: Symbol) -> void
|
|
138
|
-
|
|
139
|
-
def header_line: () -> ::String
|
|
140
|
-
end
|
|
141
|
-
|
|
142
|
-
class ReturnTypeMismatch < Base
|
|
143
|
-
attr_reader expected: untyped
|
|
144
|
-
|
|
145
|
-
attr_reader actual: untyped
|
|
146
|
-
|
|
147
|
-
attr_reader result: untyped
|
|
148
|
-
|
|
149
|
-
include ResultPrinter
|
|
150
|
-
|
|
151
|
-
def initialize: (node: untyped, expected: untyped, actual: untyped, result: untyped) -> void
|
|
152
|
-
|
|
153
|
-
def header_line: () -> ::String
|
|
154
|
-
end
|
|
155
|
-
|
|
156
|
-
# Setter method, which has a name ending with `=`, returns different type from the method type
|
|
157
|
-
#
|
|
158
|
-
# ```ruby
|
|
159
|
-
# class Foo
|
|
160
|
-
# # Assume `name=` has method type of `(String) -> String`
|
|
161
|
-
# def name=(value)
|
|
162
|
-
# return if value.empty?
|
|
163
|
-
# @value = value
|
|
164
|
-
# end
|
|
165
|
-
# end
|
|
166
|
-
# ```
|
|
167
|
-
#
|
|
168
|
-
# This is a special diagnostic for setter methods because the return value is not used with ordinal call syntax.
|
|
169
|
-
#
|
|
170
|
-
class SetterReturnTypeMismatch < Base
|
|
171
|
-
attr_reader expected: AST::Types::t
|
|
172
|
-
|
|
173
|
-
attr_reader actual: AST::Types::t
|
|
174
|
-
|
|
175
|
-
attr_reader result: Subtyping::Result::Base
|
|
176
|
-
|
|
177
|
-
attr_reader method_name: Symbol
|
|
178
|
-
|
|
179
|
-
include ResultPrinter
|
|
180
|
-
|
|
181
|
-
def initialize: (node: Parser::AST::Node, method_name: Symbol, expected: AST::Types::t, actual: AST::Types::t, result: Subtyping::Result::Base) -> void
|
|
182
|
-
|
|
183
|
-
def header_line: () -> String
|
|
184
|
-
end
|
|
185
|
-
|
|
186
|
-
class UnexpectedBlockGiven < Base
|
|
187
|
-
attr_reader method_type: untyped
|
|
188
|
-
|
|
189
|
-
def initialize: (node: untyped, method_type: untyped) -> void
|
|
190
|
-
|
|
191
|
-
def header_line: () -> "The method cannot be called with a block"
|
|
192
|
-
end
|
|
193
|
-
|
|
194
|
-
class RequiredBlockMissing < Base
|
|
195
|
-
attr_reader method_type: untyped
|
|
196
|
-
|
|
197
|
-
def initialize: (node: untyped, method_type: untyped) -> void
|
|
198
|
-
|
|
199
|
-
def header_line: () -> "The method cannot be called without a block"
|
|
200
|
-
end
|
|
201
|
-
|
|
202
|
-
class BlockTypeMismatch < Base
|
|
203
|
-
attr_reader expected: untyped
|
|
204
|
-
|
|
205
|
-
attr_reader actual: untyped
|
|
206
|
-
|
|
207
|
-
attr_reader result: untyped
|
|
208
|
-
|
|
209
|
-
include ResultPrinter
|
|
210
|
-
|
|
211
|
-
def initialize: (node: untyped, expected: untyped, actual: untyped, result: untyped) -> void
|
|
212
|
-
|
|
213
|
-
def header_line: () -> ::String
|
|
214
|
-
end
|
|
215
|
-
|
|
216
|
-
class BlockBodyTypeMismatch < Base
|
|
217
|
-
attr_reader expected: untyped
|
|
218
|
-
|
|
219
|
-
attr_reader actual: untyped
|
|
220
|
-
|
|
221
|
-
attr_reader result: untyped
|
|
222
|
-
|
|
223
|
-
include ResultPrinter
|
|
224
|
-
|
|
225
|
-
def initialize: (node: untyped, expected: untyped, actual: untyped, result: untyped) -> void
|
|
226
|
-
|
|
227
|
-
def header_line: () -> ::String
|
|
228
|
-
end
|
|
229
|
-
|
|
230
|
-
class BreakTypeMismatch < Base
|
|
231
|
-
attr_reader expected: untyped
|
|
232
|
-
|
|
233
|
-
attr_reader actual: untyped
|
|
234
|
-
|
|
235
|
-
attr_reader result: untyped
|
|
236
|
-
|
|
237
|
-
include ResultPrinter
|
|
238
|
-
|
|
239
|
-
def initialize: (node: untyped, expected: untyped, actual: untyped, result: untyped) -> void
|
|
240
|
-
|
|
241
|
-
def header_line: () -> ::String
|
|
242
|
-
end
|
|
243
|
-
|
|
244
|
-
class ImplicitBreakValueMismatch < Base
|
|
245
|
-
attr_reader jump_type: untyped
|
|
246
|
-
|
|
247
|
-
attr_reader result: untyped
|
|
248
|
-
|
|
249
|
-
include ResultPrinter
|
|
250
|
-
|
|
251
|
-
def initialize: (node: untyped, jump_type: untyped, result: untyped) -> void
|
|
252
|
-
|
|
253
|
-
def header_line: () -> ::String
|
|
254
|
-
end
|
|
255
|
-
|
|
256
|
-
class UnexpectedJump < Base
|
|
257
|
-
def header_line: () -> "Cannot jump from here"
|
|
258
|
-
end
|
|
259
|
-
|
|
260
|
-
class UnexpectedJumpValue < Base
|
|
261
|
-
def header_line: () -> ::String
|
|
262
|
-
end
|
|
263
|
-
|
|
264
|
-
class MethodArityMismatch < Base
|
|
265
|
-
attr_reader method_type: untyped
|
|
266
|
-
|
|
267
|
-
def initialize: (node: untyped, method_type: untyped) -> void
|
|
268
|
-
|
|
269
|
-
def header_line: () -> ::String
|
|
270
|
-
end
|
|
271
|
-
|
|
272
|
-
class MethodParameterMismatch < Base
|
|
273
|
-
attr_reader method_param: untyped
|
|
274
|
-
|
|
275
|
-
attr_reader method_type: untyped
|
|
276
|
-
|
|
277
|
-
def initialize: (method_param: untyped, method_type: untyped) -> void
|
|
278
|
-
|
|
279
|
-
def header_line: () -> ::String
|
|
280
|
-
end
|
|
281
|
-
|
|
282
|
-
class DifferentMethodParameterKind < Base
|
|
283
|
-
attr_reader method_param: untyped
|
|
284
|
-
|
|
285
|
-
attr_reader method_type: untyped
|
|
286
|
-
|
|
287
|
-
def initialize: (method_param: untyped, method_type: untyped) -> void
|
|
288
|
-
|
|
289
|
-
def header_line: () -> ::String
|
|
290
|
-
end
|
|
291
|
-
|
|
292
|
-
class IncompatibleMethodTypeAnnotation < Base
|
|
293
|
-
attr_reader interface_method: untyped
|
|
294
|
-
|
|
295
|
-
attr_reader annotation_method: untyped
|
|
296
|
-
|
|
297
|
-
attr_reader result: untyped
|
|
298
|
-
|
|
299
|
-
include ResultPrinter
|
|
300
|
-
|
|
301
|
-
def initialize: (node: untyped, interface_method: untyped, annotation_method: untyped, result: untyped) -> void
|
|
302
|
-
end
|
|
303
|
-
|
|
304
|
-
class MethodReturnTypeAnnotationMismatch < Base
|
|
305
|
-
attr_reader method_type: untyped
|
|
306
|
-
|
|
307
|
-
attr_reader annotation_type: untyped
|
|
308
|
-
|
|
309
|
-
attr_reader result: untyped
|
|
310
|
-
|
|
311
|
-
include ResultPrinter
|
|
312
|
-
|
|
313
|
-
def initialize: (node: untyped, method_type: untyped, annotation_type: untyped, result: untyped) -> void
|
|
314
|
-
|
|
315
|
-
def header_line: () -> ::String
|
|
316
|
-
end
|
|
317
|
-
|
|
318
|
-
class MethodBodyTypeMismatch < Base
|
|
319
|
-
attr_reader expected: untyped
|
|
320
|
-
|
|
321
|
-
attr_reader actual: untyped
|
|
322
|
-
|
|
323
|
-
attr_reader result: untyped
|
|
324
|
-
|
|
325
|
-
include ResultPrinter
|
|
326
|
-
|
|
327
|
-
def initialize: (node: untyped, expected: untyped, actual: untyped, result: untyped) -> void
|
|
328
|
-
|
|
329
|
-
def header_line: () -> ::String
|
|
330
|
-
end
|
|
331
|
-
|
|
332
|
-
# Setter method, which has a name ending with `=`, has different type from the method type
|
|
333
|
-
#
|
|
334
|
-
# ```ruby
|
|
335
|
-
# class Foo
|
|
336
|
-
# # Assume `name=` has method type of `(String) -> String`
|
|
337
|
-
# def name=(value)
|
|
338
|
-
# @value = value
|
|
339
|
-
# value.strip!
|
|
340
|
-
# end
|
|
341
|
-
# end
|
|
342
|
-
# ```
|
|
343
|
-
#
|
|
344
|
-
# This is a special diagnostic for setter methods because the return value is not used with ordinal call syntax.
|
|
345
|
-
#
|
|
346
|
-
class SetterBodyTypeMismatch < Base
|
|
347
|
-
attr_reader expected: AST::Types::t
|
|
348
|
-
|
|
349
|
-
attr_reader actual: AST::Types::t
|
|
350
|
-
|
|
351
|
-
attr_reader result: Subtyping::Result::Base
|
|
352
|
-
|
|
353
|
-
attr_reader method_name: Symbol
|
|
354
|
-
|
|
355
|
-
include ResultPrinter
|
|
356
|
-
|
|
357
|
-
def initialize: (node: Parser::AST::Node & Parser::AST::_DefNode, expected: AST::Types::t, actual: AST::Types::t, result: Subtyping::Result::Base, method_name: Symbol) -> void
|
|
358
|
-
|
|
359
|
-
def header_line: () -> String
|
|
360
|
-
end
|
|
361
|
-
|
|
362
|
-
class UnexpectedYield < Base
|
|
363
|
-
def header_line: () -> "No block given for `yield`"
|
|
364
|
-
end
|
|
365
|
-
|
|
366
|
-
class UnexpectedSuper < Base
|
|
367
|
-
attr_reader method: Symbol?
|
|
368
|
-
|
|
369
|
-
def initialize: (node: Parser::AST::Node, method: Symbol?) -> void
|
|
370
|
-
|
|
371
|
-
def header_line: () -> ::String
|
|
372
|
-
end
|
|
373
|
-
|
|
374
|
-
class MethodDefinitionMissing < Base
|
|
375
|
-
attr_reader module_name: untyped
|
|
376
|
-
|
|
377
|
-
attr_reader kind: untyped
|
|
378
|
-
|
|
379
|
-
attr_reader missing_method: untyped
|
|
380
|
-
|
|
381
|
-
def initialize: (node: untyped, module_name: untyped, kind: untyped, missing_method: untyped) -> void
|
|
382
|
-
|
|
383
|
-
def header_line: () -> ::String
|
|
384
|
-
end
|
|
385
|
-
|
|
386
|
-
class UnexpectedDynamicMethod < Base
|
|
387
|
-
attr_reader module_name: untyped
|
|
388
|
-
|
|
389
|
-
attr_reader method_name: untyped
|
|
390
|
-
|
|
391
|
-
def initialize: (node: untyped, module_name: untyped, method_name: untyped) -> void
|
|
392
|
-
|
|
393
|
-
def header_line: () -> ::String
|
|
394
|
-
end
|
|
395
|
-
|
|
396
|
-
class UnknownConstant < Base
|
|
397
|
-
attr_reader name: untyped
|
|
398
|
-
|
|
399
|
-
attr_reader kind: untyped
|
|
400
|
-
|
|
401
|
-
def initialize: (node: untyped, name: untyped) -> void
|
|
402
|
-
|
|
403
|
-
def class!: () -> self
|
|
404
|
-
|
|
405
|
-
def module!: () -> self
|
|
406
|
-
|
|
407
|
-
def header_line: () -> ::String
|
|
408
|
-
end
|
|
409
|
-
|
|
410
|
-
class UnknownInstanceVariable < Base
|
|
411
|
-
attr_reader name: Symbol
|
|
412
|
-
|
|
413
|
-
def initialize: (node: Parser::AST::Node, name: Symbol) -> void
|
|
414
|
-
|
|
415
|
-
def header_line: () -> ::String
|
|
416
|
-
end
|
|
417
|
-
|
|
418
|
-
class UnknownGlobalVariable < Base
|
|
419
|
-
attr_reader name: untyped
|
|
420
|
-
|
|
421
|
-
def initialize: (node: untyped, name: untyped) -> void
|
|
422
|
-
|
|
423
|
-
def header_line: () -> ::String
|
|
424
|
-
end
|
|
425
|
-
|
|
426
|
-
class FallbackAny < Base
|
|
427
|
-
def initialize: (node: untyped) -> void
|
|
428
|
-
|
|
429
|
-
def header_line: () -> "Cannot detect the type of the expression"
|
|
430
|
-
end
|
|
431
|
-
|
|
432
|
-
class UnsatisfiableConstraint < Base
|
|
433
|
-
attr_reader method_type: untyped
|
|
434
|
-
|
|
435
|
-
attr_reader var: untyped
|
|
436
|
-
|
|
437
|
-
attr_reader sub_type: untyped
|
|
438
|
-
|
|
439
|
-
attr_reader super_type: untyped
|
|
440
|
-
|
|
441
|
-
attr_reader result: untyped
|
|
442
|
-
|
|
443
|
-
def initialize: (node: untyped, method_type: untyped, var: untyped, sub_type: untyped, super_type: untyped, result: untyped) -> void
|
|
444
|
-
|
|
445
|
-
include ResultPrinter
|
|
446
|
-
|
|
447
|
-
def header_line: () -> ::String
|
|
448
|
-
end
|
|
449
|
-
|
|
450
|
-
class IncompatibleAnnotation < Base
|
|
451
|
-
attr_reader result: Subtyping::Result::Base
|
|
452
|
-
|
|
453
|
-
attr_reader relation: Subtyping::Relation[untyped]
|
|
454
|
-
|
|
455
|
-
attr_reader var_name: Symbol
|
|
456
|
-
|
|
457
|
-
def initialize: (node: Parser::AST::Node, var_name: Symbol, result: Subtyping::Result::Base, relation: Subtyping::Relation[untyped]) -> void
|
|
458
|
-
|
|
459
|
-
include ResultPrinter
|
|
460
|
-
|
|
461
|
-
def header_line: () -> ::String
|
|
462
|
-
end
|
|
463
|
-
|
|
464
|
-
class IncompatibleTypeCase < Base
|
|
465
|
-
attr_reader var_name: untyped
|
|
466
|
-
|
|
467
|
-
attr_reader result: untyped
|
|
468
|
-
|
|
469
|
-
attr_reader relation: untyped
|
|
470
|
-
|
|
471
|
-
def initialize: (node: untyped, var_name: untyped, result: untyped, relation: untyped) -> void
|
|
472
|
-
|
|
473
|
-
include ResultPrinter
|
|
474
|
-
|
|
475
|
-
def header_line: () -> ::String
|
|
476
|
-
end
|
|
477
|
-
|
|
478
|
-
class UnreachableBranch < Base
|
|
479
|
-
def header_line: () -> String
|
|
480
|
-
end
|
|
481
|
-
|
|
482
|
-
# The branch is unreachable, but not `bot` type
|
|
483
|
-
#
|
|
484
|
-
# We often have `else` branch to make the code more defensive:
|
|
485
|
-
#
|
|
486
|
-
# ```ruby
|
|
487
|
-
# case value
|
|
488
|
-
# when Integer
|
|
489
|
-
# # ...
|
|
490
|
-
# when String
|
|
491
|
-
# # ...
|
|
492
|
-
# else
|
|
493
|
-
# raise "Cannot happen!"
|
|
494
|
-
# end
|
|
495
|
-
# ```
|
|
496
|
-
#
|
|
497
|
-
# This diagnostic allows writing `raise` or `return`, by checking the type of the branch body is `bot` or not.
|
|
498
|
-
#
|
|
499
|
-
class UnreachableValueBranch < Base
|
|
500
|
-
attr_reader type: AST::Types::t
|
|
501
|
-
|
|
502
|
-
def initialize: (node: Parser::AST::Node, type: AST::Types::t, ?location: location) -> void
|
|
503
|
-
|
|
504
|
-
def header_line: () -> String
|
|
505
|
-
end
|
|
506
|
-
|
|
507
|
-
class UnexpectedSplat < Base
|
|
508
|
-
attr_reader type: untyped
|
|
509
|
-
|
|
510
|
-
def initialize: (node: untyped, type: untyped) -> void
|
|
511
|
-
|
|
512
|
-
def header_line: () -> "Hash splat is given with object other than `Hash[X, Y]`"
|
|
513
|
-
end
|
|
514
|
-
|
|
515
|
-
class ProcTypeExpected < Base
|
|
516
|
-
attr_reader type: untyped
|
|
517
|
-
|
|
518
|
-
def initialize: (node: untyped, type: untyped) -> void
|
|
519
|
-
|
|
520
|
-
def header_line: () -> ::String
|
|
521
|
-
end
|
|
522
|
-
|
|
523
|
-
# The `#to_ary` of RHS of multiple assignment is called, but returns not tuple nor Array.
|
|
524
|
-
#
|
|
525
|
-
# ```ruby
|
|
526
|
-
# a, b = foo()
|
|
527
|
-
# ^^^^^
|
|
528
|
-
# ```
|
|
529
|
-
#
|
|
530
|
-
class MultipleAssignmentConversionError < Base
|
|
531
|
-
attr_reader original_type: AST::Types::t
|
|
532
|
-
|
|
533
|
-
attr_reader returned_type: AST::Types::t
|
|
534
|
-
|
|
535
|
-
def initialize: (node: Parser::AST::Node, original_type: AST::Types::t, returned_type: AST::Types::t) -> void
|
|
536
|
-
|
|
537
|
-
def header_line: () -> ::String
|
|
538
|
-
end
|
|
539
|
-
|
|
540
|
-
class UnsupportedSyntax < Base
|
|
541
|
-
attr_reader message: untyped
|
|
542
|
-
|
|
543
|
-
def initialize: (node: untyped, ?message: untyped?) -> void
|
|
544
|
-
|
|
545
|
-
def header_line: () -> (untyped | ::String)
|
|
546
|
-
end
|
|
547
|
-
|
|
548
|
-
class UnexpectedError < Base
|
|
549
|
-
attr_reader error: Exception
|
|
550
|
-
|
|
551
|
-
def initialize: (node: Parser::AST::Node, error: Exception) -> void
|
|
552
|
-
|
|
553
|
-
def header_line: () -> ::String
|
|
554
|
-
end
|
|
555
|
-
|
|
556
|
-
class SyntaxError < Base
|
|
557
|
-
attr_reader message: untyped
|
|
558
|
-
|
|
559
|
-
def initialize: (message: untyped, location: untyped) -> void
|
|
560
|
-
|
|
561
|
-
def header_line: () -> ::String
|
|
562
|
-
end
|
|
563
|
-
|
|
564
|
-
class FalseAssertion < Base
|
|
565
|
-
attr_reader assertion_type: AST::Types::t
|
|
566
|
-
|
|
567
|
-
attr_reader node_type: AST::Types::t
|
|
568
|
-
|
|
569
|
-
def initialize: (node: Parser::AST::Node, assertion_type: AST::Types::t, node_type: AST::Types::t) -> void
|
|
570
|
-
|
|
571
|
-
def header_line: () -> String
|
|
572
|
-
end
|
|
573
|
-
|
|
574
|
-
class UnexpectedTypeArgument < Base
|
|
575
|
-
attr_reader type_arg: AST::Types::t
|
|
576
|
-
|
|
577
|
-
attr_reader method_type: Interface::MethodType
|
|
578
|
-
|
|
579
|
-
def node: () -> nil
|
|
580
|
-
|
|
581
|
-
def initialize: (type_arg: AST::Types::t, method_type: Interface::MethodType) -> void
|
|
582
|
-
|
|
583
|
-
def header_line: () -> String
|
|
584
|
-
end
|
|
585
|
-
|
|
586
|
-
class InsufficientTypeArgument < Base
|
|
587
|
-
attr_reader type_args: Array[AST::Types::t]
|
|
588
|
-
|
|
589
|
-
attr_reader method_type: Interface::MethodType
|
|
590
|
-
|
|
591
|
-
def initialize: (node: Parser::AST::Node, type_args: Array[AST::Types::t], method_type: Interface::MethodType) -> void
|
|
592
|
-
|
|
593
|
-
def header_line: () -> String
|
|
594
|
-
end
|
|
595
|
-
|
|
596
|
-
class TypeArgumentMismatchError < Base
|
|
597
|
-
attr_reader type_argument: AST::Types::t
|
|
598
|
-
|
|
599
|
-
attr_reader type_parameter: Interface::TypeParam
|
|
600
|
-
|
|
601
|
-
attr_reader result: Subtyping::Result::Base
|
|
602
|
-
|
|
603
|
-
include ResultPrinter
|
|
604
|
-
|
|
605
|
-
def node: () -> nil
|
|
606
|
-
|
|
607
|
-
def initialize: (type_arg: AST::Types::t, type_param: Interface::TypeParam, result: Subtyping::Result::Base) -> void
|
|
608
|
-
|
|
609
|
-
def header_line: () -> String
|
|
610
|
-
end
|
|
611
|
-
|
|
612
|
-
# Type hint is given to a proc/lambda but it was ignored
|
|
613
|
-
#
|
|
614
|
-
# 1. Because the hint is incompatible to `::Proc` type
|
|
615
|
-
# 2. More than one *proc type* is included in the hint
|
|
616
|
-
#
|
|
617
|
-
class ProcHintIgnored < Base
|
|
618
|
-
attr_reader hint_type: AST::Types::t
|
|
619
|
-
|
|
620
|
-
def initialize: (hint_type: AST::Types::t, node: Parser::AST::Node) -> void
|
|
621
|
-
end
|
|
622
|
-
|
|
623
|
-
# RBS embedded in the Ruby code has validation error
|
|
624
|
-
#
|
|
625
|
-
class RBSError < Base
|
|
626
|
-
attr_reader error: Signature::Base
|
|
627
|
-
|
|
628
|
-
def initialize: (error: Signature::Base, node: Parser::AST::Node, location: location) -> void
|
|
629
|
-
end
|
|
630
|
-
|
|
631
|
-
# steep:ignore comment is invalid
|
|
632
|
-
#
|
|
633
|
-
class InvalidIgnoreComment < Base
|
|
634
|
-
attr_reader comment: Parser::Source::Comment
|
|
635
|
-
|
|
636
|
-
def initialize: (comment: Parser::Source::Comment) -> void
|
|
637
|
-
end
|
|
638
|
-
|
|
639
|
-
# Argument forwarding `...` cannot be done safely, because of
|
|
640
|
-
#
|
|
641
|
-
# 1. The arguments are incompatible, or
|
|
642
|
-
# 2. The blocks are incompatible
|
|
643
|
-
#
|
|
644
|
-
class IncompatibleArgumentForwarding < Base
|
|
645
|
-
attr_reader method_name: Symbol
|
|
646
|
-
|
|
647
|
-
attr_reader params_pair: [Interface::Function::Params, Interface::Function::Params]?
|
|
648
|
-
|
|
649
|
-
attr_reader block_pair: [Interface::Block?, Interface::Block?]?
|
|
650
|
-
|
|
651
|
-
attr_reader result: Subtyping::Result::Base
|
|
652
|
-
|
|
653
|
-
include ResultPrinter2
|
|
654
|
-
|
|
655
|
-
# One of `params_pair:` or `block_pair:` is specified where the first object is of the source method (`#foo`) and the second value is of the target method (`#bar`)
|
|
656
|
-
#
|
|
657
|
-
# ```ruby
|
|
658
|
-
# def foo(...)
|
|
659
|
-
# bar(...)
|
|
660
|
-
# end
|
|
661
|
-
# ```
|
|
662
|
-
#
|
|
663
|
-
def initialize: (node: Parser::AST::Node, method_name: Symbol, params_pair: [Interface::Function::Params, Interface::Function::Params], result: Subtyping::Result::Base) -> void
|
|
664
|
-
| (node: Parser::AST::Node, method_name: Symbol, block_pair: [Interface::Block?, Interface::Block?], result: Subtyping::Result::Base) -> void
|
|
665
|
-
|
|
666
|
-
def header_line: () -> String
|
|
667
|
-
end
|
|
668
|
-
|
|
669
|
-
ALL: Array[singleton(Base)]
|
|
670
|
-
|
|
671
|
-
type template = Hash[singleton(Base), LSPFormatter::severity?]
|
|
672
|
-
|
|
673
|
-
self.@all_error: template?
|
|
674
|
-
self.@default: template?
|
|
675
|
-
self.@strict: template?
|
|
676
|
-
self.@lenient: template?
|
|
677
|
-
self.@silent: template?
|
|
678
|
-
|
|
679
|
-
# This template reports everything as an error
|
|
680
|
-
#
|
|
681
|
-
def self.all_error: () -> template
|
|
682
|
-
|
|
683
|
-
# This template detects inconsistencies between RBS and Ruby code APIs
|
|
684
|
-
#
|
|
685
|
-
def self.default: () -> template
|
|
686
|
-
|
|
687
|
-
# This template helps you keeping your codebase (almost) type-safe
|
|
688
|
-
#
|
|
689
|
-
# You can start with this template to review the problems reported on the project,
|
|
690
|
-
# and you can ignore some kind of errors.
|
|
691
|
-
#
|
|
692
|
-
def self.strict: () -> template
|
|
693
|
-
|
|
694
|
-
# This template detects inconsistent definition in Ruby code with respect to your RBS definition
|
|
695
|
-
#
|
|
696
|
-
def self.lenient: () -> template
|
|
697
|
-
|
|
698
|
-
# This template reports nothing
|
|
699
|
-
#
|
|
700
|
-
def self.silent: () -> template
|
|
701
|
-
end
|
|
702
|
-
end
|
|
703
|
-
end
|