steep 0.40.0 → 0.41.0

Sign up to get free protection for your applications and to get access to all the features.
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
- ~~~~~~~~~~~~~~~~~~~~~~