steep 1.4.0.dev.2 → 1.4.0.dev.4
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/.github/workflows/ruby.yml +1 -2
- data/Gemfile +1 -1
- data/Gemfile.lock +9 -11
- data/Gemfile.steep +1 -2
- data/Gemfile.steep.lock +11 -14
- data/README.md +7 -1
- data/Steepfile +0 -3
- data/bin/rbs +0 -1
- data/guides/README.md +5 -0
- data/guides/src/gem-rbs-collection/gem-rbs-collection.md +143 -0
- data/guides/src/getting-started/getting-started.md +164 -0
- data/guides/src/nil-optional/nil-optional.md +195 -0
- data/lib/steep/diagnostic/ruby.rb +80 -6
- data/lib/steep/drivers/check.rb +4 -4
- data/lib/steep/interface/block.rb +10 -0
- data/lib/steep/interface/builder.rb +3 -3
- data/lib/steep/method_name.rb +8 -0
- data/lib/steep/module_helper.rb +13 -11
- data/lib/steep/path_helper.rb +4 -0
- data/lib/steep/server/interaction_worker.rb +197 -230
- data/lib/steep/server/lsp_formatter.rb +308 -154
- data/lib/steep/server/master.rb +4 -1
- data/lib/steep/services/completion_provider.rb +140 -103
- data/lib/steep/services/hover_provider/rbs.rb +37 -32
- data/lib/steep/services/signature_help_provider.rb +108 -0
- data/lib/steep/services/type_name_completion.rb +165 -0
- data/lib/steep/source.rb +1 -0
- data/lib/steep/type_construction.rb +460 -266
- data/lib/steep/type_inference/block_params.rb +13 -0
- data/lib/steep/type_inference/context.rb +3 -3
- data/lib/steep/type_inference/method_call.rb +1 -1
- data/lib/steep/type_inference/method_params.rb +42 -16
- data/lib/steep/type_inference/send_args.rb +80 -51
- data/lib/steep/type_inference/type_env.rb +12 -4
- data/lib/steep/version.rb +1 -1
- data/lib/steep.rb +2 -0
- data/rbs_collection.steep.lock.yaml +0 -28
- data/rbs_collection.steep.yaml +10 -9
- data/sample/Steepfile +2 -0
- data/sample/lib/conference.rb +12 -0
- data/sample/sig/conference.rbs +5 -0
- data/sig/shims/language-server_protocol.rbs +277 -0
- data/sig/shims/parser/nodes.rbs +37 -0
- data/sig/shims/parser.rbs +4 -0
- data/sig/shims/string.rbs +4 -0
- data/sig/steep/ast/types/factory.rbs +10 -8
- data/sig/steep/diagnostic/lsp_formatter.rbs +1 -1
- data/sig/steep/diagnostic/ruby.rbs +38 -2
- data/sig/steep/drivers/check.rbs +1 -1
- data/sig/steep/drivers/checkfile.rbs +1 -1
- data/sig/steep/drivers/diagnostic_printer.rbs +1 -1
- data/sig/steep/drivers/watch.rbs +1 -1
- data/sig/steep/index/signature_symbol_provider.rbs +1 -1
- data/sig/steep/interface/block.rbs +2 -0
- data/sig/steep/interface/builder.rbs +5 -3
- data/sig/steep/interface/method_type.rbs +5 -3
- data/sig/steep/method_name.rbs +5 -1
- data/sig/steep/module_helper.rbs +9 -0
- data/sig/steep/path_helper.rbs +3 -1
- data/sig/steep/server/base_worker.rbs +1 -1
- data/sig/steep/server/interaction_worker.rbs +52 -17
- data/sig/steep/server/lsp_formatter.rbs +43 -18
- data/sig/steep/server/master.rbs +1 -1
- data/sig/steep/server/type_check_worker.rbs +7 -5
- data/sig/steep/server/worker_process.rbs +6 -4
- data/sig/steep/services/completion_provider.rbs +106 -28
- data/sig/steep/services/hover_provider/rbs.rbs +13 -9
- data/sig/steep/services/signature_help_provider.rbs +39 -0
- data/sig/steep/services/type_name_completion.rbs +122 -0
- data/sig/steep/type_construction.rbs +99 -30
- data/sig/steep/type_inference/block_params.rbs +4 -0
- data/sig/steep/type_inference/context.rbs +70 -22
- data/sig/steep/type_inference/method_call.rbs +1 -1
- data/sig/steep/type_inference/method_params.rbs +43 -24
- data/sig/steep/type_inference/multiple_assignment.rbs +1 -1
- data/sig/steep/type_inference/send_args.rbs +19 -5
- data/sig/steep/typing.rbs +8 -3
- data/smoke/diagnostics/test_expectations.yml +1 -0
- data/steep.gemspec +0 -1
- metadata +12 -16
@@ -16,5 +16,282 @@ module LanguageServer
|
|
16
16
|
end
|
17
17
|
end
|
18
18
|
end
|
19
|
+
|
20
|
+
module Constant
|
21
|
+
module DiagnosticSeverity
|
22
|
+
ERROR: String
|
23
|
+
|
24
|
+
WARNING: String
|
25
|
+
|
26
|
+
INFORMATION: String
|
27
|
+
|
28
|
+
HINT: String
|
29
|
+
end
|
30
|
+
|
31
|
+
module CompletionItemKind
|
32
|
+
type t = Integer
|
33
|
+
|
34
|
+
TEXT: Integer
|
35
|
+
METHOD: Integer
|
36
|
+
FUNCTION: Integer
|
37
|
+
CONSTRUCTOR: Integer
|
38
|
+
FIELD: Integer
|
39
|
+
VARIABLE: Integer
|
40
|
+
CLASS: Integer
|
41
|
+
INTERFACE: Integer
|
42
|
+
MODULE: Integer
|
43
|
+
PROPERTY: Integer
|
44
|
+
UNIT: Integer
|
45
|
+
VALUE: Integer
|
46
|
+
ENUM: Integer
|
47
|
+
KEYWORD: Integer
|
48
|
+
SNIPPET: Integer
|
49
|
+
COLOR: Integer
|
50
|
+
FILE: Integer
|
51
|
+
REFERENCE: Integer
|
52
|
+
FOLDER: Integer
|
53
|
+
ENUMMEMBER: Integer
|
54
|
+
CONSTANT: Integer
|
55
|
+
STRUCT: Integer
|
56
|
+
EVENT: Integer
|
57
|
+
OPERATOR: Integer
|
58
|
+
TYPEPARAMETER: Integer
|
59
|
+
end
|
60
|
+
|
61
|
+
module CompletionItemTag
|
62
|
+
type t = Integer
|
63
|
+
|
64
|
+
Deprecated: Integer
|
65
|
+
end
|
66
|
+
|
67
|
+
module InsertTextFormat
|
68
|
+
type t = Integer
|
69
|
+
|
70
|
+
PLAIN_TEXT: Integer
|
71
|
+
|
72
|
+
SNIPPET: Integer
|
73
|
+
end
|
74
|
+
|
75
|
+
module InsertTextMode
|
76
|
+
type t = Integer
|
77
|
+
|
78
|
+
AS_IS: Integer
|
79
|
+
|
80
|
+
ADJUST_INDENTATION: Integer
|
81
|
+
end
|
82
|
+
|
83
|
+
module MarkupKind
|
84
|
+
type t = "plaintext" | "markdown"
|
85
|
+
|
86
|
+
PLAINTEXT: "plaintext"
|
87
|
+
|
88
|
+
MARKDOWN: "markdown"
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
module Interface
|
93
|
+
interface _Base
|
94
|
+
def attributes: () -> Hash[Symbol, untyped]
|
95
|
+
|
96
|
+
alias to_hash attributes
|
97
|
+
|
98
|
+
def to_json: () -> String
|
99
|
+
end
|
100
|
+
|
101
|
+
class Position
|
102
|
+
include _Base
|
103
|
+
|
104
|
+
# 0-origin line number
|
105
|
+
attr_reader line: Integer
|
106
|
+
|
107
|
+
# 0-origin character position (== cursor position)
|
108
|
+
attr_reader character: Integer
|
109
|
+
|
110
|
+
def initialize: (line: Integer, character: Integer) -> void
|
111
|
+
| (Hash[Symbol, untyped]) -> void
|
112
|
+
end
|
113
|
+
|
114
|
+
class Range
|
115
|
+
include _Base
|
116
|
+
|
117
|
+
attr_reader start: Position
|
118
|
+
|
119
|
+
attr_reader end: Position
|
120
|
+
|
121
|
+
def initialize: (start: Position, end: Position) -> void
|
122
|
+
| (Hash[Symbol, untyped]) -> void
|
123
|
+
end
|
124
|
+
|
125
|
+
class MarkupContent
|
126
|
+
include _Base
|
127
|
+
|
128
|
+
attr_reader kind: Constant::MarkupKind::t
|
129
|
+
|
130
|
+
attr_reader value: String
|
131
|
+
|
132
|
+
def initialize: (kind: Constant::MarkupKind::t, value: String) -> void
|
133
|
+
end
|
134
|
+
|
135
|
+
class TextEdit
|
136
|
+
include _Base
|
137
|
+
|
138
|
+
attr_reader range: Range
|
139
|
+
|
140
|
+
attr_reader new_text: String
|
141
|
+
|
142
|
+
def initialize: (range: Range, new_text: String) -> void
|
143
|
+
end
|
144
|
+
|
145
|
+
class InsertReplaceEdit
|
146
|
+
include _Base
|
147
|
+
|
148
|
+
attr_reader new_text: String
|
149
|
+
|
150
|
+
attr_reader insert: Range
|
151
|
+
|
152
|
+
attr_reader replace: Range
|
153
|
+
|
154
|
+
def initialize: (new_text: String, insert: Range, replace: Range) -> void
|
155
|
+
end
|
156
|
+
|
157
|
+
class Command
|
158
|
+
include _Base
|
159
|
+
|
160
|
+
attr_reader title: String
|
161
|
+
|
162
|
+
attr_reader command: String
|
163
|
+
|
164
|
+
attr_reader arguments: Array[untyped]?
|
165
|
+
|
166
|
+
def initialize: (title: String, command: String, ?arguments: Array[untyped]?) -> void
|
167
|
+
end
|
168
|
+
|
169
|
+
class Hover
|
170
|
+
include _Base
|
171
|
+
|
172
|
+
attr_reader contents: MarkupContent
|
173
|
+
|
174
|
+
attr_reader range: Range
|
175
|
+
|
176
|
+
def initialize: (contents: MarkupContent, range: Range) -> void
|
177
|
+
end
|
178
|
+
|
179
|
+
class CompletionList
|
180
|
+
include _Base
|
181
|
+
|
182
|
+
attr_reader is_incomplete: bool
|
183
|
+
|
184
|
+
attr_reader items: Array[CompletionItem]
|
185
|
+
|
186
|
+
def initialize: (items: Array[CompletionItem], is_incomplete: bool) -> void
|
187
|
+
end
|
188
|
+
|
189
|
+
class CompletionItem
|
190
|
+
include _Base
|
191
|
+
|
192
|
+
attr_reader label: String
|
193
|
+
|
194
|
+
attr_reader label_details: CompletionItemLabelDetails?
|
195
|
+
|
196
|
+
attr_reader kind: Constant::CompletionItemKind::t?
|
197
|
+
|
198
|
+
attr_reader tags: Array[Constant::CompletionItemTag::t]?
|
199
|
+
|
200
|
+
attr_reader detail: String?
|
201
|
+
|
202
|
+
attr_reader documentation: MarkupContent?
|
203
|
+
|
204
|
+
attr_reader preselect: bool?
|
205
|
+
|
206
|
+
attr_reader sort_text: String?
|
207
|
+
|
208
|
+
attr_reader filter_text: String?
|
209
|
+
|
210
|
+
attr_reader insert_text: String?
|
211
|
+
|
212
|
+
attr_reader insert_text_format: Constant::InsertTextFormat::t?
|
213
|
+
|
214
|
+
attr_reader insert_text_mode: Constant::InsertTextMode::t?
|
215
|
+
|
216
|
+
attr_reader text_edit: TextEdit | InsertReplaceEdit | nil
|
217
|
+
|
218
|
+
attr_reader text_edit_text: String?
|
219
|
+
|
220
|
+
attr_reader additional_text_edits: Array[TextEdit]?
|
221
|
+
|
222
|
+
attr_reader commit_characters: Array[String]?
|
223
|
+
|
224
|
+
attr_reader command: Command?
|
225
|
+
|
226
|
+
attr_reader data: untyped?
|
227
|
+
|
228
|
+
def initialize:(
|
229
|
+
label: String,
|
230
|
+
?label_details: CompletionItemLabelDetails?,
|
231
|
+
?kind: Constant::CompletionItemKind::t?,
|
232
|
+
?tags: Array[Constant::CompletionItemTag::t]?,
|
233
|
+
?detail: String?,
|
234
|
+
?documentation: MarkupContent?,
|
235
|
+
?preselect: bool?,
|
236
|
+
?sort_text: String?,
|
237
|
+
?filter_text: String?,
|
238
|
+
?insert_text: String?,
|
239
|
+
?insert_text_format: Constant::InsertTextFormat::t?,
|
240
|
+
?insert_text_mode: Constant::InsertTextMode::t?,
|
241
|
+
?text_edit: TextEdit | InsertReplaceEdit | nil,
|
242
|
+
?text_edit_text: String?,
|
243
|
+
?additional_text_edits: Array[TextEdit]?,
|
244
|
+
?commit_characters: Array[String]?,
|
245
|
+
?command: Command?,
|
246
|
+
?data: untyped?
|
247
|
+
) -> void
|
248
|
+
end
|
249
|
+
|
250
|
+
class CompletionItemLabelDetails
|
251
|
+
include _Base
|
252
|
+
|
253
|
+
attr_reader detail: String?
|
254
|
+
|
255
|
+
attr_reader description: String?
|
256
|
+
|
257
|
+
def initialize: (?detail: String?, ?description: String?) -> void
|
258
|
+
end
|
259
|
+
|
260
|
+
class SignatureInformation
|
261
|
+
include _Base
|
262
|
+
|
263
|
+
attr_reader label: String
|
264
|
+
|
265
|
+
attr_reader documentation: MarkupContent?
|
266
|
+
|
267
|
+
attr_reader parameters: Array[ParameterInformation]?
|
268
|
+
|
269
|
+
attr_reader active_parameter: Integer?
|
270
|
+
|
271
|
+
def initialize: (label: String, ?documentation: MarkupContent?, ?parameters: Array[ParameterInformation]?, ?active_parameter: Integer?) -> void
|
272
|
+
end
|
273
|
+
|
274
|
+
class ParameterInformation
|
275
|
+
include _Base
|
276
|
+
|
277
|
+
attr_reader label: String | [Integer, Integer]
|
278
|
+
|
279
|
+
attr_reader documentation: MarkupContent?
|
280
|
+
|
281
|
+
def initialize: (label: String | [Integer, Integer], ?documentation: MarkupContent) -> void
|
282
|
+
end
|
283
|
+
|
284
|
+
class SignatureHelp
|
285
|
+
include _Base
|
286
|
+
|
287
|
+
attr_reader signatures: Array[SignatureInformation]
|
288
|
+
|
289
|
+
attr_reader active_signature: Integer?
|
290
|
+
|
291
|
+
attr_reader active_parameter: Integer?
|
292
|
+
|
293
|
+
def initialize: (signatures: Array[SignatureInformation], ?active_signature: Integer?, ?active_parameter: Integer?) -> void
|
294
|
+
end
|
295
|
+
end
|
19
296
|
end
|
20
297
|
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module Parser
|
2
|
+
module AST
|
3
|
+
interface _BlockNode
|
4
|
+
def type: () -> :block
|
5
|
+
|
6
|
+
%a{pure} def loc: () -> (Source::Map & _BlockLocation)
|
7
|
+
end
|
8
|
+
|
9
|
+
interface _BlockLocation
|
10
|
+
%a{pure} def end: () -> Source::Range
|
11
|
+
end
|
12
|
+
|
13
|
+
interface _DefNode
|
14
|
+
def type: () -> :def
|
15
|
+
|
16
|
+
def children: () -> [Symbol, Node, Node?]
|
17
|
+
|
18
|
+
%a{pure} def loc: () -> (Source::Map & _DefLocation)
|
19
|
+
end
|
20
|
+
|
21
|
+
interface _DefLocation
|
22
|
+
%a{pure} def end: () -> Source::Range?
|
23
|
+
end
|
24
|
+
|
25
|
+
interface _CaseNode
|
26
|
+
def type: () -> :case
|
27
|
+
|
28
|
+
%a{pure} def loc: () -> (Source::Map & _CaseLocation)
|
29
|
+
end
|
30
|
+
|
31
|
+
interface _CaseLocation
|
32
|
+
%a{pure} def else: () -> Source::Range?
|
33
|
+
|
34
|
+
%a{pure} def end: () -> Source::Range
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
data/sig/shims/parser.rbs
CHANGED
@@ -36,10 +36,14 @@ module Parser
|
|
36
36
|
attr_accessor self.emit_lambda: bool
|
37
37
|
attr_accessor self.emit_procarg0: bool
|
38
38
|
attr_accessor self.emit_kwargs: bool
|
39
|
+
attr_accessor self.emit_forward_arg: bool
|
39
40
|
|
40
41
|
def string_value: (untyped) -> untyped
|
41
42
|
|
42
43
|
def value: (untyped) -> untyped
|
43
44
|
end
|
44
45
|
end
|
46
|
+
|
47
|
+
class SyntaxError < StandardError
|
48
|
+
end
|
45
49
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
use RBS::TypeName, RBS::Resolver::TypeNameResolver
|
2
|
+
|
1
3
|
module Steep
|
2
4
|
module AST
|
3
5
|
module Types
|
@@ -10,13 +12,13 @@ module Steep
|
|
10
12
|
|
11
13
|
attr_reader type_interface_cache: untyped
|
12
14
|
|
13
|
-
@type_name_resolver:
|
15
|
+
@type_name_resolver: TypeNameResolver?
|
14
16
|
|
15
17
|
def inspect: () -> String
|
16
18
|
|
17
19
|
def initialize: (builder: RBS::DefinitionBuilder) -> void
|
18
20
|
|
19
|
-
def type_name_resolver: () ->
|
21
|
+
def type_name_resolver: () -> TypeNameResolver
|
20
22
|
|
21
23
|
def type: (RBS::Types::t `type`) -> t
|
22
24
|
|
@@ -40,7 +42,7 @@ module Steep
|
|
40
42
|
|
41
43
|
def method_type_1: (Interface::MethodType method_type) -> RBS::MethodType
|
42
44
|
|
43
|
-
def unfold: (
|
45
|
+
def unfold: (TypeName type_name, Array[t] args) -> t
|
44
46
|
|
45
47
|
# Unfold type alias one step, or returns itself
|
46
48
|
#
|
@@ -51,7 +53,7 @@ module Steep
|
|
51
53
|
# * Unions and intersections are expanded
|
52
54
|
# * Returns `nil` if it is recursive
|
53
55
|
#
|
54
|
-
def deep_expand_alias: (t `type`, ?recursive: Set[
|
56
|
+
def deep_expand_alias: (t `type`, ?recursive: Set[TypeName]) -> t?
|
55
57
|
|
56
58
|
# Convert union types to array of types
|
57
59
|
#
|
@@ -59,17 +61,17 @@ module Steep
|
|
59
61
|
|
60
62
|
def unwrap_optional: (Types::t `type`) -> [Types::t, Types::t]
|
61
63
|
|
62
|
-
def module_name?: (
|
64
|
+
def module_name?: (TypeName type_name) -> bool
|
63
65
|
|
64
|
-
def class_name?: (
|
66
|
+
def class_name?: (TypeName type_name) -> bool
|
65
67
|
|
66
68
|
def env: () -> RBS::Environment
|
67
69
|
|
68
70
|
def absolute_type: (t `type`, context: RBS::Resolver::context) -> t
|
69
71
|
|
70
|
-
def absolute_type_name: (
|
72
|
+
def absolute_type_name: (TypeName type_name, context: RBS::Resolver::context) -> TypeName?
|
71
73
|
|
72
|
-
def instance_type: (
|
74
|
+
def instance_type: (TypeName type_name, ?args: Array[t]?, ?location: untyped?) -> t
|
73
75
|
|
74
76
|
def try_singleton_type: (t) -> t?
|
75
77
|
|
@@ -24,9 +24,15 @@ module Steep
|
|
24
24
|
end
|
25
25
|
|
26
26
|
module ResultPrinter : _DiagnosticWithResult
|
27
|
-
def relation_message: (untyped relation) ->
|
27
|
+
def relation_message: (Subtyping::Relation[untyped] relation) -> String?
|
28
28
|
|
29
|
-
def detail_lines: () ->
|
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?
|
30
36
|
end
|
31
37
|
|
32
38
|
class IncompatibleAssignment < Base
|
@@ -524,6 +530,36 @@ module Steep
|
|
524
530
|
def header_line: () -> String
|
525
531
|
end
|
526
532
|
|
533
|
+
# Argument forwarding `...` cannot be done safely, because of
|
534
|
+
#
|
535
|
+
# 1. The arguments are incompatible, or
|
536
|
+
# 2. The blocks are incompatible
|
537
|
+
#
|
538
|
+
class IncompatibleArgumentForwarding < Base
|
539
|
+
attr_reader method_name: Symbol
|
540
|
+
|
541
|
+
attr_reader params_pair: [Interface::Function::Params, Interface::Function::Params]?
|
542
|
+
|
543
|
+
attr_reader block_pair: [Interface::Block?, Interface::Block?]?
|
544
|
+
|
545
|
+
attr_reader result: Subtyping::Result::Base
|
546
|
+
|
547
|
+
include ResultPrinter2
|
548
|
+
|
549
|
+
# 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`)
|
550
|
+
#
|
551
|
+
# ```ruby
|
552
|
+
# def foo(...)
|
553
|
+
# bar(...)
|
554
|
+
# end
|
555
|
+
# ```
|
556
|
+
#
|
557
|
+
def initialize: (node: Parser::AST::Node, method_name: Symbol, params_pair: [Interface::Function::Params, Interface::Function::Params], result: Subtyping::Result::Base) -> void
|
558
|
+
| (node: Parser::AST::Node, method_name: Symbol, block_pair: [Interface::Block?, Interface::Block?], result: Subtyping::Result::Base) -> void
|
559
|
+
|
560
|
+
def header_line: () -> String
|
561
|
+
end
|
562
|
+
|
527
563
|
ALL: Array[singleton(Base)]
|
528
564
|
|
529
565
|
type template = Hash[singleton(Base), LSPFormatter::severity]
|
data/sig/steep/drivers/check.rbs
CHANGED
data/sig/steep/drivers/watch.rbs
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
use RBS::TypeName
|
2
|
+
|
1
3
|
module Steep
|
2
4
|
module Interface
|
3
5
|
class Builder
|
@@ -85,11 +87,11 @@ module Steep
|
|
85
87
|
attr_reader cache: Hash[cache_key, Shape?]
|
86
88
|
|
87
89
|
# No type application (if generic), no self-instance-module resolution
|
88
|
-
attr_reader raw_instance_object_shape_cache: Hash[[
|
90
|
+
attr_reader raw_instance_object_shape_cache: Hash[[TypeName, bool], Shape]
|
89
91
|
|
90
|
-
attr_reader raw_singleton_object_shape_cache: Hash[[
|
92
|
+
attr_reader raw_singleton_object_shape_cache: Hash[[TypeName, bool], Shape]
|
91
93
|
|
92
|
-
attr_reader raw_interface_object_shape_cache: Hash[[
|
94
|
+
attr_reader raw_interface_object_shape_cache: Hash[[TypeName, bool], Shape]
|
93
95
|
|
94
96
|
def initialize: (AST::Types::Factory) -> void
|
95
97
|
|
@@ -1,3 +1,5 @@
|
|
1
|
+
use Steep::TypeInference::MethodCall::MethodDecl
|
2
|
+
|
1
3
|
module Steep
|
2
4
|
module Interface
|
3
5
|
class MethodType
|
@@ -7,11 +9,11 @@ module Steep
|
|
7
9
|
|
8
10
|
attr_reader block: Block?
|
9
11
|
|
10
|
-
attr_reader method_decls: Set[
|
12
|
+
attr_reader method_decls: Set[MethodDecl]
|
11
13
|
|
12
14
|
@fvs: Set[Symbol]
|
13
15
|
|
14
|
-
def initialize: (type_params: Array[TypeParam], type: Function, block: Block?, method_decls: Set[
|
16
|
+
def initialize: (type_params: Array[TypeParam], type: Function, block: Block?, method_decls: Set[MethodDecl]) -> void
|
15
17
|
|
16
18
|
def ==: (untyped other) -> bool
|
17
19
|
|
@@ -28,7 +30,7 @@ module Steep
|
|
28
30
|
|
29
31
|
def instantiate: (Substitution s) -> MethodType
|
30
32
|
|
31
|
-
def with: (?type_params: Array[TypeParam], ?type: Function, ?block: Block?, ?method_decls: Set[
|
33
|
+
def with: (?type_params: Array[TypeParam], ?type: Function, ?block: Block?, ?method_decls: Set[MethodDecl]) -> MethodType
|
32
34
|
|
33
35
|
def to_s: () -> ::String
|
34
36
|
|
data/sig/steep/method_name.rbs
CHANGED
@@ -6,6 +6,8 @@ module Steep
|
|
6
6
|
attr_reader method_name: Symbol
|
7
7
|
|
8
8
|
def initialize: (type_name: RBS::TypeName, method_name: Symbol) -> void
|
9
|
+
|
10
|
+
def relative: () -> InstanceMethodName
|
9
11
|
end
|
10
12
|
|
11
13
|
class SingletonMethodName
|
@@ -13,6 +15,8 @@ module Steep
|
|
13
15
|
attr_reader method_name: Symbol
|
14
16
|
|
15
17
|
def initialize: (type_name: RBS::TypeName, method_name: Symbol) -> void
|
18
|
+
|
19
|
+
def relative: () -> SingletonMethodName
|
16
20
|
end
|
17
21
|
|
18
22
|
class ::Object
|
@@ -20,7 +24,7 @@ module Steep
|
|
20
24
|
#
|
21
25
|
# * `ClassName#method_name` syntax returns an `InstanceMethodName` object
|
22
26
|
# * `ClassName.method_name` syntax returns a `SingletonMethodName` object
|
23
|
-
#
|
27
|
+
#
|
24
28
|
def MethodName: (String string) -> (InstanceMethodName | SingletonMethodName)
|
25
29
|
end
|
26
30
|
end
|
data/sig/steep/module_helper.rbs
CHANGED
@@ -1,7 +1,16 @@
|
|
1
1
|
module Steep
|
2
2
|
module ModuleHelper
|
3
|
+
# Translate a *const* node to a type name if possible
|
4
|
+
#
|
5
|
+
# ```ruby
|
6
|
+
# Foo::Bar # => `Foo::Bar`
|
7
|
+
# foo::Bar # => nil
|
8
|
+
# ```
|
9
|
+
#
|
3
10
|
def module_name_from_node: (Parser::AST::Node? parent_node, Symbol constant_name) -> RBS::TypeName?
|
4
11
|
|
12
|
+
# Translate a *const* node to a namespace if possible
|
13
|
+
#
|
5
14
|
def namespace_from_node: (Parser::AST::Node? node) -> RBS::Namespace?
|
6
15
|
end
|
7
16
|
end
|
data/sig/steep/path_helper.rbs
CHANGED
@@ -6,8 +6,10 @@ module Steep
|
|
6
6
|
#
|
7
7
|
def self?.to_pathname: (String uri, ?dosish: bool) -> Pathname?
|
8
8
|
|
9
|
+
def self?.to_pathname!: (String uri, ?dosish: bool) -> Pathname
|
10
|
+
|
9
11
|
# Receives a Pathname and returns a *file* URI
|
10
|
-
#
|
12
|
+
#
|
11
13
|
def self?.to_uri: (Pathname path, ?dosish: bool) -> URI::File
|
12
14
|
end
|
13
15
|
end
|