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.
Files changed (170) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +43 -0
  3. data/README.md +18 -0
  4. data/doc/narrowing.md +1 -1
  5. data/doc/shape.md +176 -0
  6. data/guides/src/gem-rbs-collection/gem-rbs-collection.md +7 -24
  7. data/lib/steep/ast/types/factory.rb +27 -18
  8. data/lib/steep/ast/types/proc.rb +14 -9
  9. data/lib/steep/interface/block.rb +1 -1
  10. data/lib/steep/interface/builder.rb +1 -0
  11. data/lib/steep/interface/function.rb +14 -6
  12. data/lib/steep/interface/method_type.rb +15 -7
  13. data/lib/steep/project/pattern.rb +1 -2
  14. data/lib/steep/rake_task.rb +132 -0
  15. data/lib/steep/server/interaction_worker.rb +6 -0
  16. data/lib/steep/server/lsp_formatter.rb +2 -0
  17. data/lib/steep/services/completion_provider.rb +1 -1
  18. data/lib/steep/services/file_loader.rb +15 -20
  19. data/lib/steep/services/signature_help_provider.rb +11 -9
  20. data/lib/steep/signature/validator.rb +1 -1
  21. data/lib/steep/subtyping/check.rb +15 -6
  22. data/lib/steep/subtyping/variable_variance.rb +3 -3
  23. data/lib/steep/type_construction.rb +186 -149
  24. data/lib/steep/type_inference/block_params.rb +1 -1
  25. data/lib/steep/type_inference/logic_type_interpreter.rb +2 -1
  26. data/lib/steep/type_inference/method_params.rb +16 -0
  27. data/lib/steep/type_inference/send_args.rb +5 -2
  28. data/lib/steep/version.rb +1 -1
  29. data/steep.gemspec +5 -2
  30. metadata +7 -145
  31. data/.github/dependabot.yml +0 -28
  32. data/.github/workflows/ruby-windows.yml +0 -35
  33. data/.github/workflows/ruby.yml +0 -32
  34. data/.vscode/steep-shared.code-snippets +0 -41
  35. data/Gemfile +0 -14
  36. data/Gemfile.lock +0 -104
  37. data/Gemfile.steep +0 -0
  38. data/gemfile_steep/Gemfile +0 -3
  39. data/gemfile_steep/Gemfile.lock +0 -77
  40. data/rbs_collection.steep.lock.yaml +0 -108
  41. data/rbs_collection.steep.yaml +0 -23
  42. data/sig/shims/bundler.rbs +0 -3
  43. data/sig/shims/concurrent-ruby.rbs +0 -39
  44. data/sig/shims/exception.rbs +0 -4
  45. data/sig/shims/language-server_protocol.rbs +0 -450
  46. data/sig/shims/parser/comment.rbs +0 -33
  47. data/sig/shims/parser/nodes.rbs +0 -252
  48. data/sig/shims/parser/source/map.rbs +0 -146
  49. data/sig/shims/parser/source/range.rbs +0 -237
  50. data/sig/shims/parser.rbs +0 -69
  51. data/sig/shims/string.rbs +0 -4
  52. data/sig/shims/tagged_logging.rbs +0 -6
  53. data/sig/shims/yaml.rbs +0 -4
  54. data/sig/steep/annotation_parser.rbs +0 -60
  55. data/sig/steep/ast/annotation/collection.rbs +0 -78
  56. data/sig/steep/ast/annotation.rbs +0 -121
  57. data/sig/steep/ast/builtin.rbs +0 -69
  58. data/sig/steep/ast/ignore.rbs +0 -66
  59. data/sig/steep/ast/node/type_application.rbs +0 -31
  60. data/sig/steep/ast/node/type_assertion.rbs +0 -32
  61. data/sig/steep/ast/types/any.rbs +0 -29
  62. data/sig/steep/ast/types/boolean.rbs +0 -31
  63. data/sig/steep/ast/types/bot.rbs +0 -29
  64. data/sig/steep/ast/types/class.rbs +0 -33
  65. data/sig/steep/ast/types/factory.rbs +0 -110
  66. data/sig/steep/ast/types/helper.rbs +0 -24
  67. data/sig/steep/ast/types/instance.rbs +0 -33
  68. data/sig/steep/ast/types/intersection.rbs +0 -40
  69. data/sig/steep/ast/types/literal.rbs +0 -35
  70. data/sig/steep/ast/types/logic.rbs +0 -83
  71. data/sig/steep/ast/types/name.rbs +0 -84
  72. data/sig/steep/ast/types/nil.rbs +0 -31
  73. data/sig/steep/ast/types/proc.rbs +0 -53
  74. data/sig/steep/ast/types/record.rbs +0 -39
  75. data/sig/steep/ast/types/self.rbs +0 -33
  76. data/sig/steep/ast/types/top.rbs +0 -29
  77. data/sig/steep/ast/types/tuple.rbs +0 -37
  78. data/sig/steep/ast/types/union.rbs +0 -40
  79. data/sig/steep/ast/types/var.rbs +0 -42
  80. data/sig/steep/ast/types/void.rbs +0 -29
  81. data/sig/steep/ast/types.rbs +0 -16
  82. data/sig/steep/cli.rbs +0 -55
  83. data/sig/steep/diagnostic/deprecated/else_on_exhaustive_case.rbs +0 -13
  84. data/sig/steep/diagnostic/deprecated/unknown_constant_assigned.rbs +0 -15
  85. data/sig/steep/diagnostic/helper.rbs +0 -15
  86. data/sig/steep/diagnostic/lsp_formatter.rbs +0 -36
  87. data/sig/steep/diagnostic/ruby.rbs +0 -703
  88. data/sig/steep/diagnostic/signature.rbs +0 -252
  89. data/sig/steep/drivers/annotations.rbs +0 -17
  90. data/sig/steep/drivers/check.rbs +0 -33
  91. data/sig/steep/drivers/checkfile.rbs +0 -27
  92. data/sig/steep/drivers/diagnostic_printer.rbs +0 -25
  93. data/sig/steep/drivers/init.rbs +0 -19
  94. data/sig/steep/drivers/langserver.rbs +0 -36
  95. data/sig/steep/drivers/print_project.rbs +0 -15
  96. data/sig/steep/drivers/stats.rbs +0 -47
  97. data/sig/steep/drivers/utils/driver_helper.rbs +0 -25
  98. data/sig/steep/drivers/utils/jobs_option.rbs +0 -19
  99. data/sig/steep/drivers/validate.rbs +0 -15
  100. data/sig/steep/drivers/vendor.rbs +0 -19
  101. data/sig/steep/drivers/watch.rbs +0 -27
  102. data/sig/steep/drivers/worker.rbs +0 -29
  103. data/sig/steep/equatable.rbs +0 -11
  104. data/sig/steep/expectations.rbs +0 -72
  105. data/sig/steep/index/rbs_index.rbs +0 -141
  106. data/sig/steep/index/signature_symbol_provider.rbs +0 -41
  107. data/sig/steep/index/source_index.rbs +0 -63
  108. data/sig/steep/interface/block.rbs +0 -41
  109. data/sig/steep/interface/builder.rbs +0 -152
  110. data/sig/steep/interface/function.rbs +0 -270
  111. data/sig/steep/interface/method_type.rbs +0 -105
  112. data/sig/steep/interface/shape.rbs +0 -80
  113. data/sig/steep/interface/substitution.rbs +0 -51
  114. data/sig/steep/interface/type_param.rbs +0 -43
  115. data/sig/steep/method_name.rbs +0 -30
  116. data/sig/steep/module_helper.rbs +0 -16
  117. data/sig/steep/node_helper.rbs +0 -91
  118. data/sig/steep/path_helper.rbs +0 -15
  119. data/sig/steep/project/dsl.rbs +0 -108
  120. data/sig/steep/project/options.rbs +0 -47
  121. data/sig/steep/project/pattern.rbs +0 -47
  122. data/sig/steep/project/target.rbs +0 -25
  123. data/sig/steep/project.rbs +0 -26
  124. data/sig/steep/range_extension.rbs +0 -7
  125. data/sig/steep/server/base_worker.rbs +0 -49
  126. data/sig/steep/server/change_buffer.rbs +0 -38
  127. data/sig/steep/server/delay_queue.rbs +0 -37
  128. data/sig/steep/server/interaction_worker.rbs +0 -90
  129. data/sig/steep/server/lsp_formatter.rbs +0 -63
  130. data/sig/steep/server/master.rbs +0 -299
  131. data/sig/steep/server/type_check_worker.rbs +0 -141
  132. data/sig/steep/server/worker_process.rbs +0 -97
  133. data/sig/steep/services/completion_provider.rbs +0 -264
  134. data/sig/steep/services/content_change.rbs +0 -37
  135. data/sig/steep/services/file_loader.rbs +0 -21
  136. data/sig/steep/services/goto_service.rbs +0 -106
  137. data/sig/steep/services/hover_provider/rbs.rbs +0 -47
  138. data/sig/steep/services/hover_provider/ruby.rbs +0 -127
  139. data/sig/steep/services/hover_provider/singleton_methods.rbs +0 -11
  140. data/sig/steep/services/path_assignment.rbs +0 -21
  141. data/sig/steep/services/signature_help_provider.rbs +0 -51
  142. data/sig/steep/services/signature_service.rbs +0 -156
  143. data/sig/steep/services/stats_calculator.rbs +0 -41
  144. data/sig/steep/services/type_check_service.rbs +0 -112
  145. data/sig/steep/services/type_name_completion.rbs +0 -135
  146. data/sig/steep/signature/validator.rbs +0 -85
  147. data/sig/steep/source/ignore_ranges.rbs +0 -38
  148. data/sig/steep/source.rbs +0 -105
  149. data/sig/steep/subtyping/cache.rbs +0 -17
  150. data/sig/steep/subtyping/check.rbs +0 -131
  151. data/sig/steep/subtyping/constraints.rbs +0 -111
  152. data/sig/steep/subtyping/relation.rbs +0 -63
  153. data/sig/steep/subtyping/result.rbs +0 -179
  154. data/sig/steep/subtyping/variable_variance.rbs +0 -25
  155. data/sig/steep/thread_waiter.rbs +0 -13
  156. data/sig/steep/type_construction.rbs +0 -542
  157. data/sig/steep/type_inference/block_params.rbs +0 -170
  158. data/sig/steep/type_inference/case_when.rbs +0 -130
  159. data/sig/steep/type_inference/constant_env.rbs +0 -29
  160. data/sig/steep/type_inference/context.rbs +0 -216
  161. data/sig/steep/type_inference/context_array.rbs +0 -38
  162. data/sig/steep/type_inference/logic_type_interpreter.rbs +0 -108
  163. data/sig/steep/type_inference/method_call.rbs +0 -124
  164. data/sig/steep/type_inference/method_params.rbs +0 -127
  165. data/sig/steep/type_inference/multiple_assignment.rbs +0 -76
  166. data/sig/steep/type_inference/send_args.rbs +0 -243
  167. data/sig/steep/type_inference/type_env.rbs +0 -160
  168. data/sig/steep/type_inference/type_env_builder.rbs +0 -81
  169. data/sig/steep/typing.rbs +0 -75
  170. 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