rbi 0.2.4 → 0.3.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/Gemfile +1 -1
- data/lib/rbi/formatter.rb +5 -16
- data/lib/rbi/index.rb +37 -41
- data/lib/rbi/loc.rb +6 -18
- data/lib/rbi/model.rb +207 -575
- data/lib/rbi/parser.rb +64 -63
- data/lib/rbi/printer.rb +135 -101
- data/lib/rbi/rbs/method_type_translator.rb +120 -0
- data/lib/rbi/rbs/type_translator.rb +181 -0
- data/lib/rbi/rbs_printer.rb +178 -116
- data/lib/rbi/rewriters/add_sig_templates.rb +7 -10
- data/lib/rbi/rewriters/annotate.rb +6 -9
- data/lib/rbi/rewriters/attr_to_methods.rb +16 -32
- data/lib/rbi/rewriters/deannotate.rb +5 -8
- data/lib/rbi/rewriters/filter_versions.rb +7 -12
- data/lib/rbi/rewriters/flatten_singleton_methods.rb +3 -6
- data/lib/rbi/rewriters/flatten_visibilities.rb +4 -7
- data/lib/rbi/rewriters/group_nodes.rb +6 -11
- data/lib/rbi/rewriters/merge_trees.rb +74 -122
- data/lib/rbi/rewriters/nest_non_public_members.rb +5 -10
- data/lib/rbi/rewriters/nest_singleton_methods.rb +3 -6
- data/lib/rbi/rewriters/nest_top_level_members.rb +4 -7
- data/lib/rbi/rewriters/remove_known_definitions.rb +10 -20
- data/lib/rbi/rewriters/sort_nodes.rb +7 -10
- data/lib/rbi/rewriters/translate_rbs_sigs.rb +87 -0
- data/lib/rbi/type.rb +127 -129
- data/lib/rbi/type_parser.rb +15 -15
- data/lib/rbi/type_visitor.rb +19 -21
- data/lib/rbi/version.rb +1 -1
- data/lib/rbi/visitor.rb +50 -46
- data/lib/rbi.rb +7 -3
- data/rbi/rbi.rbi +4686 -0
- metadata +21 -3
data/lib/rbi/model.rb
CHANGED
@@ -5,24 +5,23 @@ module RBI
|
|
5
5
|
class ReplaceNodeError < Error; end
|
6
6
|
|
7
7
|
class Node
|
8
|
-
extend T::Sig
|
9
8
|
extend T::Helpers
|
10
9
|
|
11
10
|
abstract!
|
12
11
|
|
13
|
-
|
12
|
+
#: Tree?
|
14
13
|
attr_accessor :parent_tree
|
15
14
|
|
16
|
-
|
15
|
+
#: Loc?
|
17
16
|
attr_accessor :loc
|
18
17
|
|
19
|
-
|
18
|
+
#: (?loc: Loc?) -> void
|
20
19
|
def initialize(loc: nil)
|
21
20
|
@parent_tree = nil
|
22
21
|
@loc = loc
|
23
22
|
end
|
24
23
|
|
25
|
-
|
24
|
+
#: -> void
|
26
25
|
def detach
|
27
26
|
tree = parent_tree
|
28
27
|
return unless tree
|
@@ -31,7 +30,7 @@ module RBI
|
|
31
30
|
self.parent_tree = nil
|
32
31
|
end
|
33
32
|
|
34
|
-
|
33
|
+
#: (Node node) -> void
|
35
34
|
def replace(node)
|
36
35
|
tree = parent_tree
|
37
36
|
raise ReplaceNodeError, "Can't replace #{self} without a parent tree" unless tree
|
@@ -44,7 +43,7 @@ module RBI
|
|
44
43
|
self.parent_tree = nil
|
45
44
|
end
|
46
45
|
|
47
|
-
|
46
|
+
#: -> Scope?
|
48
47
|
def parent_scope
|
49
48
|
parent = T.let(parent_tree, T.nilable(Tree))
|
50
49
|
parent = parent.parent_tree until parent.is_a?(Scope) || parent.nil?
|
@@ -53,18 +52,16 @@ module RBI
|
|
53
52
|
end
|
54
53
|
|
55
54
|
class Comment < Node
|
56
|
-
|
57
|
-
|
58
|
-
sig { returns(String) }
|
55
|
+
#: String
|
59
56
|
attr_accessor :text
|
60
57
|
|
61
|
-
|
58
|
+
#: (String text, ?loc: Loc?) -> void
|
62
59
|
def initialize(text, loc: nil)
|
63
60
|
super(loc: loc)
|
64
61
|
@text = text
|
65
62
|
end
|
66
63
|
|
67
|
-
|
64
|
+
#: (Object other) -> bool
|
68
65
|
def ==(other)
|
69
66
|
return false unless other.is_a?(Comment)
|
70
67
|
|
@@ -74,30 +71,37 @@ module RBI
|
|
74
71
|
|
75
72
|
# An arbitrary blank line that can be added both in trees and comments
|
76
73
|
class BlankLine < Comment
|
77
|
-
|
78
|
-
|
79
|
-
sig { params(loc: T.nilable(Loc)).void }
|
74
|
+
#: (?loc: Loc?) -> void
|
80
75
|
def initialize(loc: nil)
|
81
76
|
super("", loc: loc)
|
82
77
|
end
|
83
78
|
end
|
84
79
|
|
80
|
+
# A comment representing a RBS type prefixed with `#:`
|
81
|
+
class RBSComment < Comment
|
82
|
+
#: (Object other) -> bool
|
83
|
+
def ==(other)
|
84
|
+
return false unless other.is_a?(RBSComment)
|
85
|
+
|
86
|
+
text == other.text
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
85
90
|
class NodeWithComments < Node
|
86
|
-
extend T::Sig
|
87
91
|
extend T::Helpers
|
88
92
|
|
89
93
|
abstract!
|
90
94
|
|
91
|
-
|
95
|
+
#: Array[Comment]
|
92
96
|
attr_accessor :comments
|
93
97
|
|
94
|
-
|
98
|
+
#: (?loc: Loc?, ?comments: Array[Comment]) -> void
|
95
99
|
def initialize(loc: nil, comments: [])
|
96
100
|
super(loc: loc)
|
97
101
|
@comments = comments
|
98
102
|
end
|
99
103
|
|
100
|
-
|
104
|
+
#: -> Array[String]
|
101
105
|
def annotations
|
102
106
|
comments
|
103
107
|
.select { |comment| comment.text.start_with?("@") }
|
@@ -106,55 +110,39 @@ module RBI
|
|
106
110
|
end
|
107
111
|
|
108
112
|
class Tree < NodeWithComments
|
109
|
-
|
110
|
-
|
111
|
-
sig { returns(T::Array[Node]) }
|
113
|
+
#: Array[Node]
|
112
114
|
attr_reader :nodes
|
113
115
|
|
114
|
-
|
115
|
-
params(
|
116
|
-
loc: T.nilable(Loc),
|
117
|
-
comments: T::Array[Comment],
|
118
|
-
block: T.nilable(T.proc.params(node: Tree).void),
|
119
|
-
).void
|
120
|
-
end
|
116
|
+
#: (?loc: Loc?, ?comments: Array[Comment]) ?{ (Tree node) -> void } -> void
|
121
117
|
def initialize(loc: nil, comments: [], &block)
|
122
118
|
super(loc: loc, comments: comments)
|
123
119
|
@nodes = T.let([], T::Array[Node])
|
124
120
|
block&.call(self)
|
125
121
|
end
|
126
122
|
|
127
|
-
|
123
|
+
#: (Node node) -> void
|
128
124
|
def <<(node)
|
129
125
|
node.parent_tree = self
|
130
126
|
@nodes << node
|
131
127
|
end
|
132
128
|
|
133
|
-
|
129
|
+
#: -> bool
|
134
130
|
def empty?
|
135
131
|
nodes.empty?
|
136
132
|
end
|
137
133
|
end
|
138
134
|
|
139
135
|
class File
|
140
|
-
|
141
|
-
|
142
|
-
sig { returns(Tree) }
|
136
|
+
#: Tree
|
143
137
|
attr_accessor :root
|
144
138
|
|
145
|
-
|
139
|
+
#: String?
|
146
140
|
attr_accessor :strictness
|
147
141
|
|
148
|
-
|
142
|
+
#: Array[Comment]
|
149
143
|
attr_accessor :comments
|
150
144
|
|
151
|
-
|
152
|
-
params(
|
153
|
-
strictness: T.nilable(String),
|
154
|
-
comments: T::Array[Comment],
|
155
|
-
block: T.nilable(T.proc.params(file: File).void),
|
156
|
-
).void
|
157
|
-
end
|
145
|
+
#: (?strictness: String?, ?comments: Array[Comment]) ?{ (File file) -> void } -> void
|
158
146
|
def initialize(strictness: nil, comments: [], &block)
|
159
147
|
@root = T.let(Tree.new, Tree)
|
160
148
|
@strictness = strictness
|
@@ -162,12 +150,12 @@ module RBI
|
|
162
150
|
block&.call(self)
|
163
151
|
end
|
164
152
|
|
165
|
-
|
153
|
+
#: (Node node) -> void
|
166
154
|
def <<(node)
|
167
155
|
@root << node
|
168
156
|
end
|
169
157
|
|
170
|
-
|
158
|
+
#: -> bool
|
171
159
|
def empty?
|
172
160
|
@root.empty?
|
173
161
|
end
|
@@ -176,6 +164,7 @@ module RBI
|
|
176
164
|
# Scopes
|
177
165
|
|
178
166
|
class Scope < Tree
|
167
|
+
extend T::Sig
|
179
168
|
extend T::Helpers
|
180
169
|
|
181
170
|
abstract!
|
@@ -183,33 +172,26 @@ module RBI
|
|
183
172
|
sig { abstract.returns(String) }
|
184
173
|
def fully_qualified_name; end
|
185
174
|
|
186
|
-
|
175
|
+
# @override
|
176
|
+
#: -> String
|
187
177
|
def to_s
|
188
178
|
fully_qualified_name
|
189
179
|
end
|
190
180
|
end
|
191
181
|
|
192
182
|
class Module < Scope
|
193
|
-
|
194
|
-
|
195
|
-
sig { returns(String) }
|
183
|
+
#: String
|
196
184
|
attr_accessor :name
|
197
185
|
|
198
|
-
|
199
|
-
params(
|
200
|
-
name: String,
|
201
|
-
loc: T.nilable(Loc),
|
202
|
-
comments: T::Array[Comment],
|
203
|
-
block: T.nilable(T.proc.params(node: Module).void),
|
204
|
-
).void
|
205
|
-
end
|
186
|
+
#: (String name, ?loc: Loc?, ?comments: Array[Comment]) ?{ (Module node) -> void } -> void
|
206
187
|
def initialize(name, loc: nil, comments: [], &block)
|
207
188
|
super(loc: loc, comments: comments) {}
|
208
189
|
@name = name
|
209
190
|
block&.call(self)
|
210
191
|
end
|
211
192
|
|
212
|
-
|
193
|
+
# @override
|
194
|
+
#: -> String
|
213
195
|
def fully_qualified_name
|
214
196
|
return name if name.start_with?("::")
|
215
197
|
|
@@ -218,23 +200,13 @@ module RBI
|
|
218
200
|
end
|
219
201
|
|
220
202
|
class Class < Scope
|
221
|
-
|
222
|
-
|
223
|
-
sig { returns(String) }
|
203
|
+
#: String
|
224
204
|
attr_accessor :name
|
225
205
|
|
226
|
-
|
206
|
+
#: String?
|
227
207
|
attr_accessor :superclass_name
|
228
208
|
|
229
|
-
|
230
|
-
params(
|
231
|
-
name: String,
|
232
|
-
superclass_name: T.nilable(String),
|
233
|
-
loc: T.nilable(Loc),
|
234
|
-
comments: T::Array[Comment],
|
235
|
-
block: T.nilable(T.proc.params(node: Class).void),
|
236
|
-
).void
|
237
|
-
end
|
209
|
+
#: (String name, ?superclass_name: String?, ?loc: Loc?, ?comments: Array[Comment]) ?{ (Class node) -> void } -> void
|
238
210
|
def initialize(name, superclass_name: nil, loc: nil, comments: [], &block)
|
239
211
|
super(loc: loc, comments: comments) {}
|
240
212
|
@name = name
|
@@ -242,7 +214,8 @@ module RBI
|
|
242
214
|
block&.call(self)
|
243
215
|
end
|
244
216
|
|
245
|
-
|
217
|
+
# @override
|
218
|
+
#: -> String
|
246
219
|
def fully_qualified_name
|
247
220
|
return name if name.start_with?("::")
|
248
221
|
|
@@ -251,48 +224,30 @@ module RBI
|
|
251
224
|
end
|
252
225
|
|
253
226
|
class SingletonClass < Scope
|
254
|
-
|
255
|
-
|
256
|
-
sig do
|
257
|
-
params(
|
258
|
-
loc: T.nilable(Loc),
|
259
|
-
comments: T::Array[Comment],
|
260
|
-
block: T.nilable(T.proc.params(node: SingletonClass).void),
|
261
|
-
).void
|
262
|
-
end
|
227
|
+
#: (?loc: Loc?, ?comments: Array[Comment]) ?{ (SingletonClass node) -> void } -> void
|
263
228
|
def initialize(loc: nil, comments: [], &block)
|
264
229
|
super {}
|
265
230
|
block&.call(self)
|
266
231
|
end
|
267
232
|
|
268
|
-
|
233
|
+
# @override
|
234
|
+
#: -> String
|
269
235
|
def fully_qualified_name
|
270
236
|
"#{parent_scope&.fully_qualified_name}::<self>"
|
271
237
|
end
|
272
238
|
end
|
273
239
|
|
274
240
|
class Struct < Scope
|
275
|
-
|
276
|
-
|
277
|
-
sig { returns(String) }
|
241
|
+
#: String
|
278
242
|
attr_accessor :name
|
279
243
|
|
280
|
-
|
244
|
+
#: Array[Symbol]
|
281
245
|
attr_accessor :members
|
282
246
|
|
283
|
-
|
247
|
+
#: bool
|
284
248
|
attr_accessor :keyword_init
|
285
249
|
|
286
|
-
|
287
|
-
params(
|
288
|
-
name: String,
|
289
|
-
members: T::Array[Symbol],
|
290
|
-
keyword_init: T::Boolean,
|
291
|
-
loc: T.nilable(Loc),
|
292
|
-
comments: T::Array[Comment],
|
293
|
-
block: T.nilable(T.proc.params(struct: Struct).void),
|
294
|
-
).void
|
295
|
-
end
|
250
|
+
#: (String name, ?members: Array[Symbol], ?keyword_init: bool, ?loc: Loc?, ?comments: Array[Comment]) ?{ (Struct struct) -> void } -> void
|
296
251
|
def initialize(name, members: [], keyword_init: false, loc: nil, comments: [], &block)
|
297
252
|
super(loc: loc, comments: comments) {}
|
298
253
|
@name = name
|
@@ -301,7 +256,8 @@ module RBI
|
|
301
256
|
block&.call(self)
|
302
257
|
end
|
303
258
|
|
304
|
-
|
259
|
+
# @override
|
260
|
+
#: -> String
|
305
261
|
def fully_qualified_name
|
306
262
|
return name if name.start_with?("::")
|
307
263
|
|
@@ -312,20 +268,10 @@ module RBI
|
|
312
268
|
# Consts
|
313
269
|
|
314
270
|
class Const < NodeWithComments
|
315
|
-
|
316
|
-
|
317
|
-
sig { returns(String) }
|
271
|
+
#: String
|
318
272
|
attr_reader :name, :value
|
319
273
|
|
320
|
-
|
321
|
-
params(
|
322
|
-
name: String,
|
323
|
-
value: String,
|
324
|
-
loc: T.nilable(Loc),
|
325
|
-
comments: T::Array[Comment],
|
326
|
-
block: T.nilable(T.proc.params(node: Const).void),
|
327
|
-
).void
|
328
|
-
end
|
274
|
+
#: (String name, String value, ?loc: Loc?, ?comments: Array[Comment]) ?{ (Const node) -> void } -> void
|
329
275
|
def initialize(name, value, loc: nil, comments: [], &block)
|
330
276
|
super(loc: loc, comments: comments)
|
331
277
|
@name = name
|
@@ -333,14 +279,15 @@ module RBI
|
|
333
279
|
block&.call(self)
|
334
280
|
end
|
335
281
|
|
336
|
-
|
282
|
+
#: -> String
|
337
283
|
def fully_qualified_name
|
338
284
|
return name if name.start_with?("::")
|
339
285
|
|
340
286
|
"#{parent_scope&.fully_qualified_name}::#{name}"
|
341
287
|
end
|
342
288
|
|
343
|
-
|
289
|
+
# @override
|
290
|
+
#: -> String
|
344
291
|
def to_s
|
345
292
|
fully_qualified_name
|
346
293
|
end
|
@@ -354,25 +301,16 @@ module RBI
|
|
354
301
|
|
355
302
|
abstract!
|
356
303
|
|
357
|
-
|
304
|
+
#: Array[Symbol]
|
358
305
|
attr_reader :names
|
359
306
|
|
360
|
-
|
307
|
+
#: Visibility
|
361
308
|
attr_accessor :visibility
|
362
309
|
|
363
|
-
|
310
|
+
#: Array[Sig]
|
364
311
|
attr_reader :sigs
|
365
312
|
|
366
|
-
|
367
|
-
params(
|
368
|
-
name: Symbol,
|
369
|
-
names: T::Array[Symbol],
|
370
|
-
visibility: Visibility,
|
371
|
-
sigs: T::Array[Sig],
|
372
|
-
loc: T.nilable(Loc),
|
373
|
-
comments: T::Array[Comment],
|
374
|
-
).void
|
375
|
-
end
|
313
|
+
#: (Symbol name, Array[Symbol] names, ?visibility: Visibility, ?sigs: Array[Sig], ?loc: Loc?, ?comments: Array[Comment]) -> void
|
376
314
|
def initialize(name, names, visibility: Public.new, sigs: [], loc: nil, comments: [])
|
377
315
|
super(loc: loc, comments: comments)
|
378
316
|
@names = T.let([name, *names], T::Array[Symbol])
|
@@ -385,31 +323,21 @@ module RBI
|
|
385
323
|
end
|
386
324
|
|
387
325
|
class AttrAccessor < Attr
|
388
|
-
|
389
|
-
|
390
|
-
sig do
|
391
|
-
params(
|
392
|
-
name: Symbol,
|
393
|
-
names: Symbol,
|
394
|
-
visibility: Visibility,
|
395
|
-
sigs: T::Array[Sig],
|
396
|
-
loc: T.nilable(Loc),
|
397
|
-
comments: T::Array[Comment],
|
398
|
-
block: T.nilable(T.proc.params(node: AttrAccessor).void),
|
399
|
-
).void
|
400
|
-
end
|
326
|
+
#: (Symbol name, *Symbol names, ?visibility: Visibility, ?sigs: Array[Sig], ?loc: Loc?, ?comments: Array[Comment]) ?{ (AttrAccessor node) -> void } -> void
|
401
327
|
def initialize(name, *names, visibility: Public.new, sigs: [], loc: nil, comments: [], &block)
|
402
328
|
super(name, names, loc: loc, visibility: visibility, sigs: sigs, comments: comments)
|
403
329
|
block&.call(self)
|
404
330
|
end
|
405
331
|
|
406
|
-
|
332
|
+
# @override
|
333
|
+
#: -> Array[String]
|
407
334
|
def fully_qualified_names
|
408
335
|
parent_name = parent_scope&.fully_qualified_name
|
409
336
|
names.flat_map { |name| ["#{parent_name}##{name}", "#{parent_name}##{name}="] }
|
410
337
|
end
|
411
338
|
|
412
|
-
|
339
|
+
# @override
|
340
|
+
#: -> String
|
413
341
|
def to_s
|
414
342
|
symbols = names.map { |name| ":#{name}" }.join(", ")
|
415
343
|
"#{parent_scope&.fully_qualified_name}.attr_accessor(#{symbols})"
|
@@ -417,31 +345,21 @@ module RBI
|
|
417
345
|
end
|
418
346
|
|
419
347
|
class AttrReader < Attr
|
420
|
-
|
421
|
-
|
422
|
-
sig do
|
423
|
-
params(
|
424
|
-
name: Symbol,
|
425
|
-
names: Symbol,
|
426
|
-
visibility: Visibility,
|
427
|
-
sigs: T::Array[Sig],
|
428
|
-
loc: T.nilable(Loc),
|
429
|
-
comments: T::Array[Comment],
|
430
|
-
block: T.nilable(T.proc.params(node: AttrReader).void),
|
431
|
-
).void
|
432
|
-
end
|
348
|
+
#: (Symbol name, *Symbol names, ?visibility: Visibility, ?sigs: Array[Sig], ?loc: Loc?, ?comments: Array[Comment]) ?{ (AttrReader node) -> void } -> void
|
433
349
|
def initialize(name, *names, visibility: Public.new, sigs: [], loc: nil, comments: [], &block)
|
434
350
|
super(name, names, loc: loc, visibility: visibility, sigs: sigs, comments: comments)
|
435
351
|
block&.call(self)
|
436
352
|
end
|
437
353
|
|
438
|
-
|
354
|
+
# @override
|
355
|
+
#: -> Array[String]
|
439
356
|
def fully_qualified_names
|
440
357
|
parent_name = parent_scope&.fully_qualified_name
|
441
358
|
names.map { |name| "#{parent_name}##{name}" }
|
442
359
|
end
|
443
360
|
|
444
|
-
|
361
|
+
# @override
|
362
|
+
#: -> String
|
445
363
|
def to_s
|
446
364
|
symbols = names.map { |name| ":#{name}" }.join(", ")
|
447
365
|
"#{parent_scope&.fully_qualified_name}.attr_reader(#{symbols})"
|
@@ -449,31 +367,21 @@ module RBI
|
|
449
367
|
end
|
450
368
|
|
451
369
|
class AttrWriter < Attr
|
452
|
-
|
453
|
-
|
454
|
-
sig do
|
455
|
-
params(
|
456
|
-
name: Symbol,
|
457
|
-
names: Symbol,
|
458
|
-
visibility: Visibility,
|
459
|
-
sigs: T::Array[Sig],
|
460
|
-
loc: T.nilable(Loc),
|
461
|
-
comments: T::Array[Comment],
|
462
|
-
block: T.nilable(T.proc.params(node: AttrWriter).void),
|
463
|
-
).void
|
464
|
-
end
|
370
|
+
#: (Symbol name, *Symbol names, ?visibility: Visibility, ?sigs: Array[Sig], ?loc: Loc?, ?comments: Array[Comment]) ?{ (AttrWriter node) -> void } -> void
|
465
371
|
def initialize(name, *names, visibility: Public.new, sigs: [], loc: nil, comments: [], &block)
|
466
372
|
super(name, names, loc: loc, visibility: visibility, sigs: sigs, comments: comments)
|
467
373
|
block&.call(self)
|
468
374
|
end
|
469
375
|
|
470
|
-
|
376
|
+
# @override
|
377
|
+
#: -> Array[String]
|
471
378
|
def fully_qualified_names
|
472
379
|
parent_name = parent_scope&.fully_qualified_name
|
473
380
|
names.map { |name| "#{parent_name}##{name}=" }
|
474
381
|
end
|
475
382
|
|
476
|
-
|
383
|
+
# @override
|
384
|
+
#: -> String
|
477
385
|
def to_s
|
478
386
|
symbols = names.map { |name| ":#{name}" }.join(", ")
|
479
387
|
"#{parent_scope&.fully_qualified_name}.attr_writer(#{symbols})"
|
@@ -483,35 +391,22 @@ module RBI
|
|
483
391
|
# Methods and args
|
484
392
|
|
485
393
|
class Method < NodeWithComments
|
486
|
-
|
487
|
-
|
488
|
-
sig { returns(String) }
|
394
|
+
#: String
|
489
395
|
attr_accessor :name
|
490
396
|
|
491
|
-
|
397
|
+
#: Array[Param]
|
492
398
|
attr_reader :params
|
493
399
|
|
494
|
-
|
400
|
+
#: bool
|
495
401
|
attr_accessor :is_singleton
|
496
402
|
|
497
|
-
|
403
|
+
#: Visibility
|
498
404
|
attr_accessor :visibility
|
499
405
|
|
500
|
-
|
406
|
+
#: Array[Sig]
|
501
407
|
attr_accessor :sigs
|
502
408
|
|
503
|
-
|
504
|
-
params(
|
505
|
-
name: String,
|
506
|
-
params: T::Array[Param],
|
507
|
-
is_singleton: T::Boolean,
|
508
|
-
visibility: Visibility,
|
509
|
-
sigs: T::Array[Sig],
|
510
|
-
loc: T.nilable(Loc),
|
511
|
-
comments: T::Array[Comment],
|
512
|
-
block: T.nilable(T.proc.params(node: Method).void),
|
513
|
-
).void
|
514
|
-
end
|
409
|
+
#: (String name, ?params: Array[Param], ?is_singleton: bool, ?visibility: Visibility, ?sigs: Array[Sig], ?loc: Loc?, ?comments: Array[Comment]) ?{ (Method node) -> void } -> void
|
515
410
|
def initialize(
|
516
411
|
name,
|
517
412
|
params: [],
|
@@ -531,59 +426,47 @@ module RBI
|
|
531
426
|
block&.call(self)
|
532
427
|
end
|
533
428
|
|
534
|
-
|
429
|
+
#: (Param param) -> void
|
535
430
|
def <<(param)
|
536
431
|
@params << param
|
537
432
|
end
|
538
433
|
|
539
|
-
|
434
|
+
#: (String name) -> void
|
540
435
|
def add_param(name)
|
541
436
|
@params << ReqParam.new(name)
|
542
437
|
end
|
543
438
|
|
544
|
-
|
439
|
+
#: (String name, String default_value) -> void
|
545
440
|
def add_opt_param(name, default_value)
|
546
441
|
@params << OptParam.new(name, default_value)
|
547
442
|
end
|
548
443
|
|
549
|
-
|
444
|
+
#: (String name) -> void
|
550
445
|
def add_rest_param(name)
|
551
446
|
@params << RestParam.new(name)
|
552
447
|
end
|
553
448
|
|
554
|
-
|
449
|
+
#: (String name) -> void
|
555
450
|
def add_kw_param(name)
|
556
451
|
@params << KwParam.new(name)
|
557
452
|
end
|
558
453
|
|
559
|
-
|
454
|
+
#: (String name, String default_value) -> void
|
560
455
|
def add_kw_opt_param(name, default_value)
|
561
456
|
@params << KwOptParam.new(name, default_value)
|
562
457
|
end
|
563
458
|
|
564
|
-
|
459
|
+
#: (String name) -> void
|
565
460
|
def add_kw_rest_param(name)
|
566
461
|
@params << KwRestParam.new(name)
|
567
462
|
end
|
568
463
|
|
569
|
-
|
464
|
+
#: (String name) -> void
|
570
465
|
def add_block_param(name)
|
571
466
|
@params << BlockParam.new(name)
|
572
467
|
end
|
573
468
|
|
574
|
-
|
575
|
-
params(
|
576
|
-
params: T::Array[SigParam],
|
577
|
-
return_type: T.any(String, Type),
|
578
|
-
is_abstract: T::Boolean,
|
579
|
-
is_override: T::Boolean,
|
580
|
-
is_overridable: T::Boolean,
|
581
|
-
is_final: T::Boolean,
|
582
|
-
type_params: T::Array[String],
|
583
|
-
checked: T.nilable(Symbol),
|
584
|
-
block: T.nilable(T.proc.params(node: Sig).void),
|
585
|
-
).void
|
586
|
-
end
|
469
|
+
#: (?params: Array[SigParam], ?return_type: (String | Type), ?is_abstract: bool, ?is_override: bool, ?is_overridable: bool, ?is_final: bool, ?type_params: Array[String], ?checked: Symbol?) ?{ (Sig node) -> void } -> void
|
587
470
|
def add_sig(
|
588
471
|
params: [],
|
589
472
|
return_type: "void",
|
@@ -609,7 +492,7 @@ module RBI
|
|
609
492
|
@sigs << sig
|
610
493
|
end
|
611
494
|
|
612
|
-
|
495
|
+
#: -> String
|
613
496
|
def fully_qualified_name
|
614
497
|
if is_singleton
|
615
498
|
"#{parent_scope&.fully_qualified_name}::#{name}"
|
@@ -618,7 +501,8 @@ module RBI
|
|
618
501
|
end
|
619
502
|
end
|
620
503
|
|
621
|
-
|
504
|
+
# @override
|
505
|
+
#: -> String
|
622
506
|
def to_s
|
623
507
|
"#{fully_qualified_name}(#{params.join(", ")})"
|
624
508
|
end
|
@@ -626,215 +510,149 @@ module RBI
|
|
626
510
|
|
627
511
|
class Param < NodeWithComments
|
628
512
|
extend T::Helpers
|
629
|
-
extend T::Sig
|
630
513
|
|
631
514
|
abstract!
|
632
515
|
|
633
|
-
|
516
|
+
#: String
|
634
517
|
attr_reader :name
|
635
518
|
|
636
|
-
|
637
|
-
params(
|
638
|
-
name: String,
|
639
|
-
loc: T.nilable(Loc),
|
640
|
-
comments: T::Array[Comment],
|
641
|
-
).void
|
642
|
-
end
|
519
|
+
#: (String name, ?loc: Loc?, ?comments: Array[Comment]) -> void
|
643
520
|
def initialize(name, loc: nil, comments: [])
|
644
521
|
super(loc: loc, comments: comments)
|
645
522
|
@name = name
|
646
523
|
end
|
647
524
|
|
648
|
-
|
525
|
+
# @override
|
526
|
+
#: -> String
|
649
527
|
def to_s
|
650
528
|
name
|
651
529
|
end
|
652
530
|
end
|
653
531
|
|
654
532
|
class ReqParam < Param
|
655
|
-
|
656
|
-
|
657
|
-
sig do
|
658
|
-
params(
|
659
|
-
name: String,
|
660
|
-
loc: T.nilable(Loc),
|
661
|
-
comments: T::Array[Comment],
|
662
|
-
block: T.nilable(T.proc.params(node: ReqParam).void),
|
663
|
-
).void
|
664
|
-
end
|
533
|
+
#: (String name, ?loc: Loc?, ?comments: Array[Comment]) ?{ (ReqParam node) -> void } -> void
|
665
534
|
def initialize(name, loc: nil, comments: [], &block)
|
666
535
|
super(name, loc: loc, comments: comments)
|
667
536
|
block&.call(self)
|
668
537
|
end
|
669
538
|
|
670
|
-
|
539
|
+
#: (Object? other) -> bool
|
671
540
|
def ==(other)
|
672
541
|
ReqParam === other && name == other.name
|
673
542
|
end
|
674
543
|
end
|
675
544
|
|
676
545
|
class OptParam < Param
|
677
|
-
|
678
|
-
|
679
|
-
sig { returns(String) }
|
546
|
+
#: String
|
680
547
|
attr_reader :value
|
681
548
|
|
682
|
-
|
683
|
-
params(
|
684
|
-
name: String,
|
685
|
-
value: String,
|
686
|
-
loc: T.nilable(Loc),
|
687
|
-
comments: T::Array[Comment],
|
688
|
-
block: T.nilable(T.proc.params(node: OptParam).void),
|
689
|
-
).void
|
690
|
-
end
|
549
|
+
#: (String name, String value, ?loc: Loc?, ?comments: Array[Comment]) ?{ (OptParam node) -> void } -> void
|
691
550
|
def initialize(name, value, loc: nil, comments: [], &block)
|
692
551
|
super(name, loc: loc, comments: comments)
|
693
552
|
@value = value
|
694
553
|
block&.call(self)
|
695
554
|
end
|
696
555
|
|
697
|
-
|
556
|
+
#: (Object? other) -> bool
|
698
557
|
def ==(other)
|
699
558
|
OptParam === other && name == other.name
|
700
559
|
end
|
701
560
|
end
|
702
561
|
|
703
562
|
class RestParam < Param
|
704
|
-
|
705
|
-
|
706
|
-
sig do
|
707
|
-
params(
|
708
|
-
name: String,
|
709
|
-
loc: T.nilable(Loc),
|
710
|
-
comments: T::Array[Comment],
|
711
|
-
block: T.nilable(T.proc.params(node: RestParam).void),
|
712
|
-
).void
|
713
|
-
end
|
563
|
+
#: (String name, ?loc: Loc?, ?comments: Array[Comment]) ?{ (RestParam node) -> void } -> void
|
714
564
|
def initialize(name, loc: nil, comments: [], &block)
|
715
565
|
super(name, loc: loc, comments: comments)
|
716
566
|
block&.call(self)
|
717
567
|
end
|
718
568
|
|
719
|
-
|
569
|
+
# @override
|
570
|
+
#: -> String
|
720
571
|
def to_s
|
721
572
|
"*#{name}"
|
722
573
|
end
|
723
574
|
|
724
|
-
|
575
|
+
#: (Object? other) -> bool
|
725
576
|
def ==(other)
|
726
577
|
RestParam === other && name == other.name
|
727
578
|
end
|
728
579
|
end
|
729
580
|
|
730
581
|
class KwParam < Param
|
731
|
-
|
732
|
-
|
733
|
-
sig do
|
734
|
-
params(
|
735
|
-
name: String,
|
736
|
-
loc: T.nilable(Loc),
|
737
|
-
comments: T::Array[Comment],
|
738
|
-
block: T.nilable(T.proc.params(node: KwParam).void),
|
739
|
-
).void
|
740
|
-
end
|
582
|
+
#: (String name, ?loc: Loc?, ?comments: Array[Comment]) ?{ (KwParam node) -> void } -> void
|
741
583
|
def initialize(name, loc: nil, comments: [], &block)
|
742
584
|
super(name, loc: loc, comments: comments)
|
743
585
|
block&.call(self)
|
744
586
|
end
|
745
587
|
|
746
|
-
|
588
|
+
# @override
|
589
|
+
#: -> String
|
747
590
|
def to_s
|
748
591
|
"#{name}:"
|
749
592
|
end
|
750
593
|
|
751
|
-
|
594
|
+
#: (Object? other) -> bool
|
752
595
|
def ==(other)
|
753
596
|
KwParam === other && name == other.name
|
754
597
|
end
|
755
598
|
end
|
756
599
|
|
757
600
|
class KwOptParam < Param
|
758
|
-
|
759
|
-
|
760
|
-
sig { returns(String) }
|
601
|
+
#: String
|
761
602
|
attr_reader :value
|
762
603
|
|
763
|
-
|
764
|
-
params(
|
765
|
-
name: String,
|
766
|
-
value: String,
|
767
|
-
loc: T.nilable(Loc),
|
768
|
-
comments: T::Array[Comment],
|
769
|
-
block: T.nilable(T.proc.params(node: KwOptParam).void),
|
770
|
-
).void
|
771
|
-
end
|
604
|
+
#: (String name, String value, ?loc: Loc?, ?comments: Array[Comment]) ?{ (KwOptParam node) -> void } -> void
|
772
605
|
def initialize(name, value, loc: nil, comments: [], &block)
|
773
606
|
super(name, loc: loc, comments: comments)
|
774
607
|
@value = value
|
775
608
|
block&.call(self)
|
776
609
|
end
|
777
610
|
|
778
|
-
|
611
|
+
# @override
|
612
|
+
#: -> String
|
779
613
|
def to_s
|
780
614
|
"#{name}:"
|
781
615
|
end
|
782
616
|
|
783
|
-
|
617
|
+
#: (Object? other) -> bool
|
784
618
|
def ==(other)
|
785
619
|
KwOptParam === other && name == other.name
|
786
620
|
end
|
787
621
|
end
|
788
622
|
|
789
623
|
class KwRestParam < Param
|
790
|
-
|
791
|
-
|
792
|
-
sig do
|
793
|
-
params(
|
794
|
-
name: String,
|
795
|
-
loc: T.nilable(Loc),
|
796
|
-
comments: T::Array[Comment],
|
797
|
-
block: T.nilable(T.proc.params(node: KwRestParam).void),
|
798
|
-
).void
|
799
|
-
end
|
624
|
+
#: (String name, ?loc: Loc?, ?comments: Array[Comment]) ?{ (KwRestParam node) -> void } -> void
|
800
625
|
def initialize(name, loc: nil, comments: [], &block)
|
801
626
|
super(name, loc: loc, comments: comments)
|
802
627
|
block&.call(self)
|
803
628
|
end
|
804
629
|
|
805
|
-
|
630
|
+
# @override
|
631
|
+
#: -> String
|
806
632
|
def to_s
|
807
633
|
"**#{name}:"
|
808
634
|
end
|
809
635
|
|
810
|
-
|
636
|
+
#: (Object? other) -> bool
|
811
637
|
def ==(other)
|
812
638
|
KwRestParam === other && name == other.name
|
813
639
|
end
|
814
640
|
end
|
815
641
|
|
816
642
|
class BlockParam < Param
|
817
|
-
|
818
|
-
|
819
|
-
sig do
|
820
|
-
params(
|
821
|
-
name: String,
|
822
|
-
loc: T.nilable(Loc),
|
823
|
-
comments: T::Array[Comment],
|
824
|
-
block: T.nilable(T.proc.params(node: BlockParam).void),
|
825
|
-
).void
|
826
|
-
end
|
643
|
+
#: (String name, ?loc: Loc?, ?comments: Array[Comment]) ?{ (BlockParam node) -> void } -> void
|
827
644
|
def initialize(name, loc: nil, comments: [], &block)
|
828
645
|
super(name, loc: loc, comments: comments)
|
829
646
|
block&.call(self)
|
830
647
|
end
|
831
648
|
|
832
|
-
|
649
|
+
# @override
|
650
|
+
#: -> String
|
833
651
|
def to_s
|
834
652
|
"&#{name}"
|
835
653
|
end
|
836
654
|
|
837
|
-
|
655
|
+
#: (Object? other) -> bool
|
838
656
|
def ==(other)
|
839
657
|
BlockParam === other && name == other.name
|
840
658
|
end
|
@@ -843,22 +661,14 @@ module RBI
|
|
843
661
|
# Mixins
|
844
662
|
|
845
663
|
class Mixin < NodeWithComments
|
846
|
-
extend T::Sig
|
847
664
|
extend T::Helpers
|
848
665
|
|
849
666
|
abstract!
|
850
667
|
|
851
|
-
|
668
|
+
#: Array[String]
|
852
669
|
attr_reader :names
|
853
670
|
|
854
|
-
|
855
|
-
params(
|
856
|
-
name: String,
|
857
|
-
names: T::Array[String],
|
858
|
-
loc: T.nilable(Loc),
|
859
|
-
comments: T::Array[Comment],
|
860
|
-
).void
|
861
|
-
end
|
671
|
+
#: (String name, Array[String] names, ?loc: Loc?, ?comments: Array[Comment]) -> void
|
862
672
|
def initialize(name, names, loc: nil, comments: [])
|
863
673
|
super(loc: loc, comments: comments)
|
864
674
|
@names = T.let([name, *names], T::Array[String])
|
@@ -866,46 +676,28 @@ module RBI
|
|
866
676
|
end
|
867
677
|
|
868
678
|
class Include < Mixin
|
869
|
-
|
870
|
-
|
871
|
-
sig do
|
872
|
-
params(
|
873
|
-
name: String,
|
874
|
-
names: String,
|
875
|
-
loc: T.nilable(Loc),
|
876
|
-
comments: T::Array[Comment],
|
877
|
-
block: T.nilable(T.proc.params(node: Include).void),
|
878
|
-
).void
|
879
|
-
end
|
679
|
+
#: (String name, *String names, ?loc: Loc?, ?comments: Array[Comment]) ?{ (Include node) -> void } -> void
|
880
680
|
def initialize(name, *names, loc: nil, comments: [], &block)
|
881
681
|
super(name, names, loc: loc, comments: comments)
|
882
682
|
block&.call(self)
|
883
683
|
end
|
884
684
|
|
885
|
-
|
685
|
+
# @override
|
686
|
+
#: -> String
|
886
687
|
def to_s
|
887
688
|
"#{parent_scope&.fully_qualified_name}.include(#{names.join(", ")})"
|
888
689
|
end
|
889
690
|
end
|
890
691
|
|
891
692
|
class Extend < Mixin
|
892
|
-
|
893
|
-
|
894
|
-
sig do
|
895
|
-
params(
|
896
|
-
name: String,
|
897
|
-
names: String,
|
898
|
-
loc: T.nilable(Loc),
|
899
|
-
comments: T::Array[Comment],
|
900
|
-
block: T.nilable(T.proc.params(node: Extend).void),
|
901
|
-
).void
|
902
|
-
end
|
693
|
+
#: (String name, *String names, ?loc: Loc?, ?comments: Array[Comment]) ?{ (Extend node) -> void } -> void
|
903
694
|
def initialize(name, *names, loc: nil, comments: [], &block)
|
904
695
|
super(name, names, loc: loc, comments: comments)
|
905
696
|
block&.call(self)
|
906
697
|
end
|
907
698
|
|
908
|
-
|
699
|
+
# @override
|
700
|
+
#: -> String
|
909
701
|
def to_s
|
910
702
|
"#{parent_scope&.fully_qualified_name}.extend(#{names.join(", ")})"
|
911
703
|
end
|
@@ -914,53 +706,44 @@ module RBI
|
|
914
706
|
# Visibility
|
915
707
|
|
916
708
|
class Visibility < NodeWithComments
|
917
|
-
extend T::Sig
|
918
709
|
extend T::Helpers
|
919
710
|
|
920
711
|
abstract!
|
921
712
|
|
922
|
-
|
713
|
+
#: Symbol
|
923
714
|
attr_reader :visibility
|
924
715
|
|
925
|
-
|
716
|
+
#: (Symbol visibility, ?loc: Loc?, ?comments: Array[Comment]) -> void
|
926
717
|
def initialize(visibility, loc: nil, comments: [])
|
927
718
|
super(loc: loc, comments: comments)
|
928
719
|
@visibility = visibility
|
929
720
|
end
|
930
721
|
|
931
|
-
|
722
|
+
#: (Object? other) -> bool
|
932
723
|
def ==(other)
|
933
724
|
return false unless other.is_a?(Visibility)
|
934
725
|
|
935
726
|
visibility == other.visibility
|
936
727
|
end
|
937
728
|
|
938
|
-
|
729
|
+
#: -> bool
|
939
730
|
def public?
|
940
731
|
visibility == :public
|
941
732
|
end
|
942
733
|
|
943
|
-
|
734
|
+
#: -> bool
|
944
735
|
def protected?
|
945
736
|
visibility == :protected
|
946
737
|
end
|
947
738
|
|
948
|
-
|
739
|
+
#: -> bool
|
949
740
|
def private?
|
950
741
|
visibility == :private
|
951
742
|
end
|
952
743
|
end
|
953
744
|
|
954
745
|
class Public < Visibility
|
955
|
-
|
956
|
-
|
957
|
-
sig do
|
958
|
-
params(
|
959
|
-
loc: T.nilable(Loc),
|
960
|
-
comments: T::Array[Comment],
|
961
|
-
block: T.nilable(T.proc.params(node: Public).void),
|
962
|
-
).void
|
963
|
-
end
|
746
|
+
#: (?loc: Loc?, ?comments: Array[Comment]) ?{ (Public node) -> void } -> void
|
964
747
|
def initialize(loc: nil, comments: [], &block)
|
965
748
|
super(:public, loc: loc, comments: comments)
|
966
749
|
block&.call(self)
|
@@ -968,15 +751,7 @@ module RBI
|
|
968
751
|
end
|
969
752
|
|
970
753
|
class Protected < Visibility
|
971
|
-
|
972
|
-
|
973
|
-
sig do
|
974
|
-
params(
|
975
|
-
loc: T.nilable(Loc),
|
976
|
-
comments: T::Array[Comment],
|
977
|
-
block: T.nilable(T.proc.params(node: Protected).void),
|
978
|
-
).void
|
979
|
-
end
|
754
|
+
#: (?loc: Loc?, ?comments: Array[Comment]) ?{ (Protected node) -> void } -> void
|
980
755
|
def initialize(loc: nil, comments: [], &block)
|
981
756
|
super(:protected, loc: loc, comments: comments)
|
982
757
|
block&.call(self)
|
@@ -984,15 +759,7 @@ module RBI
|
|
984
759
|
end
|
985
760
|
|
986
761
|
class Private < Visibility
|
987
|
-
|
988
|
-
|
989
|
-
sig do
|
990
|
-
params(
|
991
|
-
loc: T.nilable(Loc),
|
992
|
-
comments: T::Array[Comment],
|
993
|
-
block: T.nilable(T.proc.params(node: Private).void),
|
994
|
-
).void
|
995
|
-
end
|
762
|
+
#: (?loc: Loc?, ?comments: Array[Comment]) ?{ (Private node) -> void } -> void
|
996
763
|
def initialize(loc: nil, comments: [], &block)
|
997
764
|
super(:private, loc: loc, comments: comments)
|
998
765
|
block&.call(self)
|
@@ -1002,23 +769,13 @@ module RBI
|
|
1002
769
|
# Sends
|
1003
770
|
|
1004
771
|
class Send < NodeWithComments
|
1005
|
-
|
1006
|
-
|
1007
|
-
sig { returns(String) }
|
772
|
+
#: String
|
1008
773
|
attr_reader :method
|
1009
774
|
|
1010
|
-
|
775
|
+
#: Array[Arg]
|
1011
776
|
attr_reader :args
|
1012
777
|
|
1013
|
-
|
1014
|
-
params(
|
1015
|
-
method: String,
|
1016
|
-
args: T::Array[Arg],
|
1017
|
-
loc: T.nilable(Loc),
|
1018
|
-
comments: T::Array[Comment],
|
1019
|
-
block: T.nilable(T.proc.params(node: Send).void),
|
1020
|
-
).void
|
1021
|
-
end
|
778
|
+
#: (String method, ?Array[Arg] args, ?loc: Loc?, ?comments: Array[Comment]) ?{ (Send node) -> void } -> void
|
1022
779
|
def initialize(method, args = [], loc: nil, comments: [], &block)
|
1023
780
|
super(loc: loc, comments: comments)
|
1024
781
|
@method = method
|
@@ -1026,74 +783,59 @@ module RBI
|
|
1026
783
|
block&.call(self)
|
1027
784
|
end
|
1028
785
|
|
1029
|
-
|
786
|
+
#: (Arg arg) -> void
|
1030
787
|
def <<(arg)
|
1031
788
|
@args << arg
|
1032
789
|
end
|
1033
790
|
|
1034
|
-
|
791
|
+
#: (Object? other) -> bool
|
1035
792
|
def ==(other)
|
1036
793
|
Send === other && method == other.method && args == other.args
|
1037
794
|
end
|
1038
795
|
|
1039
|
-
|
796
|
+
#: -> String
|
1040
797
|
def to_s
|
1041
798
|
"#{parent_scope&.fully_qualified_name}.#{method}(#{args.join(", ")})"
|
1042
799
|
end
|
1043
800
|
end
|
1044
801
|
|
1045
802
|
class Arg < Node
|
1046
|
-
|
1047
|
-
|
1048
|
-
sig { returns(String) }
|
803
|
+
#: String
|
1049
804
|
attr_reader :value
|
1050
805
|
|
1051
|
-
|
1052
|
-
params(
|
1053
|
-
value: String,
|
1054
|
-
loc: T.nilable(Loc),
|
1055
|
-
).void
|
1056
|
-
end
|
806
|
+
#: (String value, ?loc: Loc?) -> void
|
1057
807
|
def initialize(value, loc: nil)
|
1058
808
|
super(loc: loc)
|
1059
809
|
@value = value
|
1060
810
|
end
|
1061
811
|
|
1062
|
-
|
812
|
+
#: (Object? other) -> bool
|
1063
813
|
def ==(other)
|
1064
814
|
Arg === other && value == other.value
|
1065
815
|
end
|
1066
816
|
|
1067
|
-
|
817
|
+
#: -> String
|
1068
818
|
def to_s
|
1069
819
|
value
|
1070
820
|
end
|
1071
821
|
end
|
1072
822
|
|
1073
823
|
class KwArg < Arg
|
1074
|
-
|
1075
|
-
|
1076
|
-
sig { returns(String) }
|
824
|
+
#: String
|
1077
825
|
attr_reader :keyword
|
1078
826
|
|
1079
|
-
|
1080
|
-
params(
|
1081
|
-
keyword: String,
|
1082
|
-
value: String,
|
1083
|
-
loc: T.nilable(Loc),
|
1084
|
-
).void
|
1085
|
-
end
|
827
|
+
#: (String keyword, String value, ?loc: Loc?) -> void
|
1086
828
|
def initialize(keyword, value, loc: nil)
|
1087
829
|
super(value, loc: loc)
|
1088
830
|
@keyword = keyword
|
1089
831
|
end
|
1090
832
|
|
1091
|
-
|
833
|
+
#: (Object? other) -> bool
|
1092
834
|
def ==(other)
|
1093
835
|
KwArg === other && value == other.value && keyword == other.keyword
|
1094
836
|
end
|
1095
837
|
|
1096
|
-
|
838
|
+
#: -> String
|
1097
839
|
def to_s
|
1098
840
|
"#{keyword}: #{value}"
|
1099
841
|
end
|
@@ -1102,39 +844,22 @@ module RBI
|
|
1102
844
|
# Sorbet's sigs
|
1103
845
|
|
1104
846
|
class Sig < NodeWithComments
|
1105
|
-
|
1106
|
-
|
1107
|
-
sig { returns(T::Array[SigParam]) }
|
847
|
+
#: Array[SigParam]
|
1108
848
|
attr_reader :params
|
1109
849
|
|
1110
|
-
|
850
|
+
#: (Type | String)
|
1111
851
|
attr_accessor :return_type
|
1112
852
|
|
1113
|
-
|
853
|
+
#: bool
|
1114
854
|
attr_accessor :is_abstract, :is_override, :is_overridable, :is_final, :allow_incompatible_override
|
1115
855
|
|
1116
|
-
|
856
|
+
#: Array[String]
|
1117
857
|
attr_reader :type_params
|
1118
858
|
|
1119
|
-
|
859
|
+
#: Symbol?
|
1120
860
|
attr_accessor :checked
|
1121
861
|
|
1122
|
-
|
1123
|
-
params(
|
1124
|
-
params: T::Array[SigParam],
|
1125
|
-
return_type: T.any(Type, String),
|
1126
|
-
is_abstract: T::Boolean,
|
1127
|
-
is_override: T::Boolean,
|
1128
|
-
is_overridable: T::Boolean,
|
1129
|
-
is_final: T::Boolean,
|
1130
|
-
allow_incompatible_override: T::Boolean,
|
1131
|
-
type_params: T::Array[String],
|
1132
|
-
checked: T.nilable(Symbol),
|
1133
|
-
loc: T.nilable(Loc),
|
1134
|
-
comments: T::Array[Comment],
|
1135
|
-
block: T.nilable(T.proc.params(node: Sig).void),
|
1136
|
-
).void
|
1137
|
-
end
|
862
|
+
#: (?params: Array[SigParam], ?return_type: (Type | String), ?is_abstract: bool, ?is_override: bool, ?is_overridable: bool, ?is_final: bool, ?allow_incompatible_override: bool, ?type_params: Array[String], ?checked: Symbol?, ?loc: Loc?, ?comments: Array[Comment]) ?{ (Sig node) -> void } -> void
|
1138
863
|
def initialize(
|
1139
864
|
params: [],
|
1140
865
|
return_type: "void",
|
@@ -1162,17 +887,17 @@ module RBI
|
|
1162
887
|
block&.call(self)
|
1163
888
|
end
|
1164
889
|
|
1165
|
-
|
890
|
+
#: (SigParam param) -> void
|
1166
891
|
def <<(param)
|
1167
892
|
@params << param
|
1168
893
|
end
|
1169
894
|
|
1170
|
-
|
895
|
+
#: (String name, (Type | String) type) -> void
|
1171
896
|
def add_param(name, type)
|
1172
897
|
@params << SigParam.new(name, type)
|
1173
898
|
end
|
1174
899
|
|
1175
|
-
|
900
|
+
#: (Object other) -> bool
|
1176
901
|
def ==(other)
|
1177
902
|
return false unless other.is_a?(Sig)
|
1178
903
|
|
@@ -1183,23 +908,13 @@ module RBI
|
|
1183
908
|
end
|
1184
909
|
|
1185
910
|
class SigParam < NodeWithComments
|
1186
|
-
|
1187
|
-
|
1188
|
-
sig { returns(String) }
|
911
|
+
#: String
|
1189
912
|
attr_reader :name
|
1190
913
|
|
1191
|
-
|
914
|
+
#: (Type | String)
|
1192
915
|
attr_reader :type
|
1193
916
|
|
1194
|
-
|
1195
|
-
params(
|
1196
|
-
name: String,
|
1197
|
-
type: T.any(Type, String),
|
1198
|
-
loc: T.nilable(Loc),
|
1199
|
-
comments: T::Array[Comment],
|
1200
|
-
block: T.nilable(T.proc.params(node: SigParam).void),
|
1201
|
-
).void
|
1202
|
-
end
|
917
|
+
#: (String name, (Type | String) type, ?loc: Loc?, ?comments: Array[Comment]) ?{ (SigParam node) -> void } -> void
|
1203
918
|
def initialize(name, type, loc: nil, comments: [], &block)
|
1204
919
|
super(loc: loc, comments: comments)
|
1205
920
|
@name = name
|
@@ -1207,7 +922,7 @@ module RBI
|
|
1207
922
|
block&.call(self)
|
1208
923
|
end
|
1209
924
|
|
1210
|
-
|
925
|
+
#: (Object other) -> bool
|
1211
926
|
def ==(other)
|
1212
927
|
other.is_a?(SigParam) && name == other.name && type.to_s == other.type.to_s
|
1213
928
|
end
|
@@ -1216,16 +931,7 @@ module RBI
|
|
1216
931
|
# Sorbet's T::Struct
|
1217
932
|
|
1218
933
|
class TStruct < Class
|
1219
|
-
|
1220
|
-
|
1221
|
-
sig do
|
1222
|
-
params(
|
1223
|
-
name: String,
|
1224
|
-
loc: T.nilable(Loc),
|
1225
|
-
comments: T::Array[Comment],
|
1226
|
-
block: T.nilable(T.proc.params(klass: TStruct).void),
|
1227
|
-
).void
|
1228
|
-
end
|
934
|
+
#: (String name, ?loc: Loc?, ?comments: Array[Comment]) ?{ (TStruct klass) -> void } -> void
|
1229
935
|
def initialize(name, loc: nil, comments: [], &block)
|
1230
936
|
super(name, superclass_name: "::T::Struct", loc: loc, comments: comments) {}
|
1231
937
|
block&.call(self)
|
@@ -1238,24 +944,16 @@ module RBI
|
|
1238
944
|
|
1239
945
|
abstract!
|
1240
946
|
|
1241
|
-
|
947
|
+
#: String
|
1242
948
|
attr_accessor :name
|
1243
949
|
|
1244
|
-
|
950
|
+
#: (Type | String)
|
1245
951
|
attr_accessor :type
|
1246
952
|
|
1247
|
-
|
953
|
+
#: String?
|
1248
954
|
attr_accessor :default
|
1249
955
|
|
1250
|
-
|
1251
|
-
params(
|
1252
|
-
name: String,
|
1253
|
-
type: T.any(Type, String),
|
1254
|
-
default: T.nilable(String),
|
1255
|
-
loc: T.nilable(Loc),
|
1256
|
-
comments: T::Array[Comment],
|
1257
|
-
).void
|
1258
|
-
end
|
956
|
+
#: (String name, (Type | String) type, ?default: String?, ?loc: Loc?, ?comments: Array[Comment]) -> void
|
1259
957
|
def initialize(name, type, default: nil, loc: nil, comments: [])
|
1260
958
|
super(loc: loc, comments: comments)
|
1261
959
|
@name = name
|
@@ -1268,60 +966,42 @@ module RBI
|
|
1268
966
|
end
|
1269
967
|
|
1270
968
|
class TStructConst < TStructField
|
1271
|
-
|
1272
|
-
|
1273
|
-
sig do
|
1274
|
-
params(
|
1275
|
-
name: String,
|
1276
|
-
type: T.any(Type, String),
|
1277
|
-
default: T.nilable(String),
|
1278
|
-
loc: T.nilable(Loc),
|
1279
|
-
comments: T::Array[Comment],
|
1280
|
-
block: T.nilable(T.proc.params(node: TStructConst).void),
|
1281
|
-
).void
|
1282
|
-
end
|
969
|
+
#: (String name, (Type | String) type, ?default: String?, ?loc: Loc?, ?comments: Array[Comment]) ?{ (TStructConst node) -> void } -> void
|
1283
970
|
def initialize(name, type, default: nil, loc: nil, comments: [], &block)
|
1284
971
|
super(name, type, default: default, loc: loc, comments: comments)
|
1285
972
|
block&.call(self)
|
1286
973
|
end
|
1287
974
|
|
1288
|
-
|
975
|
+
# @override
|
976
|
+
#: -> Array[String]
|
1289
977
|
def fully_qualified_names
|
1290
978
|
parent_name = parent_scope&.fully_qualified_name
|
1291
979
|
["#{parent_name}##{name}"]
|
1292
980
|
end
|
1293
981
|
|
1294
|
-
|
982
|
+
# @override
|
983
|
+
#: -> String
|
1295
984
|
def to_s
|
1296
985
|
"#{parent_scope&.fully_qualified_name}.const(:#{name})"
|
1297
986
|
end
|
1298
987
|
end
|
1299
988
|
|
1300
989
|
class TStructProp < TStructField
|
1301
|
-
|
1302
|
-
|
1303
|
-
sig do
|
1304
|
-
params(
|
1305
|
-
name: String,
|
1306
|
-
type: T.any(Type, String),
|
1307
|
-
default: T.nilable(String),
|
1308
|
-
loc: T.nilable(Loc),
|
1309
|
-
comments: T::Array[Comment],
|
1310
|
-
block: T.nilable(T.proc.params(node: TStructProp).void),
|
1311
|
-
).void
|
1312
|
-
end
|
990
|
+
#: (String name, (Type | String) type, ?default: String?, ?loc: Loc?, ?comments: Array[Comment]) ?{ (TStructProp node) -> void } -> void
|
1313
991
|
def initialize(name, type, default: nil, loc: nil, comments: [], &block)
|
1314
992
|
super(name, type, default: default, loc: loc, comments: comments)
|
1315
993
|
block&.call(self)
|
1316
994
|
end
|
1317
995
|
|
1318
|
-
|
996
|
+
# @override
|
997
|
+
#: -> Array[String]
|
1319
998
|
def fully_qualified_names
|
1320
999
|
parent_name = parent_scope&.fully_qualified_name
|
1321
1000
|
["#{parent_name}##{name}", "#{parent_name}##{name}="]
|
1322
1001
|
end
|
1323
1002
|
|
1324
|
-
|
1003
|
+
# @override
|
1004
|
+
#: -> String
|
1325
1005
|
def to_s
|
1326
1006
|
"#{parent_scope&.fully_qualified_name}.prop(:#{name})"
|
1327
1007
|
end
|
@@ -1330,16 +1010,7 @@ module RBI
|
|
1330
1010
|
# Sorbet's T::Enum
|
1331
1011
|
|
1332
1012
|
class TEnum < Class
|
1333
|
-
|
1334
|
-
|
1335
|
-
sig do
|
1336
|
-
params(
|
1337
|
-
name: String,
|
1338
|
-
loc: T.nilable(Loc),
|
1339
|
-
comments: T::Array[Comment],
|
1340
|
-
block: T.nilable(T.proc.params(klass: TEnum).void),
|
1341
|
-
).void
|
1342
|
-
end
|
1013
|
+
#: (String name, ?loc: Loc?, ?comments: Array[Comment]) ?{ (TEnum klass) -> void } -> void
|
1343
1014
|
def initialize(name, loc: nil, comments: [], &block)
|
1344
1015
|
super(name, superclass_name: "::T::Enum", loc: loc, comments: comments) {}
|
1345
1016
|
block&.call(self)
|
@@ -1347,26 +1018,20 @@ module RBI
|
|
1347
1018
|
end
|
1348
1019
|
|
1349
1020
|
class TEnumBlock < Scope
|
1350
|
-
|
1351
|
-
|
1352
|
-
sig do
|
1353
|
-
params(
|
1354
|
-
loc: T.nilable(Loc),
|
1355
|
-
comments: T::Array[Comment],
|
1356
|
-
block: T.nilable(T.proc.params(node: TEnumBlock).void),
|
1357
|
-
).void
|
1358
|
-
end
|
1021
|
+
#: (?loc: Loc?, ?comments: Array[Comment]) ?{ (TEnumBlock node) -> void } -> void
|
1359
1022
|
def initialize(loc: nil, comments: [], &block)
|
1360
1023
|
super {}
|
1361
1024
|
block&.call(self)
|
1362
1025
|
end
|
1363
1026
|
|
1364
|
-
|
1027
|
+
# @override
|
1028
|
+
#: -> String
|
1365
1029
|
def fully_qualified_name
|
1366
1030
|
"#{parent_scope&.fully_qualified_name}.enums"
|
1367
1031
|
end
|
1368
1032
|
|
1369
|
-
|
1033
|
+
# @override
|
1034
|
+
#: -> String
|
1370
1035
|
def to_s
|
1371
1036
|
fully_qualified_name
|
1372
1037
|
end
|
@@ -1375,46 +1040,28 @@ module RBI
|
|
1375
1040
|
# Sorbet's misc.
|
1376
1041
|
|
1377
1042
|
class Helper < NodeWithComments
|
1378
|
-
|
1379
|
-
|
1380
|
-
sig { returns(String) }
|
1043
|
+
#: String
|
1381
1044
|
attr_reader :name
|
1382
1045
|
|
1383
|
-
|
1384
|
-
params(
|
1385
|
-
name: String,
|
1386
|
-
loc: T.nilable(Loc),
|
1387
|
-
comments: T::Array[Comment],
|
1388
|
-
block: T.nilable(T.proc.params(node: Helper).void),
|
1389
|
-
).void
|
1390
|
-
end
|
1046
|
+
#: (String name, ?loc: Loc?, ?comments: Array[Comment]) ?{ (Helper node) -> void } -> void
|
1391
1047
|
def initialize(name, loc: nil, comments: [], &block)
|
1392
1048
|
super(loc: loc, comments: comments)
|
1393
1049
|
@name = name
|
1394
1050
|
block&.call(self)
|
1395
1051
|
end
|
1396
1052
|
|
1397
|
-
|
1053
|
+
# @override
|
1054
|
+
#: -> String
|
1398
1055
|
def to_s
|
1399
1056
|
"#{parent_scope&.fully_qualified_name}.#{name}!"
|
1400
1057
|
end
|
1401
1058
|
end
|
1402
1059
|
|
1403
1060
|
class TypeMember < NodeWithComments
|
1404
|
-
|
1405
|
-
|
1406
|
-
sig { returns(String) }
|
1061
|
+
#: String
|
1407
1062
|
attr_reader :name, :value
|
1408
1063
|
|
1409
|
-
|
1410
|
-
params(
|
1411
|
-
name: String,
|
1412
|
-
value: String,
|
1413
|
-
loc: T.nilable(Loc),
|
1414
|
-
comments: T::Array[Comment],
|
1415
|
-
block: T.nilable(T.proc.params(node: TypeMember).void),
|
1416
|
-
).void
|
1417
|
-
end
|
1064
|
+
#: (String name, String value, ?loc: Loc?, ?comments: Array[Comment]) ?{ (TypeMember node) -> void } -> void
|
1418
1065
|
def initialize(name, value, loc: nil, comments: [], &block)
|
1419
1066
|
super(loc: loc, comments: comments)
|
1420
1067
|
@name = name
|
@@ -1422,61 +1069,46 @@ module RBI
|
|
1422
1069
|
block&.call(self)
|
1423
1070
|
end
|
1424
1071
|
|
1425
|
-
|
1072
|
+
#: -> String
|
1426
1073
|
def fully_qualified_name
|
1427
1074
|
return name if name.start_with?("::")
|
1428
1075
|
|
1429
1076
|
"#{parent_scope&.fully_qualified_name}::#{name}"
|
1430
1077
|
end
|
1431
1078
|
|
1432
|
-
|
1079
|
+
# @override
|
1080
|
+
#: -> String
|
1433
1081
|
def to_s
|
1434
1082
|
fully_qualified_name
|
1435
1083
|
end
|
1436
1084
|
end
|
1437
1085
|
|
1438
1086
|
class MixesInClassMethods < Mixin
|
1439
|
-
|
1440
|
-
|
1441
|
-
sig do
|
1442
|
-
params(
|
1443
|
-
name: String,
|
1444
|
-
names: String,
|
1445
|
-
loc: T.nilable(Loc),
|
1446
|
-
comments: T::Array[Comment],
|
1447
|
-
block: T.nilable(T.proc.params(node: MixesInClassMethods).void),
|
1448
|
-
).void
|
1449
|
-
end
|
1087
|
+
#: (String name, *String names, ?loc: Loc?, ?comments: Array[Comment]) ?{ (MixesInClassMethods node) -> void } -> void
|
1450
1088
|
def initialize(name, *names, loc: nil, comments: [], &block)
|
1451
1089
|
super(name, names, loc: loc, comments: comments)
|
1452
1090
|
block&.call(self)
|
1453
1091
|
end
|
1454
1092
|
|
1455
|
-
|
1093
|
+
# @override
|
1094
|
+
#: -> String
|
1456
1095
|
def to_s
|
1457
1096
|
"#{parent_scope&.fully_qualified_name}.mixes_in_class_methods(#{names.join(", ")})"
|
1458
1097
|
end
|
1459
1098
|
end
|
1460
1099
|
|
1461
1100
|
class RequiresAncestor < NodeWithComments
|
1462
|
-
|
1463
|
-
|
1464
|
-
sig { returns(String) }
|
1101
|
+
#: String
|
1465
1102
|
attr_reader :name
|
1466
1103
|
|
1467
|
-
|
1468
|
-
params(
|
1469
|
-
name: String,
|
1470
|
-
loc: T.nilable(Loc),
|
1471
|
-
comments: T::Array[Comment],
|
1472
|
-
).void
|
1473
|
-
end
|
1104
|
+
#: (String name, ?loc: Loc?, ?comments: Array[Comment]) -> void
|
1474
1105
|
def initialize(name, loc: nil, comments: [])
|
1475
1106
|
super(loc: loc, comments: comments)
|
1476
1107
|
@name = name
|
1477
1108
|
end
|
1478
1109
|
|
1479
|
-
|
1110
|
+
# @override
|
1111
|
+
#: -> String
|
1480
1112
|
def to_s
|
1481
1113
|
"#{parent_scope&.fully_qualified_name}.requires_ancestor(#{name})"
|
1482
1114
|
end
|