steep 1.4.0.dev.1 → 1.4.0.dev.2
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/Gemfile +2 -2
- data/Gemfile.lock +12 -12
- data/Gemfile.steep +1 -1
- data/Gemfile.steep.lock +15 -12
- data/Steepfile +16 -0
- data/lib/steep/annotation_parser.rb +40 -20
- data/lib/steep/ast/types/factory.rb +56 -10
- data/lib/steep/ast/types/name.rb +10 -0
- data/lib/steep/diagnostic/ruby.rb +1 -1
- data/lib/steep/diagnostic/signature.rb +40 -0
- data/lib/steep/index/rbs_index.rb +12 -3
- data/lib/steep/index/signature_symbol_provider.rb +1 -1
- data/lib/steep/project/target.rb +1 -3
- data/lib/steep/server/interaction_worker.rb +37 -20
- data/lib/steep/server/lsp_formatter.rb +14 -5
- data/lib/steep/services/completion_provider.rb +10 -12
- data/lib/steep/services/goto_service.rb +15 -14
- data/lib/steep/services/hover_provider/rbs.rb +29 -9
- data/lib/steep/services/hover_provider/ruby.rb +16 -10
- data/lib/steep/services/signature_service.rb +36 -39
- data/lib/steep/signature/validator.rb +28 -6
- data/lib/steep/subtyping/check.rb +1 -1
- data/lib/steep/type_construction.rb +16 -14
- data/lib/steep/type_inference/constant_env.rb +7 -3
- data/lib/steep/version.rb +1 -1
- data/rbs_collection.steep.lock.yaml +16 -20
- data/rbs_collection.steep.yaml +3 -1
- data/sample/lib/conference.rb +10 -0
- data/sample/sig/conference.rbs +23 -0
- data/sig/steep/annotation_parser.rbs +3 -2
- data/sig/steep/ast/annotation/collection.rbs +1 -1
- data/sig/steep/ast/types/factory.rbs +2 -0
- data/sig/steep/ast/types/name.rbs +4 -0
- data/sig/steep/diagnostic/signature.rbs +18 -14
- data/sig/steep/index/rbs_index.rbs +6 -2
- data/sig/steep/project/target.rbs +7 -7
- data/sig/steep/server/interaction_worker.rbs +2 -2
- data/sig/steep/server/lsp_formatter.rbs +4 -2
- data/sig/steep/services/completion_provider.rbs +6 -0
- data/sig/steep/services/hover_provider/rbs.rbs +6 -4
- data/sig/steep/services/hover_provider/ruby.rbs +8 -4
- data/sig/steep/services/signature_service.rbs +27 -3
- data/sig/steep/signature/validator.rbs +9 -5
- data/sig/steep/type_construction.rbs +1 -1
- data/sig/steep/type_inference/constant_env.rbs +2 -0
- data/smoke/regexp/a.rb +2 -2
- metadata +3 -3
@@ -135,8 +135,8 @@ module Steep
|
|
135
135
|
checker.check(
|
136
136
|
relation,
|
137
137
|
self_type: self_type,
|
138
|
-
instance_type: module_context
|
139
|
-
class_type: module_context
|
138
|
+
instance_type: module_context!.instance_type,
|
139
|
+
class_type: module_context!.module_type,
|
140
140
|
constraints: constraints
|
141
141
|
)
|
142
142
|
end
|
@@ -295,10 +295,12 @@ module Steep
|
|
295
295
|
else
|
296
296
|
name = module_name || super_name
|
297
297
|
|
298
|
-
if name &&
|
298
|
+
if name && checker.factory.env.module_name?(name)
|
299
|
+
definition = checker.factory.definition_builder.build_instance(name)
|
300
|
+
|
299
301
|
AST::Annotation::Implements::Module.new(
|
300
302
|
name: name,
|
301
|
-
args:
|
303
|
+
args: definition.type_params
|
302
304
|
)
|
303
305
|
end
|
304
306
|
end
|
@@ -338,7 +340,7 @@ module Steep
|
|
338
340
|
end
|
339
341
|
|
340
342
|
def for_module(node, new_module_name)
|
341
|
-
new_nesting = [nesting, new_module_name || false]
|
343
|
+
new_nesting = [nesting, new_module_name || false] #: RBS::Resolver::context
|
342
344
|
|
343
345
|
annots = source.annotations(block: node, factory: checker.factory, context: new_nesting)
|
344
346
|
|
@@ -353,9 +355,7 @@ module Steep
|
|
353
355
|
end
|
354
356
|
|
355
357
|
if implement_module_name
|
356
|
-
module_entry = checker.factory.definition_builder.env.
|
357
|
-
|
358
|
-
raise unless module_entry.is_a?(RBS::Environment::ModuleEntry)
|
358
|
+
module_entry = checker.factory.definition_builder.env.normalized_module_entry(implement_module_name.name) or raise
|
359
359
|
|
360
360
|
module_context = module_context.update(
|
361
361
|
instance_type: AST::Types::Intersection.build(
|
@@ -566,10 +566,10 @@ module Steep
|
|
566
566
|
when AST::Types::Name::Singleton
|
567
567
|
type_name = instance_type.name
|
568
568
|
|
569
|
-
case checker.factory.env.
|
570
|
-
when RBS::Environment::ModuleEntry
|
569
|
+
case checker.factory.env.constant_entry(type_name)
|
570
|
+
when RBS::Environment::ModuleEntry, RBS::Environment::ModuleAliasEntry
|
571
571
|
AST::Builtin::Module.instance_type
|
572
|
-
when RBS::Environment::ClassEntry
|
572
|
+
when RBS::Environment::ClassEntry, RBS::Environment::ClassAliasEntry
|
573
573
|
AST::Builtin::Class.instance_type
|
574
574
|
else
|
575
575
|
raise
|
@@ -2399,7 +2399,7 @@ module Steep
|
|
2399
2399
|
if type = as_type.type?(module_context!.nesting, checker.factory, [])
|
2400
2400
|
actual_type, constr = synthesize(asserted_node, hint: type)
|
2401
2401
|
|
2402
|
-
if
|
2402
|
+
if no_subtyping?(sub_type: type, super_type: actual_type) && no_subtyping?(sub_type: actual_type, super_type: type)
|
2403
2403
|
typing.add_error(
|
2404
2404
|
Diagnostic::Ruby::FalseAssertion.new(
|
2405
2405
|
node: node,
|
@@ -4098,7 +4098,8 @@ module Steep
|
|
4098
4098
|
|
4099
4099
|
def validate_method_definitions(node, module_name)
|
4100
4100
|
module_name_1 = module_name.name
|
4101
|
-
|
4101
|
+
module_entry = checker.factory.env.normalized_module_class_entry(module_name_1) or raise
|
4102
|
+
member_decl_count = module_entry.decls.count {|d| d.decl.each_member.count > 0 }
|
4102
4103
|
|
4103
4104
|
return unless member_decl_count == 1
|
4104
4105
|
|
@@ -4267,7 +4268,8 @@ module Steep
|
|
4267
4268
|
def to_instance_type(type, args: nil)
|
4268
4269
|
args = args || case type
|
4269
4270
|
when AST::Types::Name::Singleton
|
4270
|
-
checker.factory.env.
|
4271
|
+
decl = checker.factory.env.normalized_module_class_entry(type.name) or raise
|
4272
|
+
decl.type_params.each.map { AST::Builtin.any_type }
|
4271
4273
|
else
|
4272
4274
|
raise "unexpected type to to_instance_type: #{type}"
|
4273
4275
|
end
|
@@ -6,7 +6,6 @@ module Steep
|
|
6
6
|
attr_reader :resolver
|
7
7
|
|
8
8
|
def initialize(factory:, context:, resolver:)
|
9
|
-
@cache = {}
|
10
9
|
@factory = factory
|
11
10
|
@context = context
|
12
11
|
@resolver = resolver
|
@@ -25,7 +24,8 @@ module Steep
|
|
25
24
|
end
|
26
25
|
|
27
26
|
def constants
|
28
|
-
resolver.constants(context)
|
27
|
+
cs = resolver.constants(context) or raise
|
28
|
+
cs.transform_values {|c| decompose_constant!(c) }
|
29
29
|
end
|
30
30
|
|
31
31
|
def resolve_child(module_name, constant_name)
|
@@ -35,7 +35,11 @@ module Steep
|
|
35
35
|
end
|
36
36
|
|
37
37
|
def children(module_name)
|
38
|
-
resolver.children(module_name).transform_values {|c| decompose_constant(c) }
|
38
|
+
resolver.children(module_name).transform_values {|c| decompose_constant!(c) }
|
39
|
+
end
|
40
|
+
|
41
|
+
def decompose_constant!(constant)
|
42
|
+
decompose_constant(constant) || raise
|
39
43
|
end
|
40
44
|
|
41
45
|
def decompose_constant(constant)
|
data/lib/steep/version.rb
CHANGED
@@ -2,17 +2,17 @@
|
|
2
2
|
sources:
|
3
3
|
- type: git
|
4
4
|
name: ruby/gem_rbs_collection
|
5
|
-
revision:
|
5
|
+
revision: c42c09528dd99252db98f0744181a6de54ec2f55
|
6
6
|
remote: https://github.com/ruby/gem_rbs_collection.git
|
7
7
|
repo_dir: gems
|
8
8
|
path: ".gem_rbs_collection"
|
9
9
|
gems:
|
10
10
|
- name: activesupport
|
11
|
-
version: '
|
11
|
+
version: '7.0'
|
12
12
|
source:
|
13
13
|
type: git
|
14
14
|
name: ruby/gem_rbs_collection
|
15
|
-
revision:
|
15
|
+
revision: c42c09528dd99252db98f0744181a6de54ec2f55
|
16
16
|
remote: https://github.com/ruby/gem_rbs_collection.git
|
17
17
|
repo_dir: gems
|
18
18
|
- name: ast
|
@@ -20,7 +20,15 @@ gems:
|
|
20
20
|
source:
|
21
21
|
type: git
|
22
22
|
name: ruby/gem_rbs_collection
|
23
|
-
revision:
|
23
|
+
revision: c42c09528dd99252db98f0744181a6de54ec2f55
|
24
|
+
remote: https://github.com/ruby/gem_rbs_collection.git
|
25
|
+
repo_dir: gems
|
26
|
+
- name: concurrent-ruby
|
27
|
+
version: '1.1'
|
28
|
+
source:
|
29
|
+
type: git
|
30
|
+
name: ruby/gem_rbs_collection
|
31
|
+
revision: c42c09528dd99252db98f0744181a6de54ec2f55
|
24
32
|
remote: https://github.com/ruby/gem_rbs_collection.git
|
25
33
|
repo_dir: gems
|
26
34
|
- name: csv
|
@@ -48,7 +56,7 @@ gems:
|
|
48
56
|
source:
|
49
57
|
type: git
|
50
58
|
name: ruby/gem_rbs_collection
|
51
|
-
revision:
|
59
|
+
revision: c42c09528dd99252db98f0744181a6de54ec2f55
|
52
60
|
remote: https://github.com/ruby/gem_rbs_collection.git
|
53
61
|
repo_dir: gems
|
54
62
|
- name: json
|
@@ -60,7 +68,7 @@ gems:
|
|
60
68
|
source:
|
61
69
|
type: git
|
62
70
|
name: ruby/gem_rbs_collection
|
63
|
-
revision:
|
71
|
+
revision: c42c09528dd99252db98f0744181a6de54ec2f55
|
64
72
|
remote: https://github.com/ruby/gem_rbs_collection.git
|
65
73
|
repo_dir: gems
|
66
74
|
- name: logger
|
@@ -88,7 +96,7 @@ gems:
|
|
88
96
|
source:
|
89
97
|
type: git
|
90
98
|
name: ruby/gem_rbs_collection
|
91
|
-
revision:
|
99
|
+
revision: c42c09528dd99252db98f0744181a6de54ec2f55
|
92
100
|
remote: https://github.com/ruby/gem_rbs_collection.git
|
93
101
|
repo_dir: gems
|
94
102
|
- name: pathname
|
@@ -100,17 +108,9 @@ gems:
|
|
100
108
|
source:
|
101
109
|
type: git
|
102
110
|
name: ruby/gem_rbs_collection
|
103
|
-
revision:
|
111
|
+
revision: c42c09528dd99252db98f0744181a6de54ec2f55
|
104
112
|
remote: https://github.com/ruby/gem_rbs_collection.git
|
105
113
|
repo_dir: gems
|
106
|
-
- name: rbs
|
107
|
-
version: 3.0.0.dev.1
|
108
|
-
source:
|
109
|
-
type: rubygems
|
110
|
-
- name: rdoc
|
111
|
-
version: '0'
|
112
|
-
source:
|
113
|
-
type: stdlib
|
114
114
|
- name: securerandom
|
115
115
|
version: '0'
|
116
116
|
source:
|
@@ -131,8 +131,4 @@ gems:
|
|
131
131
|
version: '0'
|
132
132
|
source:
|
133
133
|
type: stdlib
|
134
|
-
- name: tsort
|
135
|
-
version: '0'
|
136
|
-
source:
|
137
|
-
type: stdlib
|
138
134
|
gemfile_lock_path: Gemfile.steep.lock
|
data/rbs_collection.steep.yaml
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
sources:
|
3
3
|
- name: ruby/gem_rbs_collection
|
4
4
|
remote: https://github.com/ruby/gem_rbs_collection.git
|
5
|
-
revision:
|
5
|
+
revision: c42c09528dd99252db98f0744181a6de54ec2f55
|
6
6
|
repo_dir: gems
|
7
7
|
|
8
8
|
# A directory to install the downloaded RBSs
|
@@ -15,6 +15,8 @@ gems:
|
|
15
15
|
ignore: true
|
16
16
|
- name: set
|
17
17
|
- name: rbs
|
18
|
+
ignore: true
|
18
19
|
- name: with_steep_types
|
19
20
|
ignore: true
|
20
21
|
- name: dbm
|
22
|
+
- name: optparse
|
data/sample/lib/conference.rb
CHANGED
data/sample/sig/conference.rbs
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
use Object as Foo
|
2
|
+
|
1
3
|
class Conference
|
2
4
|
attr_reader title: String
|
3
5
|
attr_reader year: Integer
|
@@ -12,3 +14,24 @@ end
|
|
12
14
|
class Object
|
13
15
|
def must: () -> self
|
14
16
|
end
|
17
|
+
|
18
|
+
# Test data
|
19
|
+
class Konference = Conference
|
20
|
+
|
21
|
+
class Allay = ::Array
|
22
|
+
|
23
|
+
module Hoge = Bazzz
|
24
|
+
|
25
|
+
module Bazzz = Hoge
|
26
|
+
|
27
|
+
class Foo < Konference
|
28
|
+
class OBH = String
|
29
|
+
|
30
|
+
type a = Integer
|
31
|
+
end
|
32
|
+
|
33
|
+
type foo = [Conference, Konference]
|
34
|
+
|
35
|
+
|
36
|
+
type b = ::Foo::OBH
|
37
|
+
|
@@ -19,7 +19,8 @@ module Steep
|
|
19
19
|
|
20
20
|
attr_reader location: RBS::Location[untyped, untyped]
|
21
21
|
|
22
|
-
def initialize: (source: String, location: RBS::Location[untyped, untyped],
|
22
|
+
def initialize: (source: String, location: RBS::Location[untyped, untyped], exn: Exception) -> void
|
23
|
+
| (source: String, location: RBS::Location[untyped, untyped], message: String) -> void
|
23
24
|
end
|
24
25
|
|
25
26
|
TYPE: Regexp
|
@@ -30,7 +31,7 @@ module Steep
|
|
30
31
|
|
31
32
|
TYPE_PARAMS: Regexp
|
32
33
|
|
33
|
-
def parse_type: (
|
34
|
+
def parse_type: (MatchData, ?Symbol, location: RBS::Location[untyped, untyped]) -> AST::Types::t
|
34
35
|
|
35
36
|
# ```
|
36
37
|
# @type ${keyword} ${name}: ${type}
|
@@ -16,6 +16,8 @@ module Steep
|
|
16
16
|
def subst: (Steep::Interface::Substitution s) -> self
|
17
17
|
|
18
18
|
def level: () -> Array[Integer]
|
19
|
+
|
20
|
+
def map_type: () { (t) -> t } -> self
|
19
21
|
end
|
20
22
|
|
21
23
|
class Applying < Base
|
@@ -45,6 +47,8 @@ module Steep
|
|
45
47
|
include Helper::ChildrenLevel
|
46
48
|
|
47
49
|
def level: () -> Array[Integer]
|
50
|
+
|
51
|
+
def map_type: () { (t) -> t } -> self
|
48
52
|
end
|
49
53
|
|
50
54
|
class Singleton < Base
|
@@ -146,23 +146,11 @@ module Steep
|
|
146
146
|
class ModuleSelfTypeError < Base
|
147
147
|
attr_reader name: RBS::TypeName
|
148
148
|
|
149
|
-
attr_reader ancestor: RBS::
|
149
|
+
attr_reader ancestor: RBS::Definition::Ancestor::Instance
|
150
150
|
|
151
151
|
attr_reader relation: Subtyping::Relation[AST::Types::t]
|
152
152
|
|
153
|
-
def initialize: (name: RBS::TypeName, ancestor: RBS::
|
154
|
-
|
155
|
-
def header_line: () -> String
|
156
|
-
end
|
157
|
-
|
158
|
-
class ClassVariableDuplicationError < Base
|
159
|
-
attr_reader class_name: RBS::TypeName
|
160
|
-
|
161
|
-
attr_reader other_class_name: RBS::TypeName
|
162
|
-
|
163
|
-
attr_reader variable_name: Symbol
|
164
|
-
|
165
|
-
def initialize: (class_name: RBS::TypeName, other_class_name: RBS::TypeName, variable_name: Symbol, location: RBS::Location[untyped, untyped]) -> void
|
153
|
+
def initialize: (name: RBS::TypeName, ancestor: RBS::Definition::Ancestor::Instance, relation: Subtyping::Relation[AST::Types::t], location: location?) -> void
|
166
154
|
|
167
155
|
def header_line: () -> String
|
168
156
|
end
|
@@ -242,6 +230,22 @@ module Steep
|
|
242
230
|
def header_line: () -> String
|
243
231
|
end
|
244
232
|
|
233
|
+
class InconsistentClassModuleAliasError < Base
|
234
|
+
attr_reader decl: RBS::AST::Declarations::ModuleAlias | RBS::AST::Declarations::ClassAlias
|
235
|
+
|
236
|
+
def initialize: (decl: RBS::AST::Declarations::ModuleAlias | RBS::AST::Declarations::ClassAlias) -> void
|
237
|
+
|
238
|
+
def header_line: () -> String
|
239
|
+
end
|
240
|
+
|
241
|
+
class CyclicClassAliasDefinitionError < Base
|
242
|
+
attr_reader decl: RBS::AST::Declarations::ModuleAlias | RBS::AST::Declarations::ClassAlias
|
243
|
+
|
244
|
+
def initialize: (decl: RBS::AST::Declarations::ModuleAlias | RBS::AST::Declarations::ClassAlias) -> void
|
245
|
+
|
246
|
+
def header_line: () -> String
|
247
|
+
end
|
248
|
+
|
245
249
|
def self.from_rbs_error: (RBS::BaseError error, factory: AST::Types::Factory) -> Base
|
246
250
|
end
|
247
251
|
end
|
@@ -7,7 +7,9 @@ module Steep
|
|
7
7
|
type decl = RBS::AST::Declarations::Class
|
8
8
|
| RBS::AST::Declarations::Module
|
9
9
|
| RBS::AST::Declarations::Interface
|
10
|
-
| RBS::AST::Declarations::
|
10
|
+
| RBS::AST::Declarations::TypeAlias
|
11
|
+
| RBS::AST::Declarations::ClassAlias
|
12
|
+
| RBS::AST::Declarations::ModuleAlias
|
11
13
|
|
12
14
|
type ref = RBS::AST::Members::MethodDefinition
|
13
15
|
| RBS::AST::Members::AttrWriter
|
@@ -22,7 +24,9 @@ module Steep
|
|
22
24
|
| RBS::AST::Declarations::Class
|
23
25
|
| RBS::AST::Declarations::Constant
|
24
26
|
| RBS::AST::Declarations::Global
|
25
|
-
| RBS::AST::Declarations::
|
27
|
+
| RBS::AST::Declarations::TypeAlias
|
28
|
+
| RBS::AST::Declarations::ClassAlias
|
29
|
+
| RBS::AST::Declarations::ModuleAlias
|
26
30
|
|
27
31
|
attr_reader declarations: Set[decl]
|
28
32
|
|
@@ -1,9 +1,9 @@
|
|
1
1
|
module Steep
|
2
2
|
class Project
|
3
3
|
class Target
|
4
|
-
attr_reader name:
|
4
|
+
attr_reader name: Symbol
|
5
5
|
|
6
|
-
attr_reader options:
|
6
|
+
attr_reader options: Options
|
7
7
|
|
8
8
|
attr_reader source_pattern: Pattern
|
9
9
|
|
@@ -11,15 +11,15 @@ module Steep
|
|
11
11
|
|
12
12
|
attr_reader code_diagnostics_config: untyped
|
13
13
|
|
14
|
-
def initialize: (name:
|
14
|
+
def initialize: (name: Symbol, options: Options, source_pattern: Pattern, signature_pattern: Pattern, code_diagnostics_config: untyped) -> void
|
15
15
|
|
16
|
-
def possible_source_file?: (
|
16
|
+
def possible_source_file?: (Pathname path) -> bool
|
17
17
|
|
18
|
-
def possible_signature_file?: (
|
18
|
+
def possible_signature_file?: (Pathname path) -> bool
|
19
19
|
|
20
|
-
def new_env_loader: (project:
|
20
|
+
def new_env_loader: (project: Project) -> RBS::EnvironmentLoader
|
21
21
|
|
22
|
-
def self.construct_env_loader: (options:
|
22
|
+
def self.construct_env_loader: (options: Options, project: Project) -> RBS::EnvironmentLoader
|
23
23
|
end
|
24
24
|
end
|
25
25
|
end
|
@@ -23,11 +23,11 @@ module Steep
|
|
23
23
|
|
24
24
|
def process_completion: (untyped job) -> untyped
|
25
25
|
|
26
|
-
def format_completion_item_for_rbs: (
|
26
|
+
def format_completion_item_for_rbs: (Services::SignatureService sig_service, untyped type_name, untyped context, untyped job, untyped prefix) -> (nil | untyped)
|
27
27
|
|
28
28
|
def format_comment: (untyped comment) -> (untyped | nil)
|
29
29
|
|
30
|
-
def format_comments: (
|
30
|
+
def format_comments: (Array[RBS::AST::Comment] comments) -> untyped?
|
31
31
|
|
32
32
|
def format_completion_item: (untyped item) -> untyped
|
33
33
|
|
@@ -28,8 +28,10 @@ module Steep
|
|
28
28
|
type summarizable_decl = ::RBS::AST::Declarations::Class
|
29
29
|
| ::RBS::AST::Declarations::Module
|
30
30
|
| ::RBS::AST::Declarations::Interface
|
31
|
-
| ::RBS::AST::Declarations::
|
32
|
-
|
31
|
+
| ::RBS::AST::Declarations::TypeAlias
|
32
|
+
| ::RBS::AST::Declarations::ClassAlias
|
33
|
+
| ::RBS::AST::Declarations::ModuleAlias
|
34
|
+
|
33
35
|
def self?.declaration_summary: (summarizable_decl) -> String
|
34
36
|
end
|
35
37
|
end
|
@@ -51,6 +51,12 @@ module Steep
|
|
51
51
|
attr_reader full_name: RBS::TypeName
|
52
52
|
|
53
53
|
def initialize: (env: RBS::Environment, identifier: Symbol, range: Range, type: AST::Types::t, full_name: RBS::TypeName) -> void
|
54
|
+
|
55
|
+
def class?: () -> bool
|
56
|
+
|
57
|
+
def module?: () -> bool
|
58
|
+
|
59
|
+
def comments: () -> Array[RBS::AST::Comment]
|
54
60
|
end
|
55
61
|
|
56
62
|
class MethodNameItem
|
@@ -5,17 +5,19 @@ module Steep
|
|
5
5
|
class TypeAliasContent
|
6
6
|
attr_reader location: ::RBS::Location[untyped, untyped]
|
7
7
|
|
8
|
-
attr_reader decl: ::RBS::AST::Declarations::
|
8
|
+
attr_reader decl: ::RBS::AST::Declarations::TypeAlias
|
9
9
|
|
10
|
-
def initialize: (location: ::RBS::Location[untyped, untyped], decl: ::RBS::AST::Declarations::
|
10
|
+
def initialize: (location: ::RBS::Location[untyped, untyped], decl: ::RBS::AST::Declarations::TypeAlias) -> void
|
11
11
|
end
|
12
12
|
|
13
13
|
class ClassContent
|
14
14
|
attr_reader location: ::RBS::Location[untyped, untyped]
|
15
15
|
|
16
|
-
|
16
|
+
type decl = ::RBS::AST::Declarations::Class | ::RBS::AST::Declarations::Module | ::RBS::AST::Declarations::ClassAlias | ::RBS::AST::Declarations::ModuleAlias
|
17
17
|
|
18
|
-
|
18
|
+
attr_reader decl: decl
|
19
|
+
|
20
|
+
def initialize: (location: ::RBS::Location[untyped, untyped], decl: decl) -> void
|
19
21
|
end
|
20
22
|
|
21
23
|
class InterfaceContent
|
@@ -82,23 +82,27 @@ module Steep
|
|
82
82
|
|
83
83
|
type decl = ::RBS::Environment::ClassEntry
|
84
84
|
| ::RBS::Environment::ModuleEntry
|
85
|
-
| ::RBS::Environment::
|
85
|
+
| ::RBS::Environment::ClassAliasEntry
|
86
|
+
| ::RBS::Environment::ModuleAliasEntry
|
87
|
+
| ::RBS::Environment::ConstantEntry
|
86
88
|
|
87
89
|
attr_reader decl: decl
|
88
90
|
|
89
91
|
attr_reader class_decl(): ::RBS::Environment::ClassEntry | ::RBS::Environment::ModuleEntry | nil
|
90
92
|
|
91
|
-
attr_reader
|
93
|
+
attr_reader class_alias(): ::RBS::Environment::ClassAliasEntry | ::RBS::Environment::ModuleAliasEntry | nil
|
94
|
+
|
95
|
+
attr_reader constant_decl(): ::RBS::Environment::ConstantEntry?
|
92
96
|
|
93
97
|
def initialize: (location: Parser::Source::Range, full_name: ::RBS::TypeName, type: AST::Types::t, decl: decl) -> void
|
94
98
|
|
95
99
|
def comments: () -> Array[::RBS::AST::Comment]
|
96
100
|
|
97
101
|
# Returns true if `decl` is a class/module definition
|
98
|
-
def class_or_module?: () ->
|
102
|
+
def class_or_module?: () -> bool
|
99
103
|
|
100
104
|
# Returns true if `decl` is a constant definition
|
101
|
-
def constant?: () ->
|
105
|
+
def constant?: () -> bool
|
102
106
|
end
|
103
107
|
|
104
108
|
type content = TypeContent | VariableContent | MethodCallContent | DefinitionContent | ConstantContent | TypeAssertionContent
|
@@ -1,5 +1,12 @@
|
|
1
1
|
module Steep
|
2
2
|
module Services
|
3
|
+
# SignatureService takes care of two sets of RBS files.
|
4
|
+
#
|
5
|
+
# 1. RBS files loaded from `EnvironmentLoader` -- usually type signatures of libraries
|
6
|
+
# 2. RBS files managed in editors -- usually type signatures of the development target (app or gem)
|
7
|
+
#
|
8
|
+
# The files in #2 are managed throuth `#status` and the changes are tracked.
|
9
|
+
#
|
3
10
|
class SignatureService
|
4
11
|
type status = SyntaxErrorStatus | AncestorErrorStatus | LoadedStatus
|
5
12
|
|
@@ -65,17 +72,25 @@ module Steep
|
|
65
72
|
def constant_resolver: () -> RBS::Resolver::ConstantResolver
|
66
73
|
end
|
67
74
|
|
75
|
+
# A file has one of the three states:
|
76
|
+
#
|
77
|
+
# 1. The parsing succeeded and loaded a list of declarations
|
78
|
+
# 2. The content has a syntax error and parsing failed
|
79
|
+
# 3. Other unexpected error
|
80
|
+
#
|
68
81
|
class FileStatus
|
69
82
|
attr_reader path: Pathname
|
70
83
|
|
71
84
|
attr_reader content: String
|
72
85
|
|
73
|
-
|
86
|
+
type signature = [RBS::Buffer, Array[RBS::AST::Directives::t], Array[RBS::AST::Declarations::t]]
|
87
|
+
|
88
|
+
attr_reader signature: signature | Diagnostic::Signature::UnexpectedError | RBS::ParsingError
|
74
89
|
|
75
90
|
def initialize: (
|
76
91
|
path: Pathname,
|
77
92
|
content: String,
|
78
|
-
|
93
|
+
signature: signature | Diagnostic::Signature::UnexpectedError | RBS::ParsingError
|
79
94
|
) -> void
|
80
95
|
end
|
81
96
|
|
@@ -85,11 +100,17 @@ module Steep
|
|
85
100
|
|
86
101
|
@env_rbs_paths: Set[Pathname]?
|
87
102
|
|
103
|
+
# All RBS paths in environment, both dependency RBS and target RBS
|
104
|
+
#
|
88
105
|
def env_rbs_paths: () -> Set[Pathname]
|
89
106
|
|
107
|
+
# Yield all RBS paths in the environment, both dependency RBS and target RBS
|
108
|
+
#
|
90
109
|
def each_rbs_path: () { (Pathname) -> void } -> void
|
91
110
|
| () -> Enumerator[Pathname, void]
|
92
111
|
|
112
|
+
# The Target files
|
113
|
+
#
|
93
114
|
def files: () -> Hash[Pathname, FileStatus]
|
94
115
|
|
95
116
|
def pending_changed_paths: () -> Set[Pathname]
|
@@ -106,10 +127,13 @@ module Steep
|
|
106
127
|
|
107
128
|
def apply_changes: (Hash[Pathname, FileStatus] files, Server::ChangeBuffer::changes changes) -> Hash[Pathname, FileStatus]
|
108
129
|
|
130
|
+
# The entry point to apply the edit to the signatures
|
131
|
+
#
|
109
132
|
def update: (Server::ChangeBuffer::changes changes) -> void
|
110
133
|
|
111
134
|
def update_env: (
|
112
|
-
Hash[Pathname, FileStatus] updated_files,
|
135
|
+
Hash[Pathname, FileStatus] updated_files,
|
136
|
+
paths: Set[Pathname]
|
113
137
|
) -> (RBS::DefinitionBuilder::AncestorBuilder | Array[Diagnostic::Signature::Base])
|
114
138
|
|
115
139
|
def rescue_rbs_error: (Array[RBS::BaseError] errors) { () -> void } -> void
|
@@ -9,7 +9,7 @@ module Steep
|
|
9
9
|
|
10
10
|
@errors: Array[Diagnostic::Signature::Base]
|
11
11
|
|
12
|
-
@type_name_resolver: RBS::TypeNameResolver?
|
12
|
+
@type_name_resolver: RBS::Resolver::TypeNameResolver?
|
13
13
|
|
14
14
|
@validator: RBS::Validator?
|
15
15
|
|
@@ -26,7 +26,7 @@ module Steep
|
|
26
26
|
|
27
27
|
def builder: () -> RBS::DefinitionBuilder
|
28
28
|
|
29
|
-
def type_name_resolver: () -> RBS::TypeNameResolver
|
29
|
+
def type_name_resolver: () -> RBS::Resolver::TypeNameResolver
|
30
30
|
|
31
31
|
def validator: () -> RBS::Validator
|
32
32
|
|
@@ -60,13 +60,17 @@ module Steep
|
|
60
60
|
|
61
61
|
def validate_const: () -> void
|
62
62
|
|
63
|
-
def validate_one_constant: (RBS::TypeName name, RBS::Environment::
|
63
|
+
def validate_one_constant: (RBS::TypeName name, RBS::Environment::ConstantEntry entry) -> void
|
64
64
|
|
65
65
|
def validate_global: () -> void
|
66
66
|
|
67
|
-
def validate_one_global: (Symbol name, RBS::Environment::
|
67
|
+
def validate_one_global: (Symbol name, RBS::Environment::GlobalEntry) -> void
|
68
68
|
|
69
|
-
def validate_one_alias: (RBS::TypeName name, ?RBS::Environment::
|
69
|
+
def validate_one_alias: (RBS::TypeName name, ?RBS::Environment::TypeAliasEntry entry) -> void
|
70
|
+
|
71
|
+
def validate_one_class_decl: (RBS::TypeName) -> void
|
72
|
+
|
73
|
+
def validate_one_class_alias: (RBS::TypeName, RBS::Environment::ClassAliasEntry | RBS::Environment::ModuleAliasEntry) -> void
|
70
74
|
|
71
75
|
def validate_alias: () -> void
|
72
76
|
|
@@ -80,7 +80,7 @@ module Steep
|
|
80
80
|
|
81
81
|
def with_method_constr: (untyped method_name, untyped node, args: untyped, self_type: untyped, definition: untyped) { (untyped) -> untyped } -> untyped
|
82
82
|
|
83
|
-
def implement_module: (module_name:
|
83
|
+
def implement_module: (module_name: RBS::TypeName, annotations: AST::Annotation::Collection, ?super_name: RBS::TypeName?) -> AST::Annotation::Implements::Module?
|
84
84
|
|
85
85
|
def default_module_context: (untyped implement_module_name, nesting: untyped) -> untyped
|
86
86
|
|