steep 0.40.0 → 0.41.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 (92) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +4 -0
  3. data/bin/output_rebaseline.rb +15 -30
  4. data/bin/output_test.rb +17 -57
  5. data/lib/steep.rb +4 -0
  6. data/lib/steep/cli.rb +9 -3
  7. data/lib/steep/drivers/check.rb +106 -14
  8. data/lib/steep/drivers/diagnostic_printer.rb +11 -11
  9. data/lib/steep/expectations.rb +159 -0
  10. data/lib/steep/project.rb +6 -0
  11. data/lib/steep/version.rb +1 -1
  12. data/smoke/alias/test_expectations.yml +96 -0
  13. data/smoke/and/test_expectations.yml +31 -0
  14. data/smoke/array/test_expectations.yml +103 -0
  15. data/smoke/block/test_expectations.yml +125 -0
  16. data/smoke/case/test_expectations.yml +47 -0
  17. data/smoke/class/test_expectations.yml +120 -0
  18. data/smoke/const/test_expectations.yml +139 -0
  19. data/smoke/diagnostics-rbs-duplicated/test_expectations.yml +13 -0
  20. data/smoke/diagnostics-rbs/test_expectations.yml +229 -0
  21. data/smoke/diagnostics/test_expectations.yml +477 -0
  22. data/smoke/dstr/test_expectations.yml +13 -0
  23. data/smoke/ensure/test_expectations.yml +62 -0
  24. data/smoke/enumerator/test_expectations.yml +135 -0
  25. data/smoke/extension/test_expectations.yml +61 -0
  26. data/smoke/hash/test_expectations.yml +81 -0
  27. data/smoke/hello/test_expectations.yml +25 -0
  28. data/smoke/if/test_expectations.yml +34 -0
  29. data/smoke/implements/test_expectations.yml +23 -0
  30. data/smoke/initialize/test_expectations.yml +1 -0
  31. data/smoke/integer/test_expectations.yml +101 -0
  32. data/smoke/interface/test_expectations.yml +23 -0
  33. data/smoke/kwbegin/test_expectations.yml +17 -0
  34. data/smoke/lambda/test_expectations.yml +39 -0
  35. data/smoke/literal/test_expectations.yml +106 -0
  36. data/smoke/map/test_expectations.yml +1 -0
  37. data/smoke/method/test_expectations.yml +90 -0
  38. data/smoke/module/test_expectations.yml +75 -0
  39. data/smoke/regexp/test_expectations.yml +615 -0
  40. data/smoke/regression/test_expectations.yml +43 -0
  41. data/smoke/rescue/test_expectations.yml +79 -0
  42. data/smoke/self/test_expectations.yml +23 -0
  43. data/smoke/skip/test_expectations.yml +23 -0
  44. data/smoke/stdout/test_expectations.yml +1 -0
  45. data/smoke/super/test_expectations.yml +79 -0
  46. data/smoke/toplevel/test_expectations.yml +15 -0
  47. data/smoke/tsort/test_expectations.yml +43 -0
  48. data/smoke/type_case/test_expectations.yml +48 -0
  49. data/smoke/yield/test_expectations.yml +68 -0
  50. metadata +41 -44
  51. data/smoke/alias/test.yaml +0 -73
  52. data/smoke/and/test.yaml +0 -24
  53. data/smoke/array/test.yaml +0 -80
  54. data/smoke/block/test.yaml +0 -96
  55. data/smoke/broken/Steepfile +0 -5
  56. data/smoke/broken/broken.rb +0 -0
  57. data/smoke/broken/broken.rbs +0 -0
  58. data/smoke/broken/test.yaml +0 -6
  59. data/smoke/case/test.yaml +0 -36
  60. data/smoke/class/test.yaml +0 -89
  61. data/smoke/const/test.yaml +0 -96
  62. data/smoke/diagnostics-rbs-duplicated/test.yaml +0 -10
  63. data/smoke/diagnostics-rbs/test.yaml +0 -142
  64. data/smoke/diagnostics/test.yaml +0 -333
  65. data/smoke/dstr/test.yaml +0 -10
  66. data/smoke/ensure/test.yaml +0 -47
  67. data/smoke/enumerator/test.yaml +0 -100
  68. data/smoke/extension/test.yaml +0 -50
  69. data/smoke/hash/test.yaml +0 -62
  70. data/smoke/hello/test.yaml +0 -18
  71. data/smoke/if/test.yaml +0 -27
  72. data/smoke/implements/test.yaml +0 -16
  73. data/smoke/initialize/test.yaml +0 -4
  74. data/smoke/integer/test.yaml +0 -66
  75. data/smoke/interface/test.yaml +0 -16
  76. data/smoke/kwbegin/test.yaml +0 -14
  77. data/smoke/lambda/test.yaml +0 -28
  78. data/smoke/literal/test.yaml +0 -79
  79. data/smoke/map/test.yaml +0 -4
  80. data/smoke/method/test.yaml +0 -71
  81. data/smoke/module/test.yaml +0 -51
  82. data/smoke/regexp/test.yaml +0 -372
  83. data/smoke/regression/test.yaml +0 -38
  84. data/smoke/rescue/test.yaml +0 -60
  85. data/smoke/self/test.yaml +0 -16
  86. data/smoke/skip/test.yaml +0 -16
  87. data/smoke/stdout/test.yaml +0 -4
  88. data/smoke/super/test.yaml +0 -52
  89. data/smoke/toplevel/test.yaml +0 -12
  90. data/smoke/tsort/test.yaml +0 -32
  91. data/smoke/type_case/test.yaml +0 -33
  92. data/smoke/yield/test.yaml +0 -49
@@ -1,10 +0,0 @@
1
- ---
2
- test:
3
- a.rbs:
4
- diagnostics:
5
- - |
6
- a.rbs:4:0: [error] Declaration of `::A` is duplicated
7
- │ Diagnostic ID: Ruby::DuplicatedDeclaration
8
-
9
- └ module A
10
- ~~~~~~~~
@@ -1,142 +0,0 @@
1
- ---
2
- test:
3
- duplicated-method-definition.rbs:
4
- diagnostics:
5
- - |
6
- duplicated-method-definition.rbs:2:2: [error] Non-overloading method definition of `foo` in `::DuplicatedMethodDefinitionError` cannot be duplicated
7
- │ Diagnostic ID: Ruby::DuplicatedMethodDefinition
8
-
9
- └ def foo: () -> void
10
- ~~~~~~~~~~~~~~~~~~~
11
- - |
12
- duplicated-method-definition.rbs:18:4: [error] Non-overloading method definition of `g` in `::DuplicatedMethodDefinitionError::A` cannot be duplicated
13
- │ Diagnostic ID: Ruby::DuplicatedMethodDefinition
14
-
15
- └ def g: () -> String
16
- ~~~~~~~~~~~~~~~~~~~
17
- - |
18
- duplicated-method-definition.rbs:6:4: [error] Non-overloading method definition of `f` in `::DuplicatedMethodDefinitionError::_Hello` cannot be duplicated
19
- │ Diagnostic ID: Ruby::DuplicatedMethodDefinition
20
-
21
- └ def f: () -> void
22
- ~~~~~~~~~~~~~~~~~
23
- generic-parameter-mismatch.rbs:
24
- diagnostics:
25
- - |
26
- generic-parameter-mismatch.rbs:5:2: [error] Different generic parameters are specified across definitions of `::GenericParameterMismatchError::Foo`
27
- │ Diagnostic ID: Ruby::GenericParameterMismatch
28
-
29
- └ class Foo[A, B]
30
- ~~~~~~~~~~~~~~~
31
- invalid-method-overload.rbs:
32
- diagnostics:
33
- - |
34
- invalid-method-overload.rbs:2:2: [error] Cannot find a non-overloading definition of `foo` in `::InvalidMethodOverload`
35
- │ Diagnostic ID: Ruby::InvalidMethodOverload
36
-
37
- └ def foo: () -> void | ...
38
- ~~~~~~~~~~~~~~~~~~~~~~~~~
39
- invalid-type-application.rbs:
40
- diagnostics:
41
- - |
42
- invalid-type-application.rbs:2:13: [error] Type `::Integer` is not generic but used as a generic type with 1 arguments
43
- │ Diagnostic ID: Ruby::InvalidTypeApplication
44
-
45
- └ type foo = Integer[3]
46
- ~~~~~~~~~~
47
- - |
48
- invalid-type-application.rbs:4:13: [error] Type `::Array` expects 1 arguments, but 2 arguments are given
49
- │ Diagnostic ID: Ruby::InvalidTypeApplication
50
-
51
- └ type bar = Array[1, 2]
52
- ~~~~~~~~~~~
53
- - |
54
- invalid-type-application.rbs:6:13: [error] Type `::Hash` is generic but used as a non generic type
55
- │ Diagnostic ID: Ruby::InvalidTypeApplication
56
-
57
- └ type baz = Hash
58
- ~~~~
59
- invalid_variance_annotation.rbs:
60
- diagnostics:
61
- - |
62
- invalid_variance_annotation.rbs:2:11: [error] The variance of type parameter `A` is covariant, but used in incompatible position here
63
- │ Diagnostic ID: Ruby::InvalidVarianceAnnotation
64
-
65
- └ def foo: (A) -> void
66
- ~~~~~~~~~~~
67
- recursive-alias.rbs:
68
- diagnostics:
69
- - |
70
- recursive-alias.rbs:2:2: [error] Circular method alias is detected in `::RecursiveAlias`: foo -> bar -> baz
71
- │ Diagnostic ID: Ruby::RecursiveAlias
72
-
73
- └ alias foo bar
74
- ~~~~~~~~~~~~~
75
- recursive-class.rbs:
76
- diagnostics:
77
- - |
78
- recursive-class.rbs:1:0: [error] Circular inheritance/mix-in is detected: ::Foo <: ::Bar <: ::Baz <: ::Foo
79
- │ Diagnostic ID: Ruby::RecursiveAncestor
80
-
81
- └ class Foo < Bar
82
- ~~~~~~~~~~~~~~~
83
- - |
84
- recursive-class.rbs:4:0: [error] Circular inheritance/mix-in is detected: ::Bar <: ::Baz <: ::Foo <: ::Bar
85
- │ Diagnostic ID: Ruby::RecursiveAncestor
86
-
87
- └ class Bar < Baz
88
- ~~~~~~~~~~~~~~~
89
- - |
90
- recursive-class.rbs:7:0: [error] Circular inheritance/mix-in is detected: ::Baz <: ::Foo <: ::Bar <: ::Baz
91
- │ Diagnostic ID: Ruby::RecursiveAncestor
92
-
93
- └ class Baz < Foo
94
- ~~~~~~~~~~~~~~~
95
- superclass-mismatch.rbs:
96
- diagnostics:
97
- - |
98
- superclass-mismatch.rbs:2:2: [error] Different superclasses are specified for `::SuperclassMismatch::Foo`
99
- │ Diagnostic ID: Ruby::SuperclassMismatch
100
-
101
- └ class Foo < String
102
- ~~~~~~~~~~~~~~~~~~
103
- unknown-method-alias.rbs:
104
- diagnostics:
105
- - |
106
- unknown-method-alias.rbs:2:2: [error] Cannot find the original method `bar` in `::UnknownMethodAlias`
107
- │ Diagnostic ID: Ruby::UnknownMethodAlias
108
-
109
- └ alias foo bar
110
- ~~~~~~~~~~~~~
111
- unknown-type-name.rbs:
112
- diagnostics:
113
- - |
114
- unknown-type-name.rbs:6:2: [error] Cannot find type `World`
115
- │ Diagnostic ID: Ruby::UnknownTypeName
116
-
117
- └ include World
118
- ~~~~~~~~~~~~~
119
- - |
120
- unknown-type-name.rbs:8:2: [error] Cannot find type `ABC`
121
- │ Diagnostic ID: Ruby::UnknownTypeName
122
-
123
- └ class Foo < ABC
124
- ~~~~~~~~~~~~~~~
125
- - |
126
- unknown-type-name.rbs:11:15: [error] Cannot find type `ZZZ`
127
- │ Diagnostic ID: Ruby::UnknownTypeName
128
-
129
- └ module Bar : ZZZ
130
- ~~~
131
- - |
132
- unknown-type-name.rbs:4:9: [error] Cannot find type `::World`
133
- │ Diagnostic ID: Ruby::UnknownTypeName
134
-
135
- └ Hello: World
136
- ~~~~~
137
- - |
138
- unknown-type-name.rbs:2:13: [error] Cannot find type `::bar`
139
- │ Diagnostic ID: Ruby::UnknownTypeName
140
-
141
- └ type foo = bar
142
- ~~~
@@ -1,333 +0,0 @@
1
- ---
2
- test:
3
- argument_type_mismatch.rb:
4
- diagnostics:
5
- - |
6
- argument_type_mismatch.rb:1:9: [error] Cannot pass a value of type `::String` as an argument of type `::int`
7
- │ ::String <: ::int
8
- │ ::String <: (::Integer | ::_ToInt)
9
- │ ::String <: ::Integer
10
- │ ::Object <: ::Integer
11
- │ ::BasicObject <: ::Integer
12
-
13
- │ Diagnostic ID: Ruby::ArgumentTypeMismatch
14
-
15
- └ [123].at("")
16
- ~~
17
- block_body_type_mismatch.rb:
18
- diagnostics:
19
- - |
20
- block_body_type_mismatch.rb:1:30: [error] Cannot allow block body have type `::String` because declared as type `::Integer`
21
- │ ::String <: ::Integer
22
- │ ::Object <: ::Integer
23
- │ ::BasicObject <: ::Integer
24
-
25
- │ Diagnostic ID: Ruby::BlockBodyTypeMismatch
26
-
27
- └ BlockBodyTypeMismatch.new.foo { "" }
28
- ~~~~~~
29
- block_type_mismatch.rb:
30
- diagnostics:
31
- - |
32
- block_type_mismatch.rb:3:8: [error] Cannot pass a value of type `^(untyped, untyped, untyped) -> untyped` as a block-pass-argument of type `^(::Integer) -> void`
33
- │ ^(untyped, untyped, untyped) -> untyped <: ^(::Integer) -> void
34
-
35
- │ Diagnostic ID: Ruby::BlockTypeMismatch
36
-
37
- └ 123.tap(&lam)
38
- ~~~~
39
- break_type_mismatch.rb:
40
- diagnostics:
41
- - |
42
- break_type_mismatch.rb:1:10: [error] Cannot break with a value of type `::String` because type `::Integer` is assumed
43
- │ ::String <: ::Integer
44
- │ ::Object <: ::Integer
45
- │ ::BasicObject <: ::Integer
46
-
47
- │ Diagnostic ID: Ruby::BreakTypeMismatch
48
-
49
- └ 123.tap { break "" }
50
- ~~~~~~~~
51
- else_on_exhaustive_case.rb:
52
- diagnostics:
53
- - |
54
- else_on_exhaustive_case.rb:11:2: [error] The branch is unreachable because the condition is exhaustive
55
- │ Diagnostic ID: Ruby::ElseOnExhaustiveCase
56
-
57
- └ raise "Unexpected value"
58
- ~~~~~~~~~~~~~~~~~~~~~~~~
59
- incompatible_annotation.rb:
60
- diagnostics:
61
- - |
62
- incompatible_annotation.rb:5:2: [error] Type annotation about `a` is incompatible since ::String <: ::Array[::Integer] doesn't hold
63
- │ ::String <: ::Array[::Integer]
64
- │ ::Object <: ::Array[::Integer]
65
- │ ::BasicObject <: ::Array[::Integer]
66
-
67
- │ Diagnostic ID: Ruby::IncompatibleAnnotation
68
-
69
- └ a + ""
70
- ~~~~~~
71
- incompatible_argument.rb:
72
- diagnostics:
73
- - |
74
- incompatible_argument.rb:1:6: [error] Cannot find method `at` of type `::Array[::Integer]` with compatible arity
75
- │ Method types:
76
- │ def at: (::int) -> (::Integer | nil)
77
-
78
- │ Diagnostic ID: Ruby::IncompatibleArguments
79
-
80
- └ [123].at(1,2,3)
81
- ~~
82
- incompatible_assignment.rb:
83
- diagnostics:
84
- - |
85
- incompatible_assignment.rb:2:0: [error] Cannot assign a value of type `::Integer` to a variable of type `::String`
86
- │ ::Integer <: ::String
87
- │ ::Numeric <: ::String
88
- │ ::Object <: ::String
89
- │ ::BasicObject <: ::String
90
-
91
- │ Diagnostic ID: Ruby::IncompatibleAssignment
92
-
93
- └ x = 3
94
- ~~~~~
95
- - |
96
- incompatible_assignment.rb:5:0: [error] Cannot assign a value of type `::Integer` to a constant of type `::String`
97
- │ ::Integer <: ::String
98
- │ ::Numeric <: ::String
99
- │ ::Object <: ::String
100
- │ ::BasicObject <: ::String
101
-
102
- │ Diagnostic ID: Ruby::IncompatibleAssignment
103
-
104
- └ X = 123
105
- ~~~~~~~
106
- - |
107
- incompatible_assignment.rb:8:0: [error] Cannot assign a value of type `::Symbol` to a variable of type `::Integer`
108
- │ ::Symbol <: ::Integer
109
- │ ::Object <: ::Integer
110
- │ ::BasicObject <: ::Integer
111
-
112
- │ Diagnostic ID: Ruby::IncompatibleAssignment
113
-
114
- └ @x = :foo
115
- ~~~~~~~~~
116
- method_arity_mismatch.rb:
117
- diagnostics:
118
- - |
119
- method_arity_mismatch.rb:3:9: [error] Method parameters are incompatible with declaration `() -> void`
120
- │ Diagnostic ID: Ruby::MethodArityMismatch
121
-
122
- └ def foo(x)
123
- ~~~
124
- - |
125
- method_arity_mismatch.rb:8:11: [error] Method parameters are incompatible with declaration `(::String) -> void`
126
- │ Diagnostic ID: Ruby::MethodArityMismatch
127
-
128
- └ def self.bar
129
- ~~~
130
- method_body_type_mismatch.rb:
131
- diagnostics:
132
- - |
133
- method_body_type_mismatch.rb:3:2: [error] Cannot allow method body have type `::String` because declared as type `::Integer`
134
- │ ::String <: ::Integer
135
- │ ::Object <: ::Integer
136
- │ ::BasicObject <: ::Integer
137
-
138
- │ Diagnostic ID: Ruby::MethodBodyTypeMismatch
139
-
140
- └ def foo
141
- ~~~~~~~
142
- method_definition_missing.rb:
143
- diagnostics:
144
- - |
145
- method_definition_missing.rb:1:6: [error] Cannot find implementation of method `::MethodDefinitionMissing#foo`
146
- │ Diagnostic ID: Ruby::MethodDefinitionMissing
147
-
148
- └ class MethodDefinitionMissing
149
- ~~~~~~~~~~~~~~~~~~~~~~~
150
- method_return_type_annotation_mismatch.rb:
151
- diagnostics:
152
- - |
153
- method_return_type_annotation_mismatch.rb:3:2: [error] Annotation `@type return` specifies type `::Integer` where declared as type `::String`
154
- │ ::Integer <: ::String
155
- │ ::Numeric <: ::String
156
- │ ::Object <: ::String
157
- │ ::BasicObject <: ::String
158
-
159
- │ Diagnostic ID: Ruby::MethodReturnTypeAnnotationMismatch
160
-
161
- └ def foo
162
- ~~~~~~~
163
- missing_keyword.rb:
164
- diagnostics:
165
- - |
166
- missing_keyword.rb:1:23: [error] Cannot omit required keywords: `foo`
167
- │ Diagnostic ID: Ruby::MissingKeyword
168
-
169
- └ MissingKeyword.new.foo bar: :bar
170
- ~~~~~~~~~
171
- no_method.rb:
172
- diagnostics:
173
- - |
174
- no_method.rb:1:2: [error] Type `::Integer` does not have method `foo`
175
- │ Diagnostic ID: Ruby::NoMethod
176
-
177
- └ 1.foo()
178
- ~~~
179
- required_block_missing.rb:
180
- diagnostics:
181
- - |
182
- required_block_missing.rb:1:4: [error] The method cannot be called without a block
183
- │ Diagnostic ID: Ruby::RequiredBlockMissing
184
-
185
- └ 123.tap()
186
- ~~~
187
- return_type_mismatch.rb:
188
- diagnostics:
189
- - |
190
- return_type_mismatch.rb:4:4: [error] The method cannot return a value of type `::Integer` because declared as type `::String`
191
- │ ::Integer <: ::String
192
- │ ::Numeric <: ::String
193
- │ ::Object <: ::String
194
- │ ::BasicObject <: ::String
195
-
196
- │ Diagnostic ID: Ruby::ReturnTypeMismatch
197
-
198
- └ return 30
199
- ~~~~~~~~~
200
- unexpected_block_given.rb:
201
- diagnostics:
202
- - |
203
- unexpected_block_given.rb:1:10: [error] The method cannot be called with a block
204
- │ Diagnostic ID: Ruby::UnexpectedBlockGiven
205
-
206
- └ [1].at(1) { 123 }
207
- ~~~~~~~
208
- unexpected_dynamic_method.rb:
209
- diagnostics:
210
- - |
211
- unexpected_dynamic_method.rb:1:6: [error] @dynamic annotation contains unknown method name `foo`
212
- │ Diagnostic ID: Ruby::UnexpectedDynamicMethod
213
-
214
- └ class UnexpectedDynamicMethod
215
- ~~~~~~~~~~~~~~~~~~~~~~~
216
- unexpected_jump.rb:
217
- diagnostics:
218
- - |
219
- unexpected_jump.rb:1:0: [error] Cannot jump from here
220
- │ Diagnostic ID: Ruby::UnexpectedJump
221
-
222
- └ break
223
- ~~~~~
224
- - |
225
- unexpected_jump.rb:3:0: [error] Cannot jump from here
226
- │ Diagnostic ID: Ruby::UnexpectedJump
227
-
228
- └ next
229
- ~~~~
230
- unexpected_jump_value.rb:
231
- diagnostics:
232
- - |
233
- unexpected_jump_value.rb:2:2: [error] The value given to break will be ignored
234
- │ Diagnostic ID: Ruby::UnexpectedJumpValue
235
-
236
- └ break 10
237
- ~~~~~~~~
238
- unexpected_keyword.rb:
239
- diagnostics:
240
- - |
241
- unexpected_keyword.rb:1:26: [error] Cannot specify unexpected keyword arguments: `bar`
242
- │ Diagnostic ID: Ruby::UnexpectedKeyword
243
-
244
- └ UnexpectedKeyword.new.foo(foo: 123, bar: :bar)
245
- ~~~~~~~~~~~~~~~~~~~
246
- unexpected_splat.rb:
247
- diagnostics:
248
- - |
249
- unexpected_splat.rb:1:13: [error] Hash splat is given with object other than `Hash[X, Y]`
250
- │ Diagnostic ID: Ruby::UnexpectedSplat
251
-
252
- └ { foo: :bar, **123 }
253
- ~~~~~
254
- unexpected_yield.rb:
255
- diagnostics:
256
- - |
257
- unexpected_yield.rb:4:4: [error] No block given for `yield`
258
- │ Diagnostic ID: Ruby::UnexpectedYield
259
-
260
- └ yield
261
- ~~~~~
262
- - |
263
- unexpected_yield.rb:4:4: [error] Cannot detect the type of the expression
264
- │ Diagnostic ID: Ruby::FallbackAny
265
-
266
- └ yield
267
- ~~~~~
268
- unknown_constant_assigned.rb:
269
- diagnostics:
270
- - |
271
- unknown_constant_assigned.rb:2:2: [error] Cannot find the declaration of constant `FOO`
272
- │ Diagnostic ID: Ruby::UnknownConstantAssigned
273
-
274
- └ FOO = 123
275
- ~~~
276
- - |
277
- unknown_constant_assigned.rb:4:2: [error] Cannot detect the type of the expression
278
- │ Diagnostic ID: Ruby::FallbackAny
279
-
280
- └ FOO::BAR = 123
281
- ~~~
282
- - |
283
- unknown_constant_assigned.rb:4:2: [error] Cannot find the declaration of constant `FOO::BAR`
284
- │ Diagnostic ID: Ruby::UnknownConstantAssigned
285
-
286
- └ FOO::BAR = 123
287
- ~~~~~~~~
288
- - |
289
- unknown_constant_assigned.rb:6:2: [error] Cannot find the declaration of constant `::FOO`
290
- │ Diagnostic ID: Ruby::UnknownConstantAssigned
291
-
292
- └ ::FOO = :foo
293
- ~~~~~
294
- unresolved_overloading.rb:
295
- diagnostics:
296
- - |
297
- unresolved_overloading.rb:1:0: [error] Cannot find compatible overloading of method `+` of type `::Integer`
298
- │ Method types:
299
- │ def +: (::Integer) -> ::Integer
300
- │ | (::Float) -> ::Float
301
- │ | (::Rational) -> ::Rational
302
- │ | (::Complex) -> ::Complex
303
-
304
- │ Diagnostic ID: Ruby::UnresolvedOverloading
305
-
306
- └ 1 + ""
307
- ~~~~~~
308
- unsatisfiable_constraint.rb:
309
- diagnostics:
310
- - |
311
- unsatisfiable_constraint.rb:6:4: [error] Type `::String` does not have method `foo`
312
- │ Diagnostic ID: Ruby::NoMethod
313
-
314
- └ x.foo()
315
- ~~~
316
- - |
317
- unsatisfiable_constraint.rb:4:0: [error] Unsatisfiable constraint `::Array[untyped] <: A(1) <: ::String` is generated through (A(1)) { (A(1)) -> void } -> B(2)
318
- │ ::Array[untyped] <: ::String
319
- │ ::Object <: ::String
320
- │ ::BasicObject <: ::String
321
-
322
- │ Diagnostic ID: Ruby::UnsatisfiableConstraint
323
-
324
- └ test.foo([]) do |x|
325
- ~~~~~~~~~~~~~~~~~~~
326
- unsupported_syntax.rb:
327
- diagnostics:
328
- - |
329
- unsupported_syntax.rb:1:0: [error] sclass receiver must be instance type or singleton type, but type given `(::Integer | ::String | nil)`
330
- │ Diagnostic ID: Ruby::UnsupportedSyntax
331
-
332
- └ class <<[1, ""].sample
333
- ~~~~~~~~~~~~~~~~~~~~~~