parlour 3.0.0 → 5.0.0.beta.3

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.
Files changed (68) hide show
  1. checksums.yaml +4 -4
  2. data/.github/ISSUE_TEMPLATE/bug-report.md +0 -0
  3. data/.github/ISSUE_TEMPLATE/feature-request.md +0 -0
  4. data/.gitignore +1 -1
  5. data/.parlour +5 -0
  6. data/.rspec +0 -0
  7. data/.travis.yml +0 -0
  8. data/CHANGELOG.md +57 -0
  9. data/CODE_OF_CONDUCT.md +0 -0
  10. data/Gemfile +0 -0
  11. data/LICENSE.txt +0 -0
  12. data/README.md +233 -19
  13. data/Rakefile +0 -0
  14. data/exe/parlour +109 -4
  15. data/lib/parlour.rb +27 -1
  16. data/lib/parlour/conflict_resolver.rb +31 -9
  17. data/lib/parlour/conversion/converter.rb +34 -0
  18. data/lib/parlour/conversion/rbi_to_rbs.rb +223 -0
  19. data/lib/parlour/debugging.rb +0 -0
  20. data/lib/parlour/detached_rbi_generator.rb +1 -6
  21. data/lib/parlour/detached_rbs_generator.rb +25 -0
  22. data/lib/parlour/generator.rb +34 -0
  23. data/lib/parlour/kernel_hack.rb +0 -0
  24. data/lib/parlour/options.rb +71 -0
  25. data/lib/parlour/parse_error.rb +0 -0
  26. data/lib/parlour/plugin.rb +1 -1
  27. data/lib/parlour/rbi_generator.rb +24 -37
  28. data/lib/parlour/rbi_generator/arbitrary.rb +5 -2
  29. data/lib/parlour/rbi_generator/attribute.rb +14 -5
  30. data/lib/parlour/rbi_generator/class_namespace.rb +8 -3
  31. data/lib/parlour/rbi_generator/constant.rb +28 -8
  32. data/lib/parlour/rbi_generator/enum_class_namespace.rb +8 -3
  33. data/lib/parlour/rbi_generator/extend.rb +5 -2
  34. data/lib/parlour/rbi_generator/include.rb +5 -2
  35. data/lib/parlour/rbi_generator/method.rb +15 -10
  36. data/lib/parlour/rbi_generator/module_namespace.rb +7 -2
  37. data/lib/parlour/rbi_generator/namespace.rb +68 -18
  38. data/lib/parlour/rbi_generator/parameter.rb +13 -7
  39. data/lib/parlour/rbi_generator/rbi_object.rb +19 -78
  40. data/lib/parlour/rbi_generator/struct_class_namespace.rb +9 -2
  41. data/lib/parlour/rbi_generator/struct_prop.rb +12 -9
  42. data/lib/parlour/rbi_generator/type_alias.rb +101 -0
  43. data/lib/parlour/rbs_generator.rb +24 -0
  44. data/lib/parlour/rbs_generator/arbitrary.rb +92 -0
  45. data/lib/parlour/rbs_generator/attribute.rb +82 -0
  46. data/lib/parlour/rbs_generator/block.rb +49 -0
  47. data/lib/parlour/rbs_generator/class_namespace.rb +106 -0
  48. data/lib/parlour/rbs_generator/constant.rb +95 -0
  49. data/lib/parlour/rbs_generator/extend.rb +92 -0
  50. data/lib/parlour/rbs_generator/include.rb +92 -0
  51. data/lib/parlour/rbs_generator/interface_namespace.rb +34 -0
  52. data/lib/parlour/rbs_generator/method.rb +146 -0
  53. data/lib/parlour/rbs_generator/method_signature.rb +104 -0
  54. data/lib/parlour/rbs_generator/module_namespace.rb +35 -0
  55. data/lib/parlour/rbs_generator/namespace.rb +627 -0
  56. data/lib/parlour/rbs_generator/parameter.rb +146 -0
  57. data/lib/parlour/rbs_generator/rbs_object.rb +78 -0
  58. data/lib/parlour/rbs_generator/type_alias.rb +96 -0
  59. data/lib/parlour/type_loader.rb +25 -12
  60. data/lib/parlour/type_parser.rb +174 -17
  61. data/lib/parlour/typed_object.rb +87 -0
  62. data/lib/parlour/types.rb +539 -0
  63. data/lib/parlour/version.rb +1 -1
  64. data/parlour.gemspec +1 -1
  65. data/plugin_examples/foobar_plugin.rb +0 -0
  66. data/rbi/parlour.rbi +1856 -0
  67. metadata +35 -10
  68. data/lib/parlour/rbi_generator/options.rb +0 -74
@@ -1,5 +1,5 @@
1
1
  # typed: strong
2
2
  module Parlour
3
3
  # The library version.
4
- VERSION = '3.0.0'
4
+ VERSION = '5.0.0.beta.3'
5
5
  end
@@ -9,7 +9,7 @@ Gem::Specification.new do |spec|
9
9
  spec.authors = ["Aaron Christiansen"]
10
10
  spec.email = ["hello@aaronc.cc"]
11
11
 
12
- spec.summary = %q{An RBI generator, merger and parser for Sorbet}
12
+ spec.summary = %q{A type information generator, merger and parser for Sorbet and Ruby 3/Steep}
13
13
  spec.homepage = "https://github.com/AaronC81/parlour"
14
14
  spec.license = "MIT"
15
15
 
File without changes
@@ -0,0 +1,1856 @@
1
+ # typed: strong
2
+ module Kernel
3
+ end
4
+
5
+ module Parlour
6
+ VERSION = '5.0.0.beta.3'
7
+
8
+ class ConflictResolver
9
+ extend T::Sig
10
+
11
+ sig { params(namespace: RbiGenerator::Namespace, resolver: T.proc.params(
12
+ desc: String,
13
+ choices: T::Array[RbiGenerator::RbiObject]
14
+ ).returns(T.nilable(RbiGenerator::RbiObject))).void }
15
+ def resolve_conflicts(namespace, &resolver); end
16
+
17
+ sig { params(arr: T::Array[T.untyped]).returns(T.nilable(Symbol)) }
18
+ def merge_strategy(arr); end
19
+
20
+ sig { params(arr: T::Array[T.untyped]).returns(T::Boolean) }
21
+ def all_eql?(arr); end
22
+
23
+ sig { params(namespace: RbiGenerator::Namespace, name: T.nilable(String)).void }
24
+ def deduplicate_mixins_of_name(namespace, name); end
25
+ end
26
+
27
+ module Debugging
28
+ extend T::Sig
29
+
30
+ sig { params(value: T::Boolean).returns(T::Boolean) }
31
+ def self.debug_mode=(value); end
32
+
33
+ sig { returns(T::Boolean) }
34
+ def self.debug_mode?; end
35
+
36
+ sig { params(object: T.untyped, message: String).void }
37
+ def self.debug_puts(object, message); end
38
+
39
+ sig { params(object: T.untyped).returns(String) }
40
+ def self.name_for_debug_caller(object); end
41
+
42
+ module Tree
43
+ extend T::Sig
44
+ INDENT_SPACES = 2
45
+
46
+ sig { params(message: String).returns(String) }
47
+ def self.begin(message); end
48
+
49
+ sig { params(message: String).returns(String) }
50
+ def self.here(message); end
51
+
52
+ sig { params(message: String).returns(String) }
53
+ def self.end(message); end
54
+
55
+ sig { returns(T.untyped) }
56
+ def self.line_prefix; end
57
+
58
+ sig { returns(T.untyped) }
59
+ def self.text_prefix; end
60
+ end
61
+ end
62
+
63
+ class DetachedRbsGenerator < RbsGenerator
64
+ sig { returns(T.untyped) }
65
+ def detached!; end
66
+
67
+ sig { override.returns(Options) }
68
+ def options; end
69
+
70
+ sig { override.returns(T.nilable(Plugin)) }
71
+ def current_plugin; end
72
+
73
+ sig { override.returns(String) }
74
+ def rbs; end
75
+ end
76
+
77
+ class Generator
78
+ extend T::Sig
79
+
80
+ sig { params(break_params: Integer, tab_size: Integer, sort_namespaces: T::Boolean).void }
81
+ def initialize(break_params: 4, tab_size: 2, sort_namespaces: false); end
82
+
83
+ sig { returns(Options) }
84
+ attr_reader :options
85
+
86
+ sig { returns(T.nilable(Plugin)) }
87
+ attr_accessor :current_plugin
88
+ end
89
+
90
+ class Options
91
+ extend T::Sig
92
+
93
+ sig { params(break_params: Integer, tab_size: Integer, sort_namespaces: T::Boolean).void }
94
+ def initialize(break_params:, tab_size:, sort_namespaces:); end
95
+
96
+ sig { returns(Integer) }
97
+ attr_reader :break_params
98
+
99
+ sig { returns(Integer) }
100
+ attr_reader :tab_size
101
+
102
+ sig { returns(T::Boolean) }
103
+ attr_reader :sort_namespaces
104
+
105
+ sig { params(level: Integer, str: String).returns(String) }
106
+ def indented(level, str); end
107
+ end
108
+
109
+ class ParseError < StandardError
110
+ extend T::Sig
111
+
112
+ sig { returns(Parser::Source::Buffer) }
113
+ attr_reader :buffer
114
+
115
+ sig { returns(Parser::Source::Range) }
116
+ attr_reader :range
117
+
118
+ sig { params(buffer: T.untyped, range: T.untyped).returns(T.untyped) }
119
+ def initialize(buffer, range); end
120
+ end
121
+
122
+ class Plugin
123
+ abstract!
124
+
125
+ extend T::Sig
126
+ extend T::Helpers
127
+
128
+ sig { returns(T::Hash[String, T.class_of(Plugin)]) }
129
+ def self.registered_plugins; end
130
+
131
+ sig { params(new_plugin: T.class_of(Plugin)).void }
132
+ def self.inherited(new_plugin); end
133
+
134
+ sig { params(plugins: T::Array[Plugin], generator: RbiGenerator, allow_failure: T::Boolean).void }
135
+ def self.run_plugins(plugins, generator, allow_failure: true); end
136
+
137
+ sig { params(options: T::Hash[T.untyped, T.untyped]).void }
138
+ def initialize(options); end
139
+
140
+ sig { abstract.params(root: RbiGenerator::Namespace).void }
141
+ def generate(root); end
142
+
143
+ sig { returns(T.nilable(String)) }
144
+ attr_accessor :strictness
145
+ end
146
+
147
+ module TypeLoader
148
+ extend T::Sig
149
+
150
+ sig { params(source: String, filename: T.nilable(String), generator: T.nilable(RbiGenerator)).returns(RbiGenerator::Namespace) }
151
+ def self.load_source(source, filename = nil, generator: nil); end
152
+
153
+ sig { params(filename: String, generator: T.nilable(RbiGenerator)).returns(RbiGenerator::Namespace) }
154
+ def self.load_file(filename, generator: nil); end
155
+
156
+ sig do
157
+ params(
158
+ root: String,
159
+ inclusions: T::Array[String],
160
+ exclusions: T::Array[String],
161
+ generator: T.nilable(RbiGenerator)
162
+ ).returns(RbiGenerator::Namespace)
163
+ end
164
+ def self.load_project(root, inclusions: ['.'], exclusions: [], generator: nil); end
165
+ end
166
+
167
+ class TypeParser
168
+ extend T::Sig
169
+
170
+ class NodePath
171
+ extend T::Sig
172
+
173
+ sig { returns(T::Array[Integer]) }
174
+ attr_reader :indices
175
+
176
+ sig { params(indices: T::Array[Integer]).void }
177
+ def initialize(indices); end
178
+
179
+ sig { returns(NodePath) }
180
+ def parent; end
181
+
182
+ sig { params(index: Integer).returns(NodePath) }
183
+ def child(index); end
184
+
185
+ sig { params(offset: Integer).returns(NodePath) }
186
+ def sibling(offset); end
187
+
188
+ sig { params(start: Parser::AST::Node).returns(Parser::AST::Node) }
189
+ def traverse(start); end
190
+ end
191
+
192
+ sig { params(ast: Parser::AST::Node, unknown_node_errors: T::Boolean, generator: T.nilable(RbiGenerator)).void }
193
+ def initialize(ast, unknown_node_errors: false, generator: nil); end
194
+
195
+ sig { params(filename: String, source: String, generator: T.nilable(RbiGenerator)).returns(TypeParser) }
196
+ def self.from_source(filename, source, generator: nil); end
197
+
198
+ sig { returns(Parser::AST::Node) }
199
+ attr_accessor :ast
200
+
201
+ sig { returns(T::Boolean) }
202
+ attr_reader :unknown_node_errors
203
+
204
+ sig { returns(RbiGenerator) }
205
+ attr_accessor :generator
206
+
207
+ sig { returns(RbiGenerator::Namespace) }
208
+ def parse_all; end
209
+
210
+ sig { params(path: NodePath, is_within_eigenclass: T::Boolean).returns(T::Array[RbiGenerator::RbiObject]) }
211
+ def parse_path_to_object(path, is_within_eigenclass: false); end
212
+
213
+ class IntermediateSig < T::Struct
214
+ prop :type_parameters, T.nilable(T::Array[Symbol])
215
+ prop :overridable, T::Boolean
216
+ prop :override, T::Boolean
217
+ prop :abstract, T::Boolean
218
+ prop :final, T::Boolean
219
+ prop :return_type, T.nilable(String)
220
+ prop :params, T.nilable(T::Array[Parser::AST::Node])
221
+
222
+ end
223
+
224
+ sig { params(path: NodePath).returns(IntermediateSig) }
225
+ def parse_sig_into_sig(path); end
226
+
227
+ sig { params(path: NodePath, is_within_eigenclass: T::Boolean).returns(T::Array[RbiGenerator::Method]) }
228
+ def parse_sig_into_methods(path, is_within_eigenclass: false); end
229
+
230
+ sig { params(path: NodePath, is_within_eigenclass: T::Boolean).returns(T::Array[RbiGenerator::Method]) }
231
+ def parse_method_into_methods(path, is_within_eigenclass: false); end
232
+
233
+ sig { params(str: String).returns(Types::Type) }
234
+ def self.parse_single_type(str); end
235
+
236
+ sig { params(node: Parser::AST::Node).returns(Types::Type) }
237
+ def parse_node_to_type(node); end
238
+
239
+ sig { params(msg: String, node: Parser::AST::Node).void }
240
+ def warning(msg, node); end
241
+
242
+ sig { params(node: T.nilable(Parser::AST::Node)).returns(T::Array[Symbol]) }
243
+ def constant_names(node); end
244
+
245
+ sig { params(node: Parser::AST::Node).returns(T::Boolean) }
246
+ def sig_node?(node); end
247
+
248
+ sig { params(path: NodePath).returns(T::Boolean) }
249
+ def previous_sibling_sig_node?(path); end
250
+
251
+ sig { params(node: T.nilable(Parser::AST::Node)).returns(T.nilable(String)) }
252
+ def node_to_s(node); end
253
+
254
+ sig { params(node: T.nilable(Parser::AST::Node), modifier: Symbol).returns(T::Boolean) }
255
+ def body_has_modifier?(node, modifier); end
256
+
257
+ sig { params(node: Parser::AST::Node).returns([T::Array[String], T::Array[String]]) }
258
+ def body_includes_and_extends(node); end
259
+
260
+ sig { params(desc: String, node: T.any(Parser::AST::Node, NodePath)).returns(T.noreturn) }
261
+ def parse_err(desc, node); end
262
+
263
+ sig do
264
+ type_parameters(:A, :B).params(
265
+ a: T::Array[T.type_parameter(:A)],
266
+ fa: T.proc.params(item: T.type_parameter(:A)).returns(T.untyped),
267
+ b: T::Array[T.type_parameter(:B)],
268
+ fb: T.proc.params(item: T.type_parameter(:B)).returns(T.untyped)
269
+ ).returns(T::Array[[T.type_parameter(:A), T.type_parameter(:B)]])
270
+ end
271
+ def zip_by(a, fa, b, fb); end
272
+ end
273
+
274
+ class TypedObject
275
+ abstract!
276
+
277
+ extend T::Sig
278
+ extend T::Helpers
279
+
280
+ sig { params(name: String).void }
281
+ def initialize(name); end
282
+
283
+ sig { returns(T.nilable(Plugin)) }
284
+ attr_reader :generated_by
285
+
286
+ sig { returns(String) }
287
+ attr_reader :name
288
+
289
+ sig { returns(T::Array[String]) }
290
+ attr_reader :comments
291
+
292
+ sig { params(comment: T.any(String, T::Array[String])).void }
293
+ def add_comment(comment); end
294
+
295
+ sig { abstract.returns(String) }
296
+ def describe; end
297
+
298
+ sig { params(indent_level: Integer, options: Options).returns(T::Array[String]) }
299
+ def generate_comments(indent_level, options); end
300
+ end
301
+
302
+ module Types
303
+ TypeLike = T.type_alias { T.any(String, Type) }
304
+
305
+ class Type
306
+ abstract!
307
+
308
+ extend T::Sig
309
+ extend T::Helpers
310
+
311
+ sig { abstract.returns(String) }
312
+ def generate_rbi; end
313
+
314
+ sig { abstract.returns(String) }
315
+ def generate_rbs; end
316
+
317
+ sig { params(type_like: TypeLike).returns(Type) }
318
+ def self.to_type(type_like); end
319
+
320
+ sig { params(type_like: TypeLike).returns(Type) }
321
+ def to_type(type_like); end
322
+
323
+ sig { returns(T.untyped) }
324
+ def hash; end
325
+
326
+ sig { abstract.returns(String) }
327
+ def describe; end
328
+ end
329
+
330
+ class Raw < Type
331
+ sig { params(str: String).void }
332
+ def initialize(str); end
333
+
334
+ sig { returns(String) }
335
+ attr_reader :str
336
+
337
+ sig { params(other: Object).returns(T::Boolean) }
338
+ def ==(other); end
339
+
340
+ sig { override.returns(String) }
341
+ def generate_rbi; end
342
+
343
+ sig { override.returns(String) }
344
+ def generate_rbs; end
345
+
346
+ sig { override.returns(String) }
347
+ def describe; end
348
+ end
349
+
350
+ class Nilable < Type
351
+ sig { params(type: TypeLike).void }
352
+ def initialize(type); end
353
+
354
+ sig { params(other: Object).returns(T::Boolean) }
355
+ def ==(other); end
356
+
357
+ sig { returns(Type) }
358
+ attr_reader :type
359
+
360
+ sig { override.returns(String) }
361
+ def generate_rbi; end
362
+
363
+ sig { override.returns(String) }
364
+ def generate_rbs; end
365
+
366
+ sig { override.returns(String) }
367
+ def describe; end
368
+ end
369
+
370
+ class Union < Type
371
+ sig { params(types: T::Array[TypeLike]).void }
372
+ def initialize(types); end
373
+
374
+ sig { params(other: Object).returns(T::Boolean) }
375
+ def ==(other); end
376
+
377
+ sig { returns(T::Array[Type]) }
378
+ attr_reader :types
379
+
380
+ sig { override.returns(String) }
381
+ def generate_rbi; end
382
+
383
+ sig { override.returns(String) }
384
+ def generate_rbs; end
385
+
386
+ sig { override.returns(String) }
387
+ def describe; end
388
+ end
389
+
390
+ class Intersection < Type
391
+ sig { params(types: T::Array[TypeLike]).void }
392
+ def initialize(types); end
393
+
394
+ sig { params(other: Object).returns(T::Boolean) }
395
+ def ==(other); end
396
+
397
+ sig { returns(T::Array[Type]) }
398
+ attr_reader :types
399
+
400
+ sig { override.returns(String) }
401
+ def generate_rbi; end
402
+
403
+ sig { override.returns(String) }
404
+ def generate_rbs; end
405
+
406
+ sig { override.returns(String) }
407
+ def describe; end
408
+ end
409
+
410
+ class Tuple < Type
411
+ sig { params(types: T::Array[TypeLike]).void }
412
+ def initialize(types); end
413
+
414
+ sig { params(other: Object).returns(T::Boolean) }
415
+ def ==(other); end
416
+
417
+ sig { returns(T::Array[Type]) }
418
+ attr_reader :types
419
+
420
+ sig { override.returns(String) }
421
+ def generate_rbi; end
422
+
423
+ sig { override.returns(String) }
424
+ def generate_rbs; end
425
+
426
+ sig { override.returns(String) }
427
+ def describe; end
428
+ end
429
+
430
+ class SingleElementCollection < Type
431
+ abstract!
432
+
433
+ sig { params(element: TypeLike).void }
434
+ def initialize(element); end
435
+
436
+ sig { returns(Type) }
437
+ attr_reader :element
438
+
439
+ sig { abstract.returns(String) }
440
+ def collection_name; end
441
+
442
+ sig { override.returns(String) }
443
+ def generate_rbi; end
444
+
445
+ sig { override.returns(String) }
446
+ def generate_rbs; end
447
+
448
+ sig { override.returns(String) }
449
+ def describe; end
450
+ end
451
+
452
+ class Array < SingleElementCollection
453
+ sig { override.returns(String) }
454
+ def collection_name; end
455
+
456
+ sig { params(other: Object).returns(T::Boolean) }
457
+ def ==(other); end
458
+ end
459
+
460
+ class Set < SingleElementCollection
461
+ sig { override.returns(String) }
462
+ def collection_name; end
463
+
464
+ sig { params(other: Object).returns(T::Boolean) }
465
+ def ==(other); end
466
+ end
467
+
468
+ class Range < SingleElementCollection
469
+ sig { override.returns(String) }
470
+ def collection_name; end
471
+
472
+ sig { params(other: Object).returns(T::Boolean) }
473
+ def ==(other); end
474
+ end
475
+
476
+ class Enumerable < SingleElementCollection
477
+ sig { override.returns(String) }
478
+ def collection_name; end
479
+
480
+ sig { params(other: Object).returns(T::Boolean) }
481
+ def ==(other); end
482
+ end
483
+
484
+ class Enumerator < SingleElementCollection
485
+ sig { override.returns(String) }
486
+ def collection_name; end
487
+
488
+ sig { params(other: Object).returns(T::Boolean) }
489
+ def ==(other); end
490
+ end
491
+
492
+ class Hash < Type
493
+ sig { params(key: TypeLike, value: TypeLike).void }
494
+ def initialize(key, value); end
495
+
496
+ sig { params(other: Object).returns(T::Boolean) }
497
+ def ==(other); end
498
+
499
+ sig { returns(Type) }
500
+ attr_reader :key
501
+
502
+ sig { returns(Type) }
503
+ attr_reader :value
504
+
505
+ sig { override.returns(String) }
506
+ def generate_rbi; end
507
+
508
+ sig { override.returns(String) }
509
+ def generate_rbs; end
510
+
511
+ sig { override.returns(String) }
512
+ def describe; end
513
+ end
514
+
515
+ class Record < Type
516
+ sig { params(keys_to_types: T::Hash[Symbol, TypeLike]).void }
517
+ def initialize(keys_to_types); end
518
+
519
+ sig { params(other: Object).returns(T::Boolean) }
520
+ def ==(other); end
521
+
522
+ sig { returns(T::Hash[Symbol, Type]) }
523
+ attr_reader :keys_to_types
524
+
525
+ sig { override.returns(String) }
526
+ def generate_rbi; end
527
+
528
+ sig { override.returns(String) }
529
+ def generate_rbs; end
530
+
531
+ sig { override.returns(String) }
532
+ def describe; end
533
+ end
534
+
535
+ class Class < Type
536
+ sig { params(type: TypeLike).void }
537
+ def initialize(type); end
538
+
539
+ sig { params(other: Object).returns(T::Boolean) }
540
+ def ==(other); end
541
+
542
+ sig { returns(Type) }
543
+ attr_reader :type
544
+
545
+ sig { override.returns(String) }
546
+ def generate_rbi; end
547
+
548
+ sig { override.returns(String) }
549
+ def generate_rbs; end
550
+
551
+ sig { override.returns(String) }
552
+ def describe; end
553
+ end
554
+
555
+ class Boolean < Type
556
+ sig { params(other: Object).returns(T::Boolean) }
557
+ def ==(other); end
558
+
559
+ sig { override.returns(String) }
560
+ def generate_rbi; end
561
+
562
+ sig { override.returns(String) }
563
+ def generate_rbs; end
564
+
565
+ sig { override.returns(String) }
566
+ def describe; end
567
+ end
568
+
569
+ class Self < Type
570
+ sig { params(other: Object).returns(T::Boolean) }
571
+ def ==(other); end
572
+
573
+ sig { override.returns(String) }
574
+ def generate_rbi; end
575
+
576
+ sig { override.returns(String) }
577
+ def generate_rbs; end
578
+
579
+ sig { override.returns(String) }
580
+ def describe; end
581
+ end
582
+
583
+ class Untyped < Type
584
+ sig { params(other: Object).returns(T::Boolean) }
585
+ def ==(other); end
586
+
587
+ sig { override.returns(String) }
588
+ def generate_rbi; end
589
+
590
+ sig { override.returns(String) }
591
+ def generate_rbs; end
592
+
593
+ sig { override.returns(String) }
594
+ def describe; end
595
+ end
596
+
597
+ class Proc < Type
598
+ class Parameter
599
+ extend T::Sig
600
+
601
+ sig { params(name: String, type: TypeLike, default: T.nilable(String)).void }
602
+ def initialize(name, type, default = nil); end
603
+
604
+ sig { returns(String) }
605
+ attr_reader :name
606
+
607
+ sig { returns(Type) }
608
+ attr_reader :type
609
+
610
+ sig { returns(T.nilable(String)) }
611
+ attr_reader :default
612
+
613
+ sig { params(other: Object).returns(T::Boolean) }
614
+ def ==(other); end
615
+ end
616
+
617
+ sig { params(parameters: T::Array[Parameter], return_type: T.nilable(TypeLike)).void }
618
+ def initialize(parameters, return_type); end
619
+
620
+ sig { params(other: Object).returns(T::Boolean) }
621
+ def ==(other); end
622
+
623
+ sig { returns(T::Array[Parameter]) }
624
+ attr_reader :parameters
625
+
626
+ sig { returns(T.nilable(Type)) }
627
+ attr_reader :return_type
628
+
629
+ sig { override.returns(String) }
630
+ def generate_rbi; end
631
+
632
+ sig { override.returns(String) }
633
+ def generate_rbs; end
634
+
635
+ sig { override.returns(String) }
636
+ def describe; end
637
+ end
638
+ end
639
+
640
+ module Conversion
641
+ class Converter
642
+ abstract!
643
+
644
+ extend T::Sig
645
+ extend T::Helpers
646
+
647
+ sig { returns(T.untyped) }
648
+ def initialize; end
649
+
650
+ sig { returns(T::Array[[String, TypedObject]]) }
651
+ attr_reader :warnings
652
+
653
+ sig { params(msg: String, node: RbiGenerator::RbiObject).void }
654
+ def add_warning(msg, node); end
655
+ end
656
+
657
+ class RbiToRbs < Converter
658
+ extend T::Sig
659
+
660
+ sig { params(rbs_gen: RbsGenerator).void }
661
+ def initialize(rbs_gen); end
662
+
663
+ sig { returns(RbsGenerator) }
664
+ attr_reader :rbs_gen
665
+
666
+ sig { params(from: RbiGenerator::Namespace, to: RbsGenerator::Namespace).void }
667
+ def convert_all(from, to); end
668
+
669
+ sig { params(node: RbiGenerator::RbiObject, new_parent: RbsGenerator::Namespace).void }
670
+ def convert_object(node, new_parent); end
671
+ end
672
+ end
673
+
674
+ class RbiGenerator < Generator
675
+ Options = Parlour::Options
676
+
677
+ sig { params(hash: T.untyped).returns(T.untyped) }
678
+ def initialize(**hash); end
679
+
680
+ sig { returns(RbiGenerator::Namespace) }
681
+ attr_reader :root
682
+
683
+ sig { overridable.params(strictness: String).returns(String) }
684
+ def rbi(strictness = 'strong'); end
685
+
686
+ class Arbitrary < RbiObject
687
+ sig { params(generator: Generator, code: String, block: T.nilable(T.proc.params(x: Arbitrary).void)).void }
688
+ def initialize(generator, code: '', &block); end
689
+
690
+ sig { returns(String) }
691
+ attr_accessor :code
692
+
693
+ sig { params(other: Object).returns(T::Boolean) }
694
+ def ==(other); end
695
+
696
+ sig { override.params(indent_level: Integer, options: Options).returns(T::Array[String]) }
697
+ def generate_rbi(indent_level, options); end
698
+
699
+ sig { override.params(others: T::Array[RbiGenerator::RbiObject]).returns(T::Boolean) }
700
+ def mergeable?(others); end
701
+
702
+ sig { override.params(others: T::Array[RbiGenerator::RbiObject]).void }
703
+ def merge_into_self(others); end
704
+
705
+ sig { override.returns(String) }
706
+ def describe; end
707
+
708
+ sig { override.void }
709
+ def generalize_from_rbi!; end
710
+ end
711
+
712
+ class Attribute < Method
713
+ sig do
714
+ params(
715
+ generator: Generator,
716
+ name: String,
717
+ kind: Symbol,
718
+ type: Types::TypeLike,
719
+ class_attribute: T::Boolean,
720
+ block: T.nilable(T.proc.params(x: Attribute).void)
721
+ ).void
722
+ end
723
+ def initialize(generator, name, kind, type, class_attribute: false, &block); end
724
+
725
+ sig { returns(Symbol) }
726
+ attr_reader :kind
727
+
728
+ sig { returns(T::Boolean) }
729
+ attr_reader :class_attribute
730
+
731
+ sig { returns(Types::TypeLike) }
732
+ attr_reader :type
733
+
734
+ sig { override.params(other: Object).returns(T::Boolean) }
735
+ def ==(other); end
736
+
737
+ sig { override.void }
738
+ def generalize_from_rbi!; end
739
+
740
+ sig { override.params(indent_level: Integer, options: Options).returns(T::Array[String]) }
741
+ def generate_definition(indent_level, options); end
742
+ end
743
+
744
+ class ClassNamespace < Namespace
745
+ extend T::Sig
746
+
747
+ sig do
748
+ params(
749
+ generator: Generator,
750
+ name: String,
751
+ final: T::Boolean,
752
+ superclass: T.nilable(String),
753
+ abstract: T::Boolean,
754
+ block: T.nilable(T.proc.params(x: ClassNamespace).void)
755
+ ).void
756
+ end
757
+ def initialize(generator, name, final, superclass, abstract, &block); end
758
+
759
+ sig { override.params(indent_level: Integer, options: Options).returns(T::Array[String]) }
760
+ def generate_rbi(indent_level, options); end
761
+
762
+ sig { returns(T.nilable(String)) }
763
+ attr_reader :superclass
764
+
765
+ sig { returns(T::Boolean) }
766
+ attr_reader :abstract
767
+
768
+ sig { override.params(others: T::Array[RbiGenerator::RbiObject]).returns(T::Boolean) }
769
+ def mergeable?(others); end
770
+
771
+ sig { override.params(others: T::Array[RbiGenerator::RbiObject]).void }
772
+ def merge_into_self(others); end
773
+
774
+ sig { override.returns(String) }
775
+ def describe; end
776
+
777
+ sig { override.void }
778
+ def generalize_from_rbi!; end
779
+ end
780
+
781
+ class Constant < RbiObject
782
+ sig do
783
+ params(
784
+ generator: Generator,
785
+ name: String,
786
+ value: Types::TypeLike,
787
+ eigen_constant: T::Boolean,
788
+ block: T.nilable(T.proc.params(x: Constant).void)
789
+ ).void
790
+ end
791
+ def initialize(generator, name: '', value: '', eigen_constant: false, &block); end
792
+
793
+ sig { returns(Types::TypeLike) }
794
+ attr_reader :value
795
+
796
+ sig { returns(T.untyped) }
797
+ attr_reader :eigen_constant
798
+
799
+ sig { params(other: Object).returns(T::Boolean) }
800
+ def ==(other); end
801
+
802
+ sig { override.params(indent_level: Integer, options: Options).returns(T::Array[String]) }
803
+ def generate_rbi(indent_level, options); end
804
+
805
+ sig { override.params(others: T::Array[RbiGenerator::RbiObject]).returns(T::Boolean) }
806
+ def mergeable?(others); end
807
+
808
+ sig { override.params(others: T::Array[RbiGenerator::RbiObject]).void }
809
+ def merge_into_self(others); end
810
+
811
+ sig { override.returns(String) }
812
+ def describe; end
813
+
814
+ sig { override.void }
815
+ def generalize_from_rbi!; end
816
+ end
817
+
818
+ class EnumClassNamespace < ClassNamespace
819
+ extend T::Sig
820
+
821
+ sig do
822
+ params(
823
+ generator: Generator,
824
+ name: String,
825
+ final: T::Boolean,
826
+ enums: T::Array[T.any([String, String], String)],
827
+ abstract: T::Boolean,
828
+ block: T.nilable(T.proc.params(x: EnumClassNamespace).void)
829
+ ).void
830
+ end
831
+ def initialize(generator, name, final, enums, abstract, &block); end
832
+
833
+ sig { returns(T::Array[T.any([String, String], String)]) }
834
+ attr_reader :enums
835
+
836
+ sig { override.params(indent_level: Integer, options: Options).returns(T::Array[String]) }
837
+ def generate_body(indent_level, options); end
838
+
839
+ sig { override.params(others: T::Array[RbiGenerator::RbiObject]).returns(T::Boolean) }
840
+ def mergeable?(others); end
841
+
842
+ sig { override.params(others: T::Array[RbiGenerator::RbiObject]).void }
843
+ def merge_into_self(others); end
844
+
845
+ sig { override.void }
846
+ def generalize_from_rbi!; end
847
+ end
848
+
849
+ class Extend < RbiObject
850
+ sig { params(generator: Generator, name: String, block: T.nilable(T.proc.params(x: Extend).void)).void }
851
+ def initialize(generator, name: '', &block); end
852
+
853
+ sig { params(other: Object).returns(T::Boolean) }
854
+ def ==(other); end
855
+
856
+ sig { override.params(indent_level: Integer, options: Options).returns(T::Array[String]) }
857
+ def generate_rbi(indent_level, options); end
858
+
859
+ sig { override.params(others: T::Array[RbiGenerator::RbiObject]).returns(T::Boolean) }
860
+ def mergeable?(others); end
861
+
862
+ sig { override.params(others: T::Array[RbiGenerator::RbiObject]).void }
863
+ def merge_into_self(others); end
864
+
865
+ sig { override.returns(String) }
866
+ def describe; end
867
+
868
+ sig { override.void }
869
+ def generalize_from_rbi!; end
870
+ end
871
+
872
+ class Include < RbiObject
873
+ sig { params(generator: Generator, name: String, block: T.nilable(T.proc.params(x: Include).void)).void }
874
+ def initialize(generator, name: '', &block); end
875
+
876
+ sig { params(other: Object).returns(T::Boolean) }
877
+ def ==(other); end
878
+
879
+ sig { override.params(indent_level: Integer, options: Options).returns(T::Array[String]) }
880
+ def generate_rbi(indent_level, options); end
881
+
882
+ sig { override.params(others: T::Array[RbiGenerator::RbiObject]).returns(T::Boolean) }
883
+ def mergeable?(others); end
884
+
885
+ sig { override.params(others: T::Array[RbiGenerator::RbiObject]).void }
886
+ def merge_into_self(others); end
887
+
888
+ sig { override.returns(String) }
889
+ def describe; end
890
+
891
+ sig { override.void }
892
+ def generalize_from_rbi!; end
893
+ end
894
+
895
+ class Method < RbiObject
896
+ extend T::Sig
897
+
898
+ sig do
899
+ params(
900
+ generator: Generator,
901
+ name: String,
902
+ parameters: T::Array[Parameter],
903
+ return_type: T.nilable(Types::TypeLike),
904
+ abstract: T::Boolean,
905
+ implementation: T::Boolean,
906
+ override: T::Boolean,
907
+ overridable: T::Boolean,
908
+ class_method: T::Boolean,
909
+ final: T::Boolean,
910
+ type_parameters: T.nilable(T::Array[Symbol]),
911
+ block: T.nilable(T.proc.params(x: Method).void)
912
+ ).void
913
+ end
914
+ def initialize(generator, name, parameters, return_type = nil, abstract: false, implementation: false, override: false, overridable: false, class_method: false, final: false, type_parameters: nil, &block); end
915
+
916
+ sig { overridable.params(other: Object).returns(T::Boolean) }
917
+ def ==(other); end
918
+
919
+ sig { returns(T::Array[Parameter]) }
920
+ attr_reader :parameters
921
+
922
+ sig { returns(T.nilable(Types::TypeLike)) }
923
+ attr_reader :return_type
924
+
925
+ sig { returns(T::Boolean) }
926
+ attr_reader :abstract
927
+
928
+ sig { returns(T::Boolean) }
929
+ attr_reader :implementation
930
+
931
+ sig { returns(T::Boolean) }
932
+ attr_reader :override
933
+
934
+ sig { returns(T::Boolean) }
935
+ attr_reader :overridable
936
+
937
+ sig { returns(T::Boolean) }
938
+ attr_reader :class_method
939
+
940
+ sig { returns(T::Boolean) }
941
+ attr_reader :final
942
+
943
+ sig { returns(T::Array[Symbol]) }
944
+ attr_reader :type_parameters
945
+
946
+ sig { override.params(indent_level: Integer, options: Options).returns(T::Array[String]) }
947
+ def generate_rbi(indent_level, options); end
948
+
949
+ sig { override.params(others: T::Array[RbiGenerator::RbiObject]).returns(T::Boolean) }
950
+ def mergeable?(others); end
951
+
952
+ sig { override.params(others: T::Array[RbiGenerator::RbiObject]).void }
953
+ def merge_into_self(others); end
954
+
955
+ sig { override.returns(String) }
956
+ def describe; end
957
+
958
+ sig { override.void }
959
+ def generalize_from_rbi!; end
960
+
961
+ sig { overridable.params(indent_level: Integer, options: Options).returns(T::Array[String]) }
962
+ def generate_definition(indent_level, options); end
963
+
964
+ sig { returns(String) }
965
+ def qualifiers; end
966
+ end
967
+
968
+ class ModuleNamespace < Namespace
969
+ extend T::Sig
970
+
971
+ sig do
972
+ params(
973
+ generator: Generator,
974
+ name: String,
975
+ final: T::Boolean,
976
+ interface: T::Boolean,
977
+ block: T.nilable(T.proc.params(x: ClassNamespace).void)
978
+ ).void
979
+ end
980
+ def initialize(generator, name, final, interface, &block); end
981
+
982
+ sig { override.params(indent_level: Integer, options: Options).returns(T::Array[String]) }
983
+ def generate_rbi(indent_level, options); end
984
+
985
+ sig { returns(T::Boolean) }
986
+ attr_reader :interface
987
+
988
+ sig { override.params(others: T::Array[RbiGenerator::RbiObject]).returns(T::Boolean) }
989
+ def mergeable?(others); end
990
+
991
+ sig { override.params(others: T::Array[RbiGenerator::RbiObject]).void }
992
+ def merge_into_self(others); end
993
+
994
+ sig { override.returns(String) }
995
+ def describe; end
996
+
997
+ sig { override.void }
998
+ def generalize_from_rbi!; end
999
+ end
1000
+
1001
+ class Namespace < RbiObject
1002
+ extend T::Sig
1003
+
1004
+ sig { override.overridable.params(indent_level: Integer, options: Options).returns(T::Array[String]) }
1005
+ def generate_rbi(indent_level, options); end
1006
+
1007
+ sig do
1008
+ params(
1009
+ generator: Generator,
1010
+ name: T.nilable(String),
1011
+ final: T::Boolean,
1012
+ block: T.nilable(T.proc.params(x: Namespace).void)
1013
+ ).void
1014
+ end
1015
+ def initialize(generator, name = nil, final = false, &block); end
1016
+
1017
+ sig { returns(T::Boolean) }
1018
+ attr_reader :final
1019
+
1020
+ sig { returns(T::Array[RbiObject]) }
1021
+ attr_reader :children
1022
+
1023
+ sig { returns(T::Array[RbiGenerator::Extend]) }
1024
+ def extends; end
1025
+
1026
+ sig { returns(T::Array[RbiGenerator::Include]) }
1027
+ def includes; end
1028
+
1029
+ sig { returns(T::Array[RbiGenerator::TypeAlias]) }
1030
+ def aliases; end
1031
+
1032
+ sig { returns(T::Array[RbiGenerator::Constant]) }
1033
+ def constants; end
1034
+
1035
+ sig { params(object: T.untyped, block: T.proc.params(x: Namespace).void).void }
1036
+ def path(object, &block); end
1037
+
1038
+ sig { params(comment: T.any(String, T::Array[String])).void }
1039
+ def add_comment_to_next_child(comment); end
1040
+
1041
+ sig do
1042
+ params(
1043
+ name: String,
1044
+ final: T::Boolean,
1045
+ superclass: T.nilable(String),
1046
+ abstract: T::Boolean,
1047
+ block: T.nilable(T.proc.params(x: ClassNamespace).void)
1048
+ ).returns(ClassNamespace)
1049
+ end
1050
+ def create_class(name, final: false, superclass: nil, abstract: false, &block); end
1051
+
1052
+ sig do
1053
+ params(
1054
+ name: String,
1055
+ final: T::Boolean,
1056
+ enums: T.nilable(T::Array[T.any([String, String], String)]),
1057
+ abstract: T::Boolean,
1058
+ block: T.nilable(T.proc.params(x: EnumClassNamespace).void)
1059
+ ).returns(EnumClassNamespace)
1060
+ end
1061
+ def create_enum_class(name, final: false, enums: nil, abstract: false, &block); end
1062
+
1063
+ sig do
1064
+ params(
1065
+ name: String,
1066
+ final: T::Boolean,
1067
+ props: T.nilable(T::Array[StructProp]),
1068
+ abstract: T::Boolean,
1069
+ block: T.nilable(T.proc.params(x: StructClassNamespace).void)
1070
+ ).returns(StructClassNamespace)
1071
+ end
1072
+ def create_struct_class(name, final: false, props: nil, abstract: false, &block); end
1073
+
1074
+ sig do
1075
+ params(
1076
+ name: String,
1077
+ final: T::Boolean,
1078
+ interface: T::Boolean,
1079
+ block: T.nilable(T.proc.params(x: ClassNamespace).void)
1080
+ ).returns(ModuleNamespace)
1081
+ end
1082
+ def create_module(name, final: false, interface: false, &block); end
1083
+
1084
+ sig do
1085
+ params(
1086
+ name: String,
1087
+ parameters: T.nilable(T::Array[Parameter]),
1088
+ return_type: T.nilable(Types::TypeLike),
1089
+ returns: T.nilable(Types::TypeLike),
1090
+ abstract: T::Boolean,
1091
+ implementation: T::Boolean,
1092
+ override: T::Boolean,
1093
+ overridable: T::Boolean,
1094
+ class_method: T::Boolean,
1095
+ final: T::Boolean,
1096
+ type_parameters: T.nilable(T::Array[Symbol]),
1097
+ block: T.nilable(T.proc.params(x: Method).void)
1098
+ ).returns(Method)
1099
+ end
1100
+ def create_method(name, parameters: nil, return_type: nil, returns: nil, abstract: false, implementation: false, override: false, overridable: false, class_method: false, final: false, type_parameters: nil, &block); end
1101
+
1102
+ sig do
1103
+ params(
1104
+ name: String,
1105
+ kind: Symbol,
1106
+ type: Types::TypeLike,
1107
+ class_attribute: T::Boolean,
1108
+ block: T.nilable(T.proc.params(x: Attribute).void)
1109
+ ).returns(Attribute)
1110
+ end
1111
+ def create_attribute(name, kind:, type:, class_attribute: false, &block); end
1112
+
1113
+ sig do
1114
+ params(
1115
+ name: String,
1116
+ type: Types::TypeLike,
1117
+ class_attribute: T::Boolean,
1118
+ block: T.nilable(T.proc.params(x: Attribute).void)
1119
+ ).returns(Attribute)
1120
+ end
1121
+ def create_attr_reader(name, type:, class_attribute: false, &block); end
1122
+
1123
+ sig do
1124
+ params(
1125
+ name: String,
1126
+ type: Types::TypeLike,
1127
+ class_attribute: T::Boolean,
1128
+ block: T.nilable(T.proc.params(x: Attribute).void)
1129
+ ).returns(Attribute)
1130
+ end
1131
+ def create_attr_writer(name, type:, class_attribute: false, &block); end
1132
+
1133
+ sig do
1134
+ params(
1135
+ name: String,
1136
+ type: Types::TypeLike,
1137
+ class_attribute: T::Boolean,
1138
+ block: T.nilable(T.proc.params(x: Attribute).void)
1139
+ ).returns(Attribute)
1140
+ end
1141
+ def create_attr_accessor(name, type:, class_attribute: false, &block); end
1142
+
1143
+ sig { params(code: T.untyped, block: T.untyped).returns(T.untyped) }
1144
+ def create_arbitrary(code:, &block); end
1145
+
1146
+ sig { params(name: String, block: T.nilable(T.proc.params(x: Extend).void)).returns(RbiGenerator::Extend) }
1147
+ def create_extend(name, &block); end
1148
+
1149
+ sig { params(extendables: T::Array[String]).returns(T::Array[Extend]) }
1150
+ def create_extends(extendables); end
1151
+
1152
+ sig { params(name: String, block: T.nilable(T.proc.params(x: Include).void)).returns(Include) }
1153
+ def create_include(name, &block); end
1154
+
1155
+ sig { params(includables: T::Array[String]).returns(T::Array[Include]) }
1156
+ def create_includes(includables); end
1157
+
1158
+ sig do
1159
+ params(
1160
+ name: String,
1161
+ value: String,
1162
+ eigen_constant: T::Boolean,
1163
+ block: T.nilable(T.proc.params(x: Constant).void)
1164
+ ).returns(Constant)
1165
+ end
1166
+ def create_constant(name, value:, eigen_constant: false, &block); end
1167
+
1168
+ sig { params(name: String, type: Types::TypeLike, block: T.nilable(T.proc.params(x: TypeAlias).void)).returns(TypeAlias) }
1169
+ def create_type_alias(name, type:, &block); end
1170
+
1171
+ sig { override.overridable.params(others: T::Array[RbiGenerator::RbiObject]).returns(T::Boolean) }
1172
+ def mergeable?(others); end
1173
+
1174
+ sig { override.overridable.params(others: T::Array[RbiGenerator::RbiObject]).void }
1175
+ def merge_into_self(others); end
1176
+
1177
+ sig { override.overridable.returns(String) }
1178
+ def describe; end
1179
+
1180
+ sig { override.void }
1181
+ def generalize_from_rbi!; end
1182
+
1183
+ sig { overridable.params(indent_level: Integer, options: Options).returns(T::Array[String]) }
1184
+ def generate_body(indent_level, options); end
1185
+
1186
+ sig { params(object: RbiObject).void }
1187
+ def move_next_comments(object); end
1188
+ end
1189
+
1190
+ class Parameter
1191
+ extend T::Sig
1192
+ PREFIXES = {
1193
+ normal: '',
1194
+ splat: '*',
1195
+ double_splat: '**',
1196
+ block: '&'
1197
+ }.freeze
1198
+
1199
+ sig { params(name: String, type: T.nilable(Types::TypeLike), default: T.nilable(String)).void }
1200
+ def initialize(name, type: nil, default: nil); end
1201
+
1202
+ sig { params(other: Object).returns(T::Boolean) }
1203
+ def ==(other); end
1204
+
1205
+ sig { returns(String) }
1206
+ attr_reader :name
1207
+
1208
+ sig { returns(String) }
1209
+ def name_without_kind; end
1210
+
1211
+ sig { returns(Types::TypeLike) }
1212
+ attr_reader :type
1213
+
1214
+ sig { returns(T.nilable(String)) }
1215
+ attr_reader :default
1216
+
1217
+ sig { returns(Symbol) }
1218
+ attr_reader :kind
1219
+
1220
+ sig { returns(String) }
1221
+ def to_def_param; end
1222
+
1223
+ sig { returns(String) }
1224
+ def to_sig_param; end
1225
+
1226
+ sig { void }
1227
+ def generalize_from_rbi!; end
1228
+ end
1229
+
1230
+ class RbiObject < TypedObject
1231
+ abstract!
1232
+
1233
+ sig { params(generator: Generator, name: String).void }
1234
+ def initialize(generator, name); end
1235
+
1236
+ sig { returns(Generator) }
1237
+ attr_reader :generator
1238
+
1239
+ sig { abstract.params(indent_level: Integer, options: Options).returns(T::Array[String]) }
1240
+ def generate_rbi(indent_level, options); end
1241
+
1242
+ sig { abstract.params(others: T::Array[RbiGenerator::RbiObject]).returns(T::Boolean) }
1243
+ def mergeable?(others); end
1244
+
1245
+ sig { abstract.params(others: T::Array[RbiGenerator::RbiObject]).void }
1246
+ def merge_into_self(others); end
1247
+
1248
+ sig { override.overridable.returns(String) }
1249
+ def describe; end
1250
+
1251
+ sig { abstract.void }
1252
+ def generalize_from_rbi!; end
1253
+ end
1254
+
1255
+ class StructClassNamespace < ClassNamespace
1256
+ extend T::Sig
1257
+
1258
+ sig do
1259
+ params(
1260
+ generator: Generator,
1261
+ name: String,
1262
+ final: T::Boolean,
1263
+ props: T::Array[StructProp],
1264
+ abstract: T::Boolean,
1265
+ block: T.nilable(T.proc.params(x: StructClassNamespace).void)
1266
+ ).void
1267
+ end
1268
+ def initialize(generator, name, final, props, abstract, &block); end
1269
+
1270
+ sig { returns(T::Array[StructProp]) }
1271
+ attr_reader :props
1272
+
1273
+ sig { override.params(indent_level: Integer, options: Options).returns(T::Array[String]) }
1274
+ def generate_body(indent_level, options); end
1275
+
1276
+ sig { override.params(others: T::Array[RbiGenerator::RbiObject]).returns(T::Boolean) }
1277
+ def mergeable?(others); end
1278
+
1279
+ sig { override.params(others: T::Array[RbiGenerator::RbiObject]).void }
1280
+ def merge_into_self(others); end
1281
+
1282
+ sig { override.void }
1283
+ def generalize_from_rbi!; end
1284
+ end
1285
+
1286
+ class StructProp
1287
+ extend T::Sig
1288
+ EXTRA_PROPERTIES = %i{
1289
+ optional enum dont_store foreign default factory immutable array override redaction
1290
+ }
1291
+
1292
+ sig do
1293
+ params(
1294
+ name: String,
1295
+ type: Types::TypeLike,
1296
+ optional: T.nilable(T.any(T::Boolean, Symbol)),
1297
+ enum: T.nilable(String),
1298
+ dont_store: T.nilable(T::Boolean),
1299
+ foreign: T.nilable(String),
1300
+ default: T.nilable(String),
1301
+ factory: T.nilable(String),
1302
+ immutable: T.nilable(T::Boolean),
1303
+ array: T.nilable(String),
1304
+ override: T.nilable(T::Boolean),
1305
+ redaction: T.nilable(String)
1306
+ ).void
1307
+ end
1308
+ def initialize(name, type, optional: nil, enum: nil, dont_store: nil, foreign: nil, default: nil, factory: nil, immutable: nil, array: nil, override: nil, redaction: nil); end
1309
+
1310
+ sig { params(other: Object).returns(T::Boolean) }
1311
+ def ==(other); end
1312
+
1313
+ sig { returns(String) }
1314
+ attr_reader :name
1315
+
1316
+ sig { returns(Types::TypeLike) }
1317
+ attr_reader :type
1318
+
1319
+ sig { returns(T.nilable(T.any(T::Boolean, Symbol))) }
1320
+ attr_reader :optional
1321
+
1322
+ sig { returns(T.nilable(String)) }
1323
+ attr_reader :enum
1324
+
1325
+ sig { returns(T.nilable(T::Boolean)) }
1326
+ attr_reader :dont_store
1327
+
1328
+ sig { returns(T.nilable(String)) }
1329
+ attr_reader :foreign
1330
+
1331
+ sig { returns(T.nilable(String)) }
1332
+ attr_reader :default
1333
+
1334
+ sig { returns(T.nilable(String)) }
1335
+ attr_reader :factory
1336
+
1337
+ sig { returns(T.nilable(T::Boolean)) }
1338
+ attr_reader :immutable
1339
+
1340
+ sig { returns(T.nilable(String)) }
1341
+ attr_reader :array
1342
+
1343
+ sig { returns(T.nilable(T::Boolean)) }
1344
+ attr_reader :override
1345
+
1346
+ sig { returns(T.nilable(String)) }
1347
+ attr_reader :redaction
1348
+
1349
+ sig { returns(String) }
1350
+ def to_prop_call; end
1351
+
1352
+ sig { void }
1353
+ def generalize_from_rbi!; end
1354
+ end
1355
+
1356
+ class TypeAlias < RbiObject
1357
+ sig do
1358
+ params(
1359
+ generator: Generator,
1360
+ name: String,
1361
+ type: Types::TypeLike,
1362
+ block: T.nilable(T.proc.params(x: TypeAlias).void)
1363
+ ).void
1364
+ end
1365
+ def initialize(generator, name:, type:, &block); end
1366
+
1367
+ sig { returns(Types::TypeLike) }
1368
+ attr_reader :type
1369
+
1370
+ sig { params(other: Object).returns(T::Boolean) }
1371
+ def ==(other); end
1372
+
1373
+ sig { override.params(indent_level: Integer, options: Options).returns(T::Array[String]) }
1374
+ def generate_rbi(indent_level, options); end
1375
+
1376
+ sig { override.params(others: T::Array[RbiGenerator::RbiObject]).returns(T::Boolean) }
1377
+ def mergeable?(others); end
1378
+
1379
+ sig { override.params(others: T::Array[RbiGenerator::RbiObject]).void }
1380
+ def merge_into_self(others); end
1381
+
1382
+ sig { override.returns(String) }
1383
+ def describe; end
1384
+
1385
+ sig { override.void }
1386
+ def generalize_from_rbi!; end
1387
+ end
1388
+ end
1389
+
1390
+ class RbsGenerator < Generator
1391
+ sig { params(hash: T.untyped).returns(T.untyped) }
1392
+ def initialize(**hash); end
1393
+
1394
+ sig { returns(RbsGenerator::Namespace) }
1395
+ attr_reader :root
1396
+
1397
+ sig { overridable.returns(String) }
1398
+ def rbs; end
1399
+
1400
+ class Arbitrary < RbsObject
1401
+ sig { params(generator: Generator, code: String, block: T.nilable(T.proc.params(x: Arbitrary).void)).void }
1402
+ def initialize(generator, code: '', &block); end
1403
+
1404
+ sig { returns(String) }
1405
+ attr_accessor :code
1406
+
1407
+ sig { params(other: Object).returns(T::Boolean) }
1408
+ def ==(other); end
1409
+
1410
+ sig { override.params(indent_level: Integer, options: Options).returns(T::Array[String]) }
1411
+ def generate_rbs(indent_level, options); end
1412
+
1413
+ sig { override.params(others: T::Array[RbsGenerator::RbsObject]).returns(T::Boolean) }
1414
+ def mergeable?(others); end
1415
+
1416
+ sig { override.params(others: T::Array[RbsGenerator::RbsObject]).void }
1417
+ def merge_into_self(others); end
1418
+
1419
+ sig { override.returns(String) }
1420
+ def describe; end
1421
+ end
1422
+
1423
+ class Attribute < RbsGenerator::Method
1424
+ extend T::Sig
1425
+
1426
+ sig do
1427
+ params(
1428
+ generator: Generator,
1429
+ name: String,
1430
+ kind: Symbol,
1431
+ type: Types::TypeLike,
1432
+ block: T.nilable(T.proc.params(x: Attribute).void)
1433
+ ).void
1434
+ end
1435
+ def initialize(generator, name, kind, type, &block); end
1436
+
1437
+ sig { returns(Symbol) }
1438
+ attr_reader :kind
1439
+
1440
+ sig { returns(Types::TypeLike) }
1441
+ attr_reader :type
1442
+
1443
+ sig { override.params(indent_level: Integer, options: Options).returns(T::Array[String]) }
1444
+ def generate_rbs(indent_level, options); end
1445
+
1446
+ sig { override.params(other: Object).returns(T::Boolean) }
1447
+ def ==(other); end
1448
+ end
1449
+
1450
+ class Block
1451
+ extend T::Sig
1452
+
1453
+ sig { params(type: Types::Proc, required: T::Boolean).void }
1454
+ def initialize(type, required); end
1455
+
1456
+ sig { overridable.params(other: Object).returns(T::Boolean) }
1457
+ def ==(other); end
1458
+
1459
+ sig { returns(Types::Proc) }
1460
+ attr_reader :type
1461
+
1462
+ sig { returns(T::Boolean) }
1463
+ attr_reader :required
1464
+
1465
+ sig { params(options: Options).returns(T::Array[String]) }
1466
+ def generate_rbs(options); end
1467
+ end
1468
+
1469
+ class ClassNamespace < Namespace
1470
+ extend T::Sig
1471
+
1472
+ sig do
1473
+ params(
1474
+ generator: Generator,
1475
+ name: String,
1476
+ superclass: T.nilable(Types::TypeLike),
1477
+ block: T.nilable(T.proc.params(x: ClassNamespace).void)
1478
+ ).void
1479
+ end
1480
+ def initialize(generator, name, superclass, &block); end
1481
+
1482
+ sig { override.params(indent_level: Integer, options: Options).returns(T::Array[String]) }
1483
+ def generate_rbs(indent_level, options); end
1484
+
1485
+ sig { returns(T.nilable(Types::TypeLike)) }
1486
+ attr_reader :superclass
1487
+
1488
+ sig { override.params(others: T::Array[RbsGenerator::RbsObject]).returns(T::Boolean) }
1489
+ def mergeable?(others); end
1490
+
1491
+ sig { override.params(others: T::Array[RbsGenerator::RbsObject]).void }
1492
+ def merge_into_self(others); end
1493
+
1494
+ sig { override.returns(String) }
1495
+ def describe; end
1496
+ end
1497
+
1498
+ class Constant < RbsObject
1499
+ sig do
1500
+ params(
1501
+ generator: Generator,
1502
+ name: String,
1503
+ type: Types::TypeLike,
1504
+ block: T.nilable(T.proc.params(x: Constant).void)
1505
+ ).void
1506
+ end
1507
+ def initialize(generator, name, type:, &block); end
1508
+
1509
+ sig { returns(Types::TypeLike) }
1510
+ attr_reader :type
1511
+
1512
+ sig { params(other: Object).returns(T::Boolean) }
1513
+ def ==(other); end
1514
+
1515
+ sig { override.params(indent_level: Integer, options: Options).returns(T::Array[String]) }
1516
+ def generate_rbs(indent_level, options); end
1517
+
1518
+ sig { override.params(others: T::Array[RbsGenerator::RbsObject]).returns(T::Boolean) }
1519
+ def mergeable?(others); end
1520
+
1521
+ sig { override.params(others: T::Array[RbsGenerator::RbsObject]).void }
1522
+ def merge_into_self(others); end
1523
+
1524
+ sig { override.returns(String) }
1525
+ def describe; end
1526
+ end
1527
+
1528
+ class Extend < RbsObject
1529
+ sig { params(generator: Generator, type: Types::TypeLike, block: T.nilable(T.proc.params(x: Extend).void)).void }
1530
+ def initialize(generator, type:, &block); end
1531
+
1532
+ sig { params(other: Object).returns(T::Boolean) }
1533
+ def ==(other); end
1534
+
1535
+ sig { returns(Types::TypeLike) }
1536
+ attr_reader :type
1537
+
1538
+ sig { override.params(indent_level: Integer, options: Options).returns(T::Array[String]) }
1539
+ def generate_rbs(indent_level, options); end
1540
+
1541
+ sig { override.params(others: T::Array[RbsGenerator::RbsObject]).returns(T::Boolean) }
1542
+ def mergeable?(others); end
1543
+
1544
+ sig { override.params(others: T::Array[RbsGenerator::RbsObject]).void }
1545
+ def merge_into_self(others); end
1546
+
1547
+ sig { override.returns(String) }
1548
+ def describe; end
1549
+ end
1550
+
1551
+ class Include < RbsObject
1552
+ sig { params(generator: Generator, type: Types::TypeLike, block: T.nilable(T.proc.params(x: Include).void)).void }
1553
+ def initialize(generator, type:, &block); end
1554
+
1555
+ sig { params(other: Object).returns(T::Boolean) }
1556
+ def ==(other); end
1557
+
1558
+ sig { returns(Types::TypeLike) }
1559
+ attr_reader :type
1560
+
1561
+ sig { override.params(indent_level: Integer, options: Options).returns(T::Array[String]) }
1562
+ def generate_rbs(indent_level, options); end
1563
+
1564
+ sig { override.params(others: T::Array[RbsGenerator::RbsObject]).returns(T::Boolean) }
1565
+ def mergeable?(others); end
1566
+
1567
+ sig { override.params(others: T::Array[RbsGenerator::RbsObject]).void }
1568
+ def merge_into_self(others); end
1569
+
1570
+ sig { override.returns(String) }
1571
+ def describe; end
1572
+ end
1573
+
1574
+ class InterfaceNamespace < Namespace
1575
+ extend T::Sig
1576
+
1577
+ sig { override.params(indent_level: Integer, options: Options).returns(T::Array[String]) }
1578
+ def generate_rbs(indent_level, options); end
1579
+
1580
+ sig { override.returns(String) }
1581
+ def describe; end
1582
+ end
1583
+
1584
+ class Method < RbsObject
1585
+ extend T::Sig
1586
+
1587
+ sig do
1588
+ params(
1589
+ generator: Generator,
1590
+ name: String,
1591
+ signatures: T::Array[MethodSignature],
1592
+ class_method: T::Boolean,
1593
+ block: T.nilable(T.proc.params(x: Method).void)
1594
+ ).void
1595
+ end
1596
+ def initialize(generator, name, signatures, class_method: false, &block); end
1597
+
1598
+ sig { overridable.params(other: Object).returns(T::Boolean) }
1599
+ def ==(other); end
1600
+
1601
+ sig { returns(T::Array[MethodSignature]) }
1602
+ attr_reader :signatures
1603
+
1604
+ sig { returns(T::Boolean) }
1605
+ attr_reader :class_method
1606
+
1607
+ sig { override.params(indent_level: Integer, options: Options).returns(T::Array[String]) }
1608
+ def generate_rbs(indent_level, options); end
1609
+
1610
+ sig { override.params(others: T::Array[RbsGenerator::RbsObject]).returns(T::Boolean) }
1611
+ def mergeable?(others); end
1612
+
1613
+ sig { override.params(others: T::Array[RbsGenerator::RbsObject]).void }
1614
+ def merge_into_self(others); end
1615
+
1616
+ sig { override.returns(String) }
1617
+ def describe; end
1618
+ end
1619
+
1620
+ class MethodSignature
1621
+ extend T::Sig
1622
+
1623
+ sig do
1624
+ params(
1625
+ parameters: T::Array[Parameter],
1626
+ return_type: T.nilable(Types::TypeLike),
1627
+ block: T.nilable(Block),
1628
+ type_parameters: T.nilable(T::Array[Symbol])
1629
+ ).void
1630
+ end
1631
+ def initialize(parameters, return_type = nil, block: nil, type_parameters: nil); end
1632
+
1633
+ sig { overridable.params(other: Object).returns(T::Boolean) }
1634
+ def ==(other); end
1635
+
1636
+ sig { returns(T::Array[Parameter]) }
1637
+ attr_reader :parameters
1638
+
1639
+ sig { returns(T.nilable(Types::TypeLike)) }
1640
+ attr_reader :return_type
1641
+
1642
+ sig { returns(T.nilable(Block)) }
1643
+ attr_reader :block
1644
+
1645
+ sig { returns(T::Array[Symbol]) }
1646
+ attr_reader :type_parameters
1647
+
1648
+ sig { params(options: Options).returns(T::Array[String]) }
1649
+ def generate_rbs(options); end
1650
+ end
1651
+
1652
+ class ModuleNamespace < Namespace
1653
+ extend T::Sig
1654
+
1655
+ sig { override.params(indent_level: Integer, options: Options).returns(T::Array[String]) }
1656
+ def generate_rbs(indent_level, options); end
1657
+
1658
+ sig { override.returns(String) }
1659
+ def describe; end
1660
+ end
1661
+
1662
+ class Namespace < RbsObject
1663
+ extend T::Sig
1664
+
1665
+ sig { override.overridable.params(indent_level: Integer, options: Options).returns(T::Array[String]) }
1666
+ def generate_rbs(indent_level, options); end
1667
+
1668
+ sig { params(generator: Generator, name: T.nilable(String), block: T.nilable(T.proc.params(x: Namespace).void)).void }
1669
+ def initialize(generator, name = nil, &block); end
1670
+
1671
+ sig { returns(T::Array[RbsObject]) }
1672
+ attr_reader :children
1673
+
1674
+ sig { returns(T::Array[RbsGenerator::Extend]) }
1675
+ def extends; end
1676
+
1677
+ sig { returns(T::Array[RbsGenerator::Include]) }
1678
+ def includes; end
1679
+
1680
+ sig { returns(T::Array[RbsGenerator::TypeAlias]) }
1681
+ def aliases; end
1682
+
1683
+ sig { returns(T::Array[RbsGenerator::Constant]) }
1684
+ def constants; end
1685
+
1686
+ sig { params(object: T.untyped, block: T.proc.params(x: Namespace).void).void }
1687
+ def path(object, &block); end
1688
+
1689
+ sig { params(comment: T.any(String, T::Array[String])).void }
1690
+ def add_comment_to_next_child(comment); end
1691
+
1692
+ sig { params(name: String, superclass: T.nilable(Types::TypeLike), block: T.nilable(T.proc.params(x: ClassNamespace).void)).returns(ClassNamespace) }
1693
+ def create_class(name, superclass: nil, &block); end
1694
+
1695
+ sig { params(name: String, block: T.nilable(T.proc.params(x: Namespace).void)).returns(ModuleNamespace) }
1696
+ def create_module(name, &block); end
1697
+
1698
+ sig { params(name: String, block: T.nilable(T.proc.params(x: Namespace).void)).returns(InterfaceNamespace) }
1699
+ def create_interface(name, &block); end
1700
+
1701
+ sig do
1702
+ params(
1703
+ name: String,
1704
+ signatures: T.nilable(T::Array[MethodSignature]),
1705
+ class_method: T::Boolean,
1706
+ block: T.nilable(T.proc.params(x: Method).void)
1707
+ ).returns(Method)
1708
+ end
1709
+ def create_method(name, signatures = nil, class_method: false, &block); end
1710
+
1711
+ sig do
1712
+ params(
1713
+ name: String,
1714
+ kind: Symbol,
1715
+ type: Types::TypeLike,
1716
+ block: T.nilable(T.proc.params(x: Attribute).void)
1717
+ ).returns(Attribute)
1718
+ end
1719
+ def create_attribute(name, kind:, type:, &block); end
1720
+
1721
+ sig { params(name: String, type: Types::TypeLike, block: T.nilable(T.proc.params(x: Attribute).void)).returns(Attribute) }
1722
+ def create_attr_reader(name, type:, &block); end
1723
+
1724
+ sig { params(name: String, type: Types::TypeLike, block: T.nilable(T.proc.params(x: Attribute).void)).returns(Attribute) }
1725
+ def create_attr_writer(name, type:, &block); end
1726
+
1727
+ sig { params(name: String, type: Types::TypeLike, block: T.nilable(T.proc.params(x: Attribute).void)).returns(Attribute) }
1728
+ def create_attr_accessor(name, type:, &block); end
1729
+
1730
+ sig { params(code: T.untyped, block: T.untyped).returns(T.untyped) }
1731
+ def create_arbitrary(code:, &block); end
1732
+
1733
+ sig { params(type: Types::TypeLike, block: T.nilable(T.proc.params(x: Extend).void)).returns(RbsGenerator::Extend) }
1734
+ def create_extend(type, &block); end
1735
+
1736
+ sig { params(extendables: T::Array[Types::TypeLike]).returns(T::Array[Extend]) }
1737
+ def create_extends(extendables); end
1738
+
1739
+ sig { params(type: Types::TypeLike, block: T.nilable(T.proc.params(x: Include).void)).returns(Include) }
1740
+ def create_include(type, &block); end
1741
+
1742
+ sig { params(includables: T::Array[Types::TypeLike]).returns(T::Array[Include]) }
1743
+ def create_includes(includables); end
1744
+
1745
+ sig { params(name: String, type: Types::TypeLike, block: T.nilable(T.proc.params(x: Constant).void)).returns(Constant) }
1746
+ def create_constant(name, type:, &block); end
1747
+
1748
+ sig { params(name: String, type: Types::TypeLike, block: T.nilable(T.proc.params(x: TypeAlias).void)).returns(TypeAlias) }
1749
+ def create_type_alias(name, type:, &block); end
1750
+
1751
+ sig { override.overridable.params(others: T::Array[RbsGenerator::RbsObject]).returns(T::Boolean) }
1752
+ def mergeable?(others); end
1753
+
1754
+ sig { override.overridable.params(others: T::Array[RbsGenerator::RbsObject]).void }
1755
+ def merge_into_self(others); end
1756
+
1757
+ sig { override.overridable.returns(String) }
1758
+ def describe; end
1759
+
1760
+ sig { overridable.params(indent_level: Integer, options: Options).returns(T::Array[String]) }
1761
+ def generate_body(indent_level, options); end
1762
+
1763
+ sig { params(object: RbsObject).void }
1764
+ def move_next_comments(object); end
1765
+ end
1766
+
1767
+ class Parameter
1768
+ extend T::Sig
1769
+ RBS_KEYWORDS = [
1770
+ 'type', 'interface', 'out', 'in', 'instance', 'extension', 'top', 'bot',
1771
+ 'self', 'nil', 'void'
1772
+ ]
1773
+ PREFIXES = {
1774
+ normal: '',
1775
+ splat: '*',
1776
+ double_splat: '**',
1777
+ }.freeze
1778
+
1779
+ sig { params(name: String, type: T.nilable(Types::TypeLike), required: T::Boolean).void }
1780
+ def initialize(name, type: nil, required: true); end
1781
+
1782
+ sig { params(other: Object).returns(T::Boolean) }
1783
+ def ==(other); end
1784
+
1785
+ sig { returns(String) }
1786
+ attr_reader :name
1787
+
1788
+ sig { returns(String) }
1789
+ def name_without_kind; end
1790
+
1791
+ sig { returns(Types::TypeLike) }
1792
+ attr_reader :type
1793
+
1794
+ sig { returns(T::Boolean) }
1795
+ attr_reader :required
1796
+
1797
+ sig { returns(Symbol) }
1798
+ attr_reader :kind
1799
+
1800
+ sig { returns(String) }
1801
+ def to_rbs_param; end
1802
+ end
1803
+
1804
+ class RbsObject < TypedObject
1805
+ abstract!
1806
+
1807
+ sig { params(generator: Generator, name: String).void }
1808
+ def initialize(generator, name); end
1809
+
1810
+ sig { returns(Generator) }
1811
+ attr_reader :generator
1812
+
1813
+ sig { abstract.params(indent_level: Integer, options: Options).returns(T::Array[String]) }
1814
+ def generate_rbs(indent_level, options); end
1815
+
1816
+ sig { abstract.params(others: T::Array[RbsGenerator::RbsObject]).returns(T::Boolean) }
1817
+ def mergeable?(others); end
1818
+
1819
+ sig { abstract.params(others: T::Array[RbsGenerator::RbsObject]).void }
1820
+ def merge_into_self(others); end
1821
+
1822
+ sig { override.overridable.returns(String) }
1823
+ def describe; end
1824
+ end
1825
+
1826
+ class TypeAlias < RbsObject
1827
+ sig do
1828
+ params(
1829
+ generator: Generator,
1830
+ name: String,
1831
+ type: Types::TypeLike,
1832
+ block: T.nilable(T.proc.params(x: TypeAlias).void)
1833
+ ).void
1834
+ end
1835
+ def initialize(generator, name:, type:, &block); end
1836
+
1837
+ sig { returns(Types::TypeLike) }
1838
+ attr_reader :type
1839
+
1840
+ sig { params(other: Object).returns(T::Boolean) }
1841
+ def ==(other); end
1842
+
1843
+ sig { override.params(indent_level: Integer, options: Options).returns(T::Array[String]) }
1844
+ def generate_rbs(indent_level, options); end
1845
+
1846
+ sig { override.params(others: T::Array[RbsGenerator::RbsObject]).returns(T::Boolean) }
1847
+ def mergeable?(others); end
1848
+
1849
+ sig { override.params(others: T::Array[RbsGenerator::RbsObject]).void }
1850
+ def merge_into_self(others); end
1851
+
1852
+ sig { override.returns(String) }
1853
+ def describe; end
1854
+ end
1855
+ end
1856
+ end