steep 0.50.0 → 0.51.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 +7 -1
- data/Gemfile +1 -0
- data/Gemfile.lock +8 -5
- data/lib/steep/ast/annotation/collection.rb +10 -8
- data/lib/steep/ast/types/factory.rb +5 -5
- data/lib/steep/cli.rb +8 -0
- data/lib/steep/diagnostic/deprecated/unknown_constant_assigned.rb +28 -0
- data/lib/steep/diagnostic/ruby.rb +21 -15
- data/lib/steep/index/source_index.rb +18 -1
- data/lib/steep/module_helper.rb +4 -7
- data/lib/steep/server/interaction_worker.rb +45 -2
- data/lib/steep/server/master.rb +1 -1
- data/lib/steep/services/completion_provider.rb +109 -1
- data/lib/steep/services/goto_service.rb +4 -6
- data/lib/steep/services/hover_content.rb +52 -4
- data/lib/steep/services/type_check_service.rb +6 -3
- data/lib/steep/source.rb +19 -13
- data/lib/steep/type_construction.rb +166 -148
- data/lib/steep/type_inference/constant_env.rb +33 -15
- data/lib/steep/type_inference/context.rb +6 -7
- data/lib/steep/type_inference/type_env.rb +16 -54
- data/lib/steep/version.rb +1 -1
- data/smoke/const/test_expectations.yml +24 -19
- data/smoke/diagnostics/test_expectations.yml +80 -10
- data/smoke/integer/test_expectations.yml +24 -4
- data/smoke/method/test_expectations.yml +30 -0
- data/smoke/regression/test_expectations.yml +24 -0
- data/smoke/yield/test_expectations.yml +20 -0
- data/steep.gemspec +1 -1
- metadata +5 -4
@@ -2,33 +2,51 @@ module Steep
|
|
2
2
|
module TypeInference
|
3
3
|
class ConstantEnv
|
4
4
|
attr_reader :context
|
5
|
-
attr_reader :cache
|
6
5
|
attr_reader :factory
|
7
|
-
attr_reader :
|
6
|
+
attr_reader :resolver
|
8
7
|
|
9
8
|
# ConstantEnv receives an TypeName as a context, not a Namespace, because this is a simulation of Ruby.
|
10
9
|
# Any namespace is a module or class.
|
11
|
-
def initialize(factory:, context:)
|
10
|
+
def initialize(factory:, context:, resolver:)
|
12
11
|
@cache = {}
|
13
12
|
@factory = factory
|
14
13
|
@context = context
|
15
|
-
@
|
14
|
+
@resolver = resolver
|
16
15
|
end
|
17
16
|
|
18
|
-
def
|
19
|
-
|
17
|
+
def resolve(name)
|
18
|
+
decompose_constant(
|
19
|
+
resolver.resolve(name, context: context)
|
20
|
+
)
|
20
21
|
end
|
21
22
|
|
22
|
-
def
|
23
|
-
|
24
|
-
|
23
|
+
def toplevel(name)
|
24
|
+
decompose_constant(
|
25
|
+
resolver.table.toplevel[name]
|
26
|
+
)
|
27
|
+
end
|
28
|
+
|
29
|
+
def constants
|
30
|
+
resolver.constants(context).transform_values {|c| decompose_constant(c) }
|
31
|
+
end
|
32
|
+
|
33
|
+
def resolve_child(module_name, constant_name)
|
34
|
+
decompose_constant(
|
35
|
+
resolver.resolve_child(module_name, constant_name)
|
36
|
+
)
|
37
|
+
end
|
38
|
+
|
39
|
+
def children(module_name)
|
40
|
+
resolver.children(module_name).transform_values {|c| decompose_constant(c) }
|
41
|
+
end
|
25
42
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
43
|
+
def decompose_constant(constant)
|
44
|
+
if constant
|
45
|
+
[
|
46
|
+
factory.type(constant.type),
|
47
|
+
constant.name,
|
48
|
+
constant.entry
|
49
|
+
]
|
32
50
|
end
|
33
51
|
end
|
34
52
|
end
|
@@ -48,26 +48,23 @@ module Steep
|
|
48
48
|
attr_reader :defined_module_methods
|
49
49
|
attr_reader :const_env
|
50
50
|
attr_reader :implement_name
|
51
|
-
attr_reader :namespaces
|
52
|
-
attr_reader :current_namespace
|
53
51
|
attr_reader :class_name
|
54
52
|
attr_reader :instance_definition
|
55
53
|
attr_reader :module_definition
|
56
54
|
|
57
|
-
def initialize(instance_type:, module_type:, implement_name:,
|
55
|
+
def initialize(instance_type:, module_type:, implement_name:, const_env:, class_name:, instance_definition: nil, module_definition: nil)
|
58
56
|
@instance_type = instance_type
|
59
57
|
@module_type = module_type
|
60
58
|
@defined_instance_methods = Set.new
|
61
59
|
@defined_module_methods = Set.new
|
62
60
|
@implement_name = implement_name
|
63
|
-
@current_namespace = current_namespace
|
64
61
|
@const_env = const_env
|
65
62
|
@class_name = class_name
|
66
63
|
@instance_definition = instance_definition
|
67
64
|
@module_definition = module_definition
|
68
65
|
end
|
69
66
|
|
70
|
-
def
|
67
|
+
def nesting
|
71
68
|
const_env.context
|
72
69
|
end
|
73
70
|
|
@@ -83,7 +80,6 @@ module Steep
|
|
83
80
|
instance_type: self.instance_type,
|
84
81
|
module_type: self.module_type,
|
85
82
|
implement_name: self.implement_name,
|
86
|
-
current_namespace: self.current_namespace,
|
87
83
|
const_env: self.const_env,
|
88
84
|
class_name: self.class_name,
|
89
85
|
instance_definition: self.instance_definition,
|
@@ -93,7 +89,6 @@ module Steep
|
|
93
89
|
instance_type: instance_type,
|
94
90
|
module_type: module_type,
|
95
91
|
implement_name: implement_name,
|
96
|
-
current_namespace: current_namespace,
|
97
92
|
const_env: const_env,
|
98
93
|
class_name: class_name,
|
99
94
|
instance_definition: instance_definition,
|
@@ -175,6 +170,10 @@ module Steep
|
|
175
170
|
variable_context: variable_context
|
176
171
|
)
|
177
172
|
end
|
173
|
+
|
174
|
+
def env
|
175
|
+
type_env.subtyping.factory.env
|
176
|
+
end
|
178
177
|
end
|
179
178
|
end
|
180
179
|
end
|
@@ -44,18 +44,6 @@ module Steep
|
|
44
44
|
merge!(original_env: env.gvar_types, override_env: gvar_types, self_type: self_type, instance_type: instance_type, class_type: class_type, &block)
|
45
45
|
|
46
46
|
const_types.each do |name, annotated_type|
|
47
|
-
original_type = self.const_types[name] || const_env.lookup(name)
|
48
|
-
if original_type
|
49
|
-
assert_annotation(
|
50
|
-
name,
|
51
|
-
original_type: original_type,
|
52
|
-
annotated_type: annotated_type,
|
53
|
-
self_type: self_type,
|
54
|
-
instance_type: instance_type,
|
55
|
-
class_type: class_type,
|
56
|
-
&block
|
57
|
-
)
|
58
|
-
end
|
59
47
|
env.const_types[name] = annotated_type
|
60
48
|
end
|
61
49
|
end
|
@@ -70,14 +58,8 @@ module Steep
|
|
70
58
|
if const_types.key?(const)
|
71
59
|
const_types[const]
|
72
60
|
else
|
73
|
-
|
74
|
-
|
75
|
-
type
|
76
|
-
else
|
77
|
-
yield
|
78
|
-
AST::Types::Any.new
|
79
|
-
end
|
80
|
-
end
|
61
|
+
yield
|
62
|
+
AST::Types::Any.new
|
81
63
|
end
|
82
64
|
else
|
83
65
|
lookup_dictionary(ivar: ivar, gvar: gvar) do |var_name, dictionary|
|
@@ -105,40 +87,20 @@ module Steep
|
|
105
87
|
# @type method assign: (const: TypeName, type: AST::Type) { (Subtyping::Result::Failure | nil) -> void } -> AST::Type
|
106
88
|
# | (gvar: Symbol, type: AST::Type) { (Subtyping::Result::Failure | nil) -> void } -> AST::Type
|
107
89
|
# | (ivar: Symbol, type: AST::Type) { (Subtyping::Result::Failure | nil) -> void } -> AST::Type
|
108
|
-
def assign(
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
else
|
123
|
-
yield nil
|
124
|
-
AST::Types::Any.new
|
125
|
-
end
|
126
|
-
end
|
127
|
-
else
|
128
|
-
lookup_dictionary(ivar: ivar, gvar: gvar) do |var_name, dictionary|
|
129
|
-
if dictionary.key?(var_name)
|
130
|
-
assert_assign(
|
131
|
-
var_type: dictionary[var_name],
|
132
|
-
lhs_type: type,
|
133
|
-
self_type: self_type,
|
134
|
-
instance_type: instance_type,
|
135
|
-
class_type: class_type,
|
136
|
-
&block
|
137
|
-
)
|
138
|
-
else
|
139
|
-
yield nil
|
140
|
-
AST::Types::Any.new
|
141
|
-
end
|
90
|
+
def assign(gvar: nil, ivar: nil, type:, self_type:, instance_type:, class_type:, &block)
|
91
|
+
lookup_dictionary(ivar: ivar, gvar: gvar) do |var_name, dictionary|
|
92
|
+
if dictionary.key?(var_name)
|
93
|
+
assert_assign(
|
94
|
+
var_type: dictionary[var_name],
|
95
|
+
lhs_type: type,
|
96
|
+
self_type: self_type,
|
97
|
+
instance_type: instance_type,
|
98
|
+
class_type: class_type,
|
99
|
+
&block
|
100
|
+
)
|
101
|
+
else
|
102
|
+
yield nil
|
103
|
+
AST::Types::Any.new
|
142
104
|
end
|
143
105
|
end
|
144
106
|
end
|
data/lib/steep/version.rb
CHANGED
@@ -24,8 +24,18 @@
|
|
24
24
|
line: 6
|
25
25
|
character: 5
|
26
26
|
severity: ERROR
|
27
|
-
message: Cannot
|
28
|
-
code: Ruby::
|
27
|
+
message: 'Cannot find the declaration of constant: `B`'
|
28
|
+
code: Ruby::UnknownConstant
|
29
|
+
- range:
|
30
|
+
start:
|
31
|
+
line: 8
|
32
|
+
character: 7
|
33
|
+
end:
|
34
|
+
line: 8
|
35
|
+
character: 8
|
36
|
+
severity: ERROR
|
37
|
+
message: 'Cannot find the declaration of module: `X`'
|
38
|
+
code: Ruby::UnknownConstant
|
29
39
|
- range:
|
30
40
|
start:
|
31
41
|
line: 14
|
@@ -49,8 +59,8 @@
|
|
49
59
|
line: 16
|
50
60
|
character: 9
|
51
61
|
severity: ERROR
|
52
|
-
message: Cannot
|
53
|
-
code: Ruby::
|
62
|
+
message: 'Cannot find the declaration of constant: `B`'
|
63
|
+
code: Ruby::UnknownConstant
|
54
64
|
- range:
|
55
65
|
start:
|
56
66
|
line: 23
|
@@ -69,23 +79,18 @@
|
|
69
79
|
- range:
|
70
80
|
start:
|
71
81
|
line: 26
|
72
|
-
character:
|
73
|
-
end:
|
74
|
-
line: 26
|
75
|
-
character: 10
|
76
|
-
severity: ERROR
|
77
|
-
message: Cannot detect the type of the expression
|
78
|
-
code: Ruby::FallbackAny
|
79
|
-
- range:
|
80
|
-
start:
|
81
|
-
line: 26
|
82
|
-
character: 4
|
82
|
+
character: 0
|
83
83
|
end:
|
84
84
|
line: 26
|
85
85
|
character: 15
|
86
86
|
severity: ERROR
|
87
|
-
message:
|
88
|
-
|
87
|
+
message: |-
|
88
|
+
Cannot assign a value of type `::Integer` to a variable of type `::String`
|
89
|
+
::Integer <: ::String
|
90
|
+
::Numeric <: ::String
|
91
|
+
::Object <: ::String
|
92
|
+
::BasicObject <: ::String
|
93
|
+
code: Ruby::IncompatibleAssignment
|
89
94
|
- range:
|
90
95
|
start:
|
91
96
|
line: 27
|
@@ -125,5 +130,5 @@
|
|
125
130
|
line: 5
|
126
131
|
character: 8
|
127
132
|
severity: ERROR
|
128
|
-
message: Cannot find the declaration of constant `Baz2`
|
129
|
-
code: Ruby::
|
133
|
+
message: 'Cannot find the declaration of constant: `Baz2`'
|
134
|
+
code: Ruby::UnknownConstant
|
@@ -65,6 +65,16 @@
|
|
65
65
|
code: Ruby::BreakTypeMismatch
|
66
66
|
- file: different_method_parameter_kind.rb
|
67
67
|
diagnostics:
|
68
|
+
- range:
|
69
|
+
start:
|
70
|
+
line: 1
|
71
|
+
character: 6
|
72
|
+
end:
|
73
|
+
line: 1
|
74
|
+
character: 34
|
75
|
+
severity: ERROR
|
76
|
+
message: 'Cannot find the declaration of class: `DifferentMethodParameterKind`'
|
77
|
+
code: Ruby::UnknownConstant
|
68
78
|
- range:
|
69
79
|
start:
|
70
80
|
line: 3
|
@@ -207,6 +217,16 @@
|
|
207
217
|
code: Ruby::IncompatibleAssignment
|
208
218
|
- file: method_arity_mismatch.rb
|
209
219
|
diagnostics:
|
220
|
+
- range:
|
221
|
+
start:
|
222
|
+
line: 1
|
223
|
+
character: 6
|
224
|
+
end:
|
225
|
+
line: 1
|
226
|
+
character: 25
|
227
|
+
severity: ERROR
|
228
|
+
message: 'Cannot find the declaration of class: `MethodArityMismatch`'
|
229
|
+
code: Ruby::UnknownConstant
|
210
230
|
- range:
|
211
231
|
start:
|
212
232
|
line: 3
|
@@ -230,6 +250,16 @@
|
|
230
250
|
code: Ruby::MethodArityMismatch
|
231
251
|
- file: method_body_type_mismatch.rb
|
232
252
|
diagnostics:
|
253
|
+
- range:
|
254
|
+
start:
|
255
|
+
line: 1
|
256
|
+
character: 6
|
257
|
+
end:
|
258
|
+
line: 1
|
259
|
+
character: 28
|
260
|
+
severity: ERROR
|
261
|
+
message: 'Cannot find the declaration of class: `MethodBodyTypeMismatch`'
|
262
|
+
code: Ruby::UnknownConstant
|
233
263
|
- range:
|
234
264
|
start:
|
235
265
|
line: 3
|
@@ -258,6 +288,16 @@
|
|
258
288
|
code: Ruby::MethodDefinitionMissing
|
259
289
|
- file: method_parameter_mismatch.rb
|
260
290
|
diagnostics:
|
291
|
+
- range:
|
292
|
+
start:
|
293
|
+
line: 1
|
294
|
+
character: 6
|
295
|
+
end:
|
296
|
+
line: 1
|
297
|
+
character: 29
|
298
|
+
severity: ERROR
|
299
|
+
message: 'Cannot find the declaration of class: `MethodParameterMismatch`'
|
300
|
+
code: Ruby::UnknownConstant
|
261
301
|
- range:
|
262
302
|
start:
|
263
303
|
line: 3
|
@@ -293,6 +333,16 @@
|
|
293
333
|
code: Ruby::MethodParameterMismatch
|
294
334
|
- file: method_return_type_annotation_mismatch.rb
|
295
335
|
diagnostics:
|
336
|
+
- range:
|
337
|
+
start:
|
338
|
+
line: 1
|
339
|
+
character: 6
|
340
|
+
end:
|
341
|
+
line: 1
|
342
|
+
character: 40
|
343
|
+
severity: ERROR
|
344
|
+
message: 'Cannot find the declaration of class: `MethodReturnTypeAnnotationMismatch`'
|
345
|
+
code: Ruby::UnknownConstant
|
296
346
|
- range:
|
297
347
|
start:
|
298
348
|
line: 3
|
@@ -358,6 +408,16 @@
|
|
358
408
|
code: Ruby::RequiredBlockMissing
|
359
409
|
- file: return_type_mismatch.rb
|
360
410
|
diagnostics:
|
411
|
+
- range:
|
412
|
+
start:
|
413
|
+
line: 1
|
414
|
+
character: 6
|
415
|
+
end:
|
416
|
+
line: 1
|
417
|
+
character: 24
|
418
|
+
severity: ERROR
|
419
|
+
message: 'Cannot find the declaration of class: `ReturnTypeMismatch`'
|
420
|
+
code: Ruby::UnknownConstant
|
361
421
|
- range:
|
362
422
|
start:
|
363
423
|
line: 4
|
@@ -445,6 +505,16 @@
|
|
445
505
|
code: Ruby::UnexpectedKeywordArgument
|
446
506
|
- file: unexpected_yield.rb
|
447
507
|
diagnostics:
|
508
|
+
- range:
|
509
|
+
start:
|
510
|
+
line: 1
|
511
|
+
character: 6
|
512
|
+
end:
|
513
|
+
line: 1
|
514
|
+
character: 21
|
515
|
+
severity: ERROR
|
516
|
+
message: 'Cannot find the declaration of class: `UnexpectedYield`'
|
517
|
+
code: Ruby::UnknownConstant
|
448
518
|
- range:
|
449
519
|
start:
|
450
520
|
line: 4
|
@@ -475,8 +545,8 @@
|
|
475
545
|
line: 2
|
476
546
|
character: 5
|
477
547
|
severity: ERROR
|
478
|
-
message: Cannot find the declaration of constant `FOO`
|
479
|
-
code: Ruby::
|
548
|
+
message: 'Cannot find the declaration of constant: `FOO`'
|
549
|
+
code: Ruby::UnknownConstant
|
480
550
|
- range:
|
481
551
|
start:
|
482
552
|
line: 4
|
@@ -485,28 +555,28 @@
|
|
485
555
|
line: 4
|
486
556
|
character: 5
|
487
557
|
severity: ERROR
|
488
|
-
message: Cannot
|
489
|
-
code: Ruby::
|
558
|
+
message: 'Cannot find the declaration of constant: `FOO`'
|
559
|
+
code: Ruby::UnknownConstant
|
490
560
|
- range:
|
491
561
|
start:
|
492
562
|
line: 4
|
493
|
-
character:
|
563
|
+
character: 7
|
494
564
|
end:
|
495
565
|
line: 4
|
496
566
|
character: 10
|
497
567
|
severity: ERROR
|
498
|
-
message: Cannot find the declaration of constant `
|
499
|
-
code: Ruby::
|
568
|
+
message: 'Cannot find the declaration of constant: `BAR`'
|
569
|
+
code: Ruby::UnknownConstant
|
500
570
|
- range:
|
501
571
|
start:
|
502
572
|
line: 6
|
503
|
-
character:
|
573
|
+
character: 4
|
504
574
|
end:
|
505
575
|
line: 6
|
506
576
|
character: 7
|
507
577
|
severity: ERROR
|
508
|
-
message: Cannot find the declaration of constant
|
509
|
-
code: Ruby::
|
578
|
+
message: 'Cannot find the declaration of constant: `FOO`'
|
579
|
+
code: Ruby::UnknownConstant
|
510
580
|
- file: unresolved_overloading.rb
|
511
581
|
diagnostics:
|
512
582
|
- range:
|
@@ -21,6 +21,16 @@
|
|
21
21
|
severity: ERROR
|
22
22
|
message: Type `::Integer` does not have method `foo`
|
23
23
|
code: Ruby::NoMethod
|
24
|
+
- range:
|
25
|
+
start:
|
26
|
+
line: 9
|
27
|
+
character: 6
|
28
|
+
end:
|
29
|
+
line: 9
|
30
|
+
character: 15
|
31
|
+
severity: ERROR
|
32
|
+
message: 'Cannot find the declaration of class: `WithToInt`'
|
33
|
+
code: Ruby::UnknownConstant
|
24
34
|
- range:
|
25
35
|
start:
|
26
36
|
line: 12
|
@@ -29,8 +39,8 @@
|
|
29
39
|
line: 12
|
30
40
|
character: 29
|
31
41
|
severity: ERROR
|
32
|
-
message: Cannot
|
33
|
-
code: Ruby::
|
42
|
+
message: 'Cannot find the declaration of constant: `WithToInt`'
|
43
|
+
code: Ruby::UnknownConstant
|
34
44
|
- range:
|
35
45
|
start:
|
36
46
|
line: 13
|
@@ -41,6 +51,16 @@
|
|
41
51
|
severity: ERROR
|
42
52
|
message: Type `::Integer` does not have method `foo`
|
43
53
|
code: Ruby::NoMethod
|
54
|
+
- range:
|
55
|
+
start:
|
56
|
+
line: 15
|
57
|
+
character: 6
|
58
|
+
end:
|
59
|
+
line: 15
|
60
|
+
character: 13
|
61
|
+
severity: ERROR
|
62
|
+
message: 'Cannot find the declaration of class: `WithToI`'
|
63
|
+
code: Ruby::UnknownConstant
|
44
64
|
- range:
|
45
65
|
start:
|
46
66
|
line: 18
|
@@ -49,8 +69,8 @@
|
|
49
69
|
line: 18
|
50
70
|
character: 27
|
51
71
|
severity: ERROR
|
52
|
-
message: Cannot
|
53
|
-
code: Ruby::
|
72
|
+
message: 'Cannot find the declaration of constant: `WithToI`'
|
73
|
+
code: Ruby::UnknownConstant
|
54
74
|
- range:
|
55
75
|
start:
|
56
76
|
line: 19
|
@@ -74,6 +74,16 @@
|
|
74
74
|
code: Ruby::IncompatibleAssignment
|
75
75
|
- file: b.rb
|
76
76
|
diagnostics:
|
77
|
+
- range:
|
78
|
+
start:
|
79
|
+
line: 1
|
80
|
+
character: 6
|
81
|
+
end:
|
82
|
+
line: 1
|
83
|
+
character: 7
|
84
|
+
severity: ERROR
|
85
|
+
message: 'Cannot find the declaration of class: `A`'
|
86
|
+
code: Ruby::UnknownConstant
|
77
87
|
- range:
|
78
88
|
start:
|
79
89
|
line: 4
|
@@ -89,3 +99,23 @@
|
|
89
99
|
::Object <: ::Integer
|
90
100
|
::BasicObject <: ::Integer
|
91
101
|
code: Ruby::MethodBodyTypeMismatch
|
102
|
+
- range:
|
103
|
+
start:
|
104
|
+
line: 9
|
105
|
+
character: 6
|
106
|
+
end:
|
107
|
+
line: 9
|
108
|
+
character: 7
|
109
|
+
severity: ERROR
|
110
|
+
message: 'Cannot find the declaration of class: `B`'
|
111
|
+
code: Ruby::UnknownConstant
|
112
|
+
- range:
|
113
|
+
start:
|
114
|
+
line: 18
|
115
|
+
character: 6
|
116
|
+
end:
|
117
|
+
line: 18
|
118
|
+
character: 7
|
119
|
+
severity: ERROR
|
120
|
+
message: 'Cannot find the declaration of class: `C`'
|
121
|
+
code: Ruby::UnknownConstant
|
@@ -1,4 +1,28 @@
|
|
1
1
|
---
|
2
|
+
- file: array.rb
|
3
|
+
diagnostics:
|
4
|
+
- range:
|
5
|
+
start:
|
6
|
+
line: 1
|
7
|
+
character: 6
|
8
|
+
end:
|
9
|
+
line: 1
|
10
|
+
character: 9
|
11
|
+
severity: ERROR
|
12
|
+
message: 'Cannot find the declaration of class: `Foo`'
|
13
|
+
code: Ruby::UnknownConstant
|
14
|
+
- file: hash.rb
|
15
|
+
diagnostics:
|
16
|
+
- range:
|
17
|
+
start:
|
18
|
+
line: 1
|
19
|
+
character: 6
|
20
|
+
end:
|
21
|
+
line: 1
|
22
|
+
character: 9
|
23
|
+
severity: ERROR
|
24
|
+
message: 'Cannot find the declaration of class: `Foo`'
|
25
|
+
code: Ruby::UnknownConstant
|
2
26
|
- file: issue_332.rb
|
3
27
|
diagnostics:
|
4
28
|
- range:
|
@@ -1,6 +1,16 @@
|
|
1
1
|
---
|
2
2
|
- file: a.rb
|
3
3
|
diagnostics:
|
4
|
+
- range:
|
5
|
+
start:
|
6
|
+
line: 1
|
7
|
+
character: 6
|
8
|
+
end:
|
9
|
+
line: 1
|
10
|
+
character: 7
|
11
|
+
severity: ERROR
|
12
|
+
message: 'Cannot find the declaration of class: `A`'
|
13
|
+
code: Ruby::UnknownConstant
|
4
14
|
- range:
|
5
15
|
start:
|
6
16
|
line: 6
|
@@ -52,6 +62,16 @@
|
|
52
62
|
code: Ruby::UnexpectedYield
|
53
63
|
- file: b.rb
|
54
64
|
diagnostics:
|
65
|
+
- range:
|
66
|
+
start:
|
67
|
+
line: 1
|
68
|
+
character: 6
|
69
|
+
end:
|
70
|
+
line: 1
|
71
|
+
character: 9
|
72
|
+
severity: ERROR
|
73
|
+
message: 'Cannot find the declaration of class: `Foo`'
|
74
|
+
code: Ruby::UnknownConstant
|
55
75
|
- range:
|
56
76
|
start:
|
57
77
|
line: 4
|
data/steep.gemspec
CHANGED
@@ -33,7 +33,7 @@ Gem::Specification.new do |spec|
|
|
33
33
|
spec.add_runtime_dependency "rainbow", ">= 2.2.2", "< 4.0"
|
34
34
|
spec.add_runtime_dependency "listen", "~> 3.0"
|
35
35
|
spec.add_runtime_dependency "language_server-protocol", ">= 3.15", "< 4.0"
|
36
|
-
spec.add_runtime_dependency "rbs", ">= 2.
|
36
|
+
spec.add_runtime_dependency "rbs", ">= 2.3.0"
|
37
37
|
spec.add_runtime_dependency "parallel", ">= 1.0.0"
|
38
38
|
spec.add_runtime_dependency "terminal-table", ">= 2", "< 4"
|
39
39
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: steep
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.51.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Soutaro Matsumoto
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-04-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: parser
|
@@ -98,14 +98,14 @@ dependencies:
|
|
98
98
|
requirements:
|
99
99
|
- - ">="
|
100
100
|
- !ruby/object:Gem::Version
|
101
|
-
version: 2.
|
101
|
+
version: 2.3.0
|
102
102
|
type: :runtime
|
103
103
|
prerelease: false
|
104
104
|
version_requirements: !ruby/object:Gem::Requirement
|
105
105
|
requirements:
|
106
106
|
- - ">="
|
107
107
|
- !ruby/object:Gem::Version
|
108
|
-
version: 2.
|
108
|
+
version: 2.3.0
|
109
109
|
- !ruby/object:Gem::Dependency
|
110
110
|
name: parallel
|
111
111
|
requirement: !ruby/object:Gem::Requirement
|
@@ -193,6 +193,7 @@ files:
|
|
193
193
|
- lib/steep/ast/types/var.rb
|
194
194
|
- lib/steep/ast/types/void.rb
|
195
195
|
- lib/steep/cli.rb
|
196
|
+
- lib/steep/diagnostic/deprecated/unknown_constant_assigned.rb
|
196
197
|
- lib/steep/diagnostic/helper.rb
|
197
198
|
- lib/steep/diagnostic/lsp_formatter.rb
|
198
199
|
- lib/steep/diagnostic/ruby.rb
|