parlour 4.0.0 → 5.0.0.beta.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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 +0 -0
  6. data/.rspec +0 -0
  7. data/.travis.yml +0 -0
  8. data/CHANGELOG.md +52 -0
  9. data/CODE_OF_CONDUCT.md +0 -0
  10. data/Gemfile +0 -0
  11. data/LICENSE.txt +0 -0
  12. data/README.md +208 -20
  13. data/Rakefile +0 -0
  14. data/exe/parlour +45 -6
  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 +229 -0
  19. data/lib/parlour/debugging.rb +0 -0
  20. data/lib/parlour/detached_rbi_generator.rb +0 -0
  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 +0 -0
  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 +17 -6
  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 +40 -13
  38. data/lib/parlour/rbi_generator/parameter.rb +11 -5
  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 +0 -0
  60. data/lib/parlour/type_parser.rb +174 -5
  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 +1404 -441
  67. metadata +33 -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 = '4.0.0'
4
+ VERSION = '5.0.0.beta.4'
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
@@ -3,7 +3,7 @@ module Kernel
3
3
  end
4
4
 
5
5
  module Parlour
6
- VERSION = '4.0.0'
6
+ VERSION = '5.0.0.beta.4'
7
7
 
8
8
  class ConflictResolver
9
9
  extend T::Sig
@@ -11,7 +11,7 @@ module Parlour
11
11
  sig { params(namespace: RbiGenerator::Namespace, resolver: T.proc.params(
12
12
  desc: String,
13
13
  choices: T::Array[RbiGenerator::RbiObject]
14
- ).returns(RbiGenerator::RbiObject)).void }
14
+ ).returns(T.nilable(RbiGenerator::RbiObject))).void }
15
15
  def resolve_conflicts(namespace, &resolver); end
16
16
 
17
17
  sig { params(arr: T::Array[T.untyped]).returns(T.nilable(Symbol)) }
@@ -19,6 +19,9 @@ module Parlour
19
19
 
20
20
  sig { params(arr: T::Array[T.untyped]).returns(T::Boolean) }
21
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
22
25
  end
23
26
 
24
27
  module Debugging
@@ -57,6 +60,52 @@ module Parlour
57
60
  end
58
61
  end
59
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
+
60
109
  class ParseError < StandardError
61
110
  extend T::Sig
62
111
 
@@ -181,6 +230,15 @@ module Parlour
181
230
  sig { params(path: NodePath, is_within_eigenclass: T::Boolean).returns(T::Array[RbiGenerator::Method]) }
182
231
  def parse_method_into_methods(path, is_within_eigenclass: false); end
183
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
+
184
242
  sig { params(node: T.nilable(Parser::AST::Node)).returns(T::Array[Symbol]) }
185
243
  def constant_names(node); end
186
244
 
@@ -213,338 +271,1416 @@ module Parlour
213
271
  def zip_by(a, fa, b, fb); end
214
272
  end
215
273
 
216
- class RbiGenerator
217
- extend T::Sig
218
-
219
- sig { params(break_params: Integer, tab_size: Integer, sort_namespaces: T::Boolean).void }
220
- def initialize(break_params: 4, tab_size: 2, sort_namespaces: false); end
274
+ class TypedObject
275
+ abstract!
221
276
 
222
- sig { returns(Options) }
223
- attr_reader :options
277
+ extend T::Sig
278
+ extend T::Helpers
224
279
 
225
- sig { returns(Namespace) }
226
- attr_reader :root
280
+ sig { params(name: String).void }
281
+ def initialize(name); end
227
282
 
228
283
  sig { returns(T.nilable(Plugin)) }
229
- attr_accessor :current_plugin
230
-
231
- sig { overridable.params(strictness: String).returns(String) }
232
- def rbi(strictness = 'strong'); end
284
+ attr_reader :generated_by
233
285
 
234
- class Arbitrary < RbiObject
235
- sig { params(generator: RbiGenerator, code: String, block: T.nilable(T.proc.params(x: Arbitrary).void)).void }
236
- def initialize(generator, code: '', &block); end
286
+ sig { returns(String) }
287
+ attr_reader :name
237
288
 
238
- sig { returns(String) }
239
- attr_accessor :code
289
+ sig { returns(T::Array[String]) }
290
+ attr_reader :comments
240
291
 
241
- sig { params(other: Object).returns(T::Boolean) }
242
- def ==(other); end
292
+ sig { params(comment: T.any(String, T::Array[String])).void }
293
+ def add_comment(comment); end
243
294
 
244
- sig { override.params(indent_level: Integer, options: Options).returns(T::Array[String]) }
245
- def generate_rbi(indent_level, options); end
295
+ sig { abstract.returns(String) }
296
+ def describe; end
246
297
 
247
- sig { override.params(others: T::Array[RbiGenerator::RbiObject]).returns(T::Boolean) }
248
- def mergeable?(others); end
298
+ sig { params(indent_level: Integer, options: Options).returns(T::Array[String]) }
299
+ def generate_comments(indent_level, options); end
300
+ end
249
301
 
250
- sig { override.params(others: T::Array[RbiGenerator::RbiObject]).void }
251
- def merge_into_self(others); end
302
+ module Types
303
+ TypeLike = T.type_alias { T.any(String, Type) }
252
304
 
253
- sig { override.returns(String) }
254
- def describe; end
255
- end
305
+ class Type
306
+ abstract!
256
307
 
257
- class Attribute < Method
258
- sig do
259
- params(
260
- generator: RbiGenerator,
261
- name: String,
262
- kind: Symbol,
263
- type: String,
264
- class_attribute: T::Boolean,
265
- block: T.nilable(T.proc.params(x: Attribute).void)
266
- ).void
267
- end
268
- def initialize(generator, name, kind, type, class_attribute: false, &block); end
308
+ extend T::Sig
309
+ extend T::Helpers
269
310
 
270
- sig { returns(Symbol) }
271
- attr_reader :kind
311
+ sig { abstract.returns(String) }
312
+ def generate_rbi; end
272
313
 
273
- sig { returns(T::Boolean) }
274
- attr_reader :class_attribute
314
+ sig { abstract.returns(String) }
315
+ def generate_rbs; end
275
316
 
276
- sig { override.params(other: Object).returns(T::Boolean) }
277
- def ==(other); end
317
+ sig { params(type_like: TypeLike).returns(Type) }
318
+ def self.to_type(type_like); end
278
319
 
279
- sig { override.params(indent_level: Integer, options: Options).returns(T::Array[String]) }
280
- def generate_definition(indent_level, options); end
281
- end
320
+ sig { params(type_like: TypeLike).returns(Type) }
321
+ def to_type(type_like); end
282
322
 
283
- class ClassNamespace < Namespace
284
- extend T::Sig
323
+ sig { returns(T.untyped) }
324
+ def hash; end
285
325
 
286
- sig do
287
- params(
288
- generator: RbiGenerator,
289
- name: String,
290
- final: T::Boolean,
291
- superclass: T.nilable(String),
292
- abstract: T::Boolean,
293
- block: T.nilable(T.proc.params(x: ClassNamespace).void)
294
- ).void
295
- end
296
- def initialize(generator, name, final, superclass, abstract, &block); end
326
+ sig { abstract.returns(String) }
327
+ def describe; end
328
+ end
297
329
 
298
- sig { override.params(indent_level: Integer, options: Options).returns(T::Array[String]) }
299
- def generate_rbi(indent_level, options); end
330
+ class Raw < Type
331
+ sig { params(str: String).void }
332
+ def initialize(str); end
300
333
 
301
- sig { returns(T.nilable(String)) }
302
- attr_reader :superclass
334
+ sig { returns(String) }
335
+ attr_reader :str
303
336
 
304
- sig { returns(T::Boolean) }
305
- attr_reader :abstract
337
+ sig { params(other: Object).returns(T::Boolean) }
338
+ def ==(other); end
306
339
 
307
- sig { override.params(others: T::Array[RbiGenerator::RbiObject]).returns(T::Boolean) }
308
- def mergeable?(others); end
340
+ sig { override.returns(String) }
341
+ def generate_rbi; end
309
342
 
310
- sig { override.params(others: T::Array[RbiGenerator::RbiObject]).void }
311
- def merge_into_self(others); end
343
+ sig { override.returns(String) }
344
+ def generate_rbs; end
312
345
 
313
346
  sig { override.returns(String) }
314
347
  def describe; end
315
348
  end
316
349
 
317
- class Constant < RbiObject
318
- sig do
319
- params(
320
- generator: RbiGenerator,
321
- name: String,
322
- value: String,
323
- eigen_constant: T::Boolean,
324
- block: T.nilable(T.proc.params(x: Constant).void)
325
- ).void
326
- end
327
- def initialize(generator, name: '', value: '', eigen_constant: false, &block); end
328
-
329
- sig { returns(String) }
330
- attr_reader :value
331
-
332
- sig { returns(T.untyped) }
333
- attr_reader :eigen_constant
350
+ class Nilable < Type
351
+ sig { params(type: TypeLike).void }
352
+ def initialize(type); end
334
353
 
335
354
  sig { params(other: Object).returns(T::Boolean) }
336
355
  def ==(other); end
337
356
 
338
- sig { override.params(indent_level: Integer, options: Options).returns(T::Array[String]) }
339
- def generate_rbi(indent_level, options); end
357
+ sig { returns(Type) }
358
+ attr_reader :type
340
359
 
341
- sig { override.params(others: T::Array[RbiGenerator::RbiObject]).returns(T::Boolean) }
342
- def mergeable?(others); end
360
+ sig { override.returns(String) }
361
+ def generate_rbi; end
343
362
 
344
- sig { override.params(others: T::Array[RbiGenerator::RbiObject]).void }
345
- def merge_into_self(others); end
363
+ sig { override.returns(String) }
364
+ def generate_rbs; end
346
365
 
347
366
  sig { override.returns(String) }
348
367
  def describe; end
349
368
  end
350
369
 
351
- class EnumClassNamespace < ClassNamespace
352
- extend T::Sig
370
+ class Union < Type
371
+ sig { params(types: T::Array[TypeLike]).void }
372
+ def initialize(types); end
353
373
 
354
- sig do
355
- params(
356
- generator: RbiGenerator,
357
- name: String,
358
- final: T::Boolean,
359
- enums: T::Array[T.any([String, String], String)],
360
- abstract: T::Boolean,
361
- block: T.nilable(T.proc.params(x: EnumClassNamespace).void)
362
- ).void
363
- end
364
- def initialize(generator, name, final, enums, abstract, &block); end
374
+ sig { params(other: Object).returns(T::Boolean) }
375
+ def ==(other); end
365
376
 
366
- sig { returns(T::Array[T.any([String, String], String)]) }
367
- attr_reader :enums
377
+ sig { returns(T::Array[Type]) }
378
+ attr_reader :types
368
379
 
369
- sig { override.params(indent_level: Integer, options: Options).returns(T::Array[String]) }
370
- def generate_body(indent_level, options); end
380
+ sig { override.returns(String) }
381
+ def generate_rbi; end
371
382
 
372
- sig { override.params(others: T::Array[RbiGenerator::RbiObject]).returns(T::Boolean) }
373
- def mergeable?(others); end
383
+ sig { override.returns(String) }
384
+ def generate_rbs; end
374
385
 
375
- sig { override.params(others: T::Array[RbiGenerator::RbiObject]).void }
376
- def merge_into_self(others); end
386
+ sig { override.returns(String) }
387
+ def describe; end
377
388
  end
378
389
 
379
- class Extend < RbiObject
380
- sig { params(generator: RbiGenerator, name: String, block: T.nilable(T.proc.params(x: Extend).void)).void }
381
- def initialize(generator, name: '', &block); end
390
+ class Intersection < Type
391
+ sig { params(types: T::Array[TypeLike]).void }
392
+ def initialize(types); end
382
393
 
383
394
  sig { params(other: Object).returns(T::Boolean) }
384
395
  def ==(other); end
385
396
 
386
- sig { override.params(indent_level: Integer, options: Options).returns(T::Array[String]) }
387
- def generate_rbi(indent_level, options); end
397
+ sig { returns(T::Array[Type]) }
398
+ attr_reader :types
388
399
 
389
- sig { override.params(others: T::Array[RbiGenerator::RbiObject]).returns(T::Boolean) }
390
- def mergeable?(others); end
400
+ sig { override.returns(String) }
401
+ def generate_rbi; end
391
402
 
392
- sig { override.params(others: T::Array[RbiGenerator::RbiObject]).void }
393
- def merge_into_self(others); end
403
+ sig { override.returns(String) }
404
+ def generate_rbs; end
394
405
 
395
406
  sig { override.returns(String) }
396
407
  def describe; end
397
408
  end
398
409
 
399
- class Include < RbiObject
400
- sig { params(generator: RbiGenerator, name: String, block: T.nilable(T.proc.params(x: Include).void)).void }
401
- def initialize(generator, name: '', &block); end
410
+ class Tuple < Type
411
+ sig { params(types: T::Array[TypeLike]).void }
412
+ def initialize(types); end
402
413
 
403
414
  sig { params(other: Object).returns(T::Boolean) }
404
415
  def ==(other); end
405
416
 
406
- sig { override.params(indent_level: Integer, options: Options).returns(T::Array[String]) }
407
- def generate_rbi(indent_level, options); end
417
+ sig { returns(T::Array[Type]) }
418
+ attr_reader :types
408
419
 
409
- sig { override.params(others: T::Array[RbiGenerator::RbiObject]).returns(T::Boolean) }
410
- def mergeable?(others); end
420
+ sig { override.returns(String) }
421
+ def generate_rbi; end
411
422
 
412
- sig { override.params(others: T::Array[RbiGenerator::RbiObject]).void }
413
- def merge_into_self(others); end
423
+ sig { override.returns(String) }
424
+ def generate_rbs; end
414
425
 
415
426
  sig { override.returns(String) }
416
427
  def describe; end
417
428
  end
418
429
 
419
- class Method < RbiObject
420
- extend T::Sig
430
+ class SingleElementCollection < Type
431
+ abstract!
421
432
 
422
- sig do
423
- params(
424
- generator: RbiGenerator,
425
- name: String,
426
- parameters: T::Array[Parameter],
427
- return_type: T.nilable(String),
428
- abstract: T::Boolean,
429
- implementation: T::Boolean,
430
- override: T::Boolean,
431
- overridable: T::Boolean,
432
- class_method: T::Boolean,
433
- final: T::Boolean,
434
- type_parameters: T.nilable(T::Array[Symbol]),
435
- block: T.nilable(T.proc.params(x: Method).void)
436
- ).void
437
- end
438
- 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
433
+ sig { params(element: TypeLike).void }
434
+ def initialize(element); end
439
435
 
440
- sig { overridable.params(other: Object).returns(T::Boolean) }
441
- def ==(other); end
436
+ sig { returns(Type) }
437
+ attr_reader :element
442
438
 
443
- sig { returns(T::Array[Parameter]) }
444
- attr_reader :parameters
439
+ sig { abstract.returns(String) }
440
+ def collection_name; end
445
441
 
446
- sig { returns(T.nilable(String)) }
447
- attr_reader :return_type
442
+ sig { override.returns(String) }
443
+ def generate_rbi; end
448
444
 
449
- sig { returns(T::Boolean) }
450
- attr_reader :abstract
445
+ sig { override.returns(String) }
446
+ def generate_rbs; end
451
447
 
452
- sig { returns(T::Boolean) }
453
- attr_reader :implementation
448
+ sig { override.returns(String) }
449
+ def describe; end
450
+ end
454
451
 
455
- sig { returns(T::Boolean) }
456
- attr_reader :override
452
+ class Array < SingleElementCollection
453
+ sig { override.returns(String) }
454
+ def collection_name; end
457
455
 
458
- sig { returns(T::Boolean) }
459
- attr_reader :overridable
456
+ sig { params(other: Object).returns(T::Boolean) }
457
+ def ==(other); end
458
+ end
460
459
 
461
- sig { returns(T::Boolean) }
462
- attr_reader :class_method
460
+ class Set < SingleElementCollection
461
+ sig { override.returns(String) }
462
+ def collection_name; end
463
463
 
464
- sig { returns(T::Boolean) }
465
- attr_reader :final
464
+ sig { params(other: Object).returns(T::Boolean) }
465
+ def ==(other); end
466
+ end
466
467
 
467
- sig { returns(T::Array[Symbol]) }
468
- attr_reader :type_parameters
468
+ class Range < SingleElementCollection
469
+ sig { override.returns(String) }
470
+ def collection_name; end
469
471
 
470
- sig { override.params(indent_level: Integer, options: Options).returns(T::Array[String]) }
471
- def generate_rbi(indent_level, options); end
472
+ sig { params(other: Object).returns(T::Boolean) }
473
+ def ==(other); end
474
+ end
472
475
 
473
- sig { override.params(others: T::Array[RbiGenerator::RbiObject]).returns(T::Boolean) }
474
- def mergeable?(others); end
476
+ class Enumerable < SingleElementCollection
477
+ sig { override.returns(String) }
478
+ def collection_name; end
475
479
 
476
- sig { override.params(others: T::Array[RbiGenerator::RbiObject]).void }
477
- def merge_into_self(others); end
480
+ sig { params(other: Object).returns(T::Boolean) }
481
+ def ==(other); end
482
+ end
478
483
 
484
+ class Enumerator < SingleElementCollection
479
485
  sig { override.returns(String) }
480
- def describe; end
486
+ def collection_name; end
481
487
 
482
- sig { overridable.params(indent_level: Integer, options: Options).returns(T::Array[String]) }
483
- def generate_definition(indent_level, options); end
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
484
689
 
485
690
  sig { returns(String) }
486
- def qualifiers; end
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
487
710
  end
488
711
 
489
- class ModuleNamespace < Namespace
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
490
745
  extend T::Sig
491
746
 
492
747
  sig do
493
748
  params(
494
- generator: RbiGenerator,
749
+ generator: Generator,
495
750
  name: String,
496
751
  final: T::Boolean,
497
- interface: T::Boolean,
752
+ superclass: T.nilable(String),
753
+ abstract: T::Boolean,
498
754
  block: T.nilable(T.proc.params(x: ClassNamespace).void)
499
755
  ).void
500
756
  end
501
- def initialize(generator, name, final, interface, &block); end
757
+ def initialize(generator, name, final, superclass, abstract, &block); end
502
758
 
503
759
  sig { override.params(indent_level: Integer, options: Options).returns(T::Array[String]) }
504
760
  def generate_rbi(indent_level, options); end
505
761
 
762
+ sig { returns(T.nilable(String)) }
763
+ attr_reader :superclass
764
+
506
765
  sig { returns(T::Boolean) }
507
- attr_reader :interface
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
508
1609
 
509
- sig { override.params(others: T::Array[RbiGenerator::RbiObject]).returns(T::Boolean) }
1610
+ sig { override.params(others: T::Array[RbsGenerator::RbsObject]).returns(T::Boolean) }
510
1611
  def mergeable?(others); end
511
1612
 
512
- sig { override.params(others: T::Array[RbiGenerator::RbiObject]).void }
1613
+ sig { override.params(others: T::Array[RbsGenerator::RbsObject]).void }
513
1614
  def merge_into_self(others); end
514
1615
 
515
1616
  sig { override.returns(String) }
516
1617
  def describe; end
517
1618
  end
518
1619
 
519
- class Namespace < RbiObject
1620
+ class MethodSignature
520
1621
  extend T::Sig
521
1622
 
522
- sig { override.overridable.params(indent_level: Integer, options: Options).returns(T::Array[String]) }
523
- def generate_rbi(indent_level, options); end
524
-
525
1623
  sig do
526
1624
  params(
527
- generator: RbiGenerator,
528
- name: T.nilable(String),
529
- final: T::Boolean,
530
- block: T.nilable(T.proc.params(x: Namespace).void)
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])
531
1629
  ).void
532
1630
  end
533
- def initialize(generator, name = nil, final = false, &block); end
1631
+ def initialize(parameters, return_type = nil, block: nil, type_parameters: nil); end
534
1632
 
535
- sig { returns(T::Boolean) }
536
- attr_reader :final
1633
+ sig { overridable.params(other: Object).returns(T::Boolean) }
1634
+ def ==(other); end
537
1635
 
538
- sig { returns(T::Array[RbiObject]) }
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]) }
539
1672
  attr_reader :children
540
1673
 
541
- sig { returns(T::Array[RbiGenerator::Extend]) }
1674
+ sig { returns(T::Array[RbsGenerator::Extend]) }
542
1675
  def extends; end
543
1676
 
544
- sig { returns(T::Array[RbiGenerator::Include]) }
1677
+ sig { returns(T::Array[RbsGenerator::Include]) }
545
1678
  def includes; end
546
1679
 
547
- sig { returns(T::Array[RbiGenerator::Constant]) }
1680
+ sig { returns(T::Array[RbsGenerator::TypeAlias]) }
1681
+ def aliases; end
1682
+
1683
+ sig { returns(T::Array[RbsGenerator::Constant]) }
548
1684
  def constants; end
549
1685
 
550
1686
  sig { params(object: T.untyped, block: T.proc.params(x: Namespace).void).void }
@@ -553,140 +1689,69 @@ module Parlour
553
1689
  sig { params(comment: T.any(String, T::Array[String])).void }
554
1690
  def add_comment_to_next_child(comment); end
555
1691
 
556
- sig do
557
- params(
558
- name: String,
559
- final: T::Boolean,
560
- superclass: T.nilable(String),
561
- abstract: T::Boolean,
562
- block: T.nilable(T.proc.params(x: ClassNamespace).void)
563
- ).returns(ClassNamespace)
564
- end
565
- def create_class(name, final: false, superclass: nil, abstract: false, &block); end
566
-
567
- sig do
568
- params(
569
- name: String,
570
- final: T::Boolean,
571
- enums: T.nilable(T::Array[T.any([String, String], String)]),
572
- abstract: T::Boolean,
573
- block: T.nilable(T.proc.params(x: EnumClassNamespace).void)
574
- ).returns(EnumClassNamespace)
575
- end
576
- def create_enum_class(name, final: false, enums: nil, abstract: false, &block); end
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
577
1694
 
578
- sig do
579
- params(
580
- name: String,
581
- final: T::Boolean,
582
- props: T.nilable(T::Array[StructProp]),
583
- abstract: T::Boolean,
584
- block: T.nilable(T.proc.params(x: StructClassNamespace).void)
585
- ).returns(StructClassNamespace)
586
- end
587
- def create_struct_class(name, final: false, props: nil, abstract: false, &block); end
1695
+ sig { params(name: String, block: T.nilable(T.proc.params(x: Namespace).void)).returns(ModuleNamespace) }
1696
+ def create_module(name, &block); end
588
1697
 
589
- sig do
590
- params(
591
- name: String,
592
- final: T::Boolean,
593
- interface: T::Boolean,
594
- block: T.nilable(T.proc.params(x: ClassNamespace).void)
595
- ).returns(ModuleNamespace)
596
- end
597
- def create_module(name, final: false, interface: false, &block); end
1698
+ sig { params(name: String, block: T.nilable(T.proc.params(x: Namespace).void)).returns(InterfaceNamespace) }
1699
+ def create_interface(name, &block); end
598
1700
 
599
1701
  sig do
600
1702
  params(
601
1703
  name: String,
602
- parameters: T.nilable(T::Array[Parameter]),
603
- return_type: T.nilable(String),
604
- returns: T.nilable(String),
605
- abstract: T::Boolean,
606
- implementation: T::Boolean,
607
- override: T::Boolean,
608
- overridable: T::Boolean,
1704
+ signatures: T.nilable(T::Array[MethodSignature]),
609
1705
  class_method: T::Boolean,
610
- final: T::Boolean,
611
- type_parameters: T.nilable(T::Array[Symbol]),
612
1706
  block: T.nilable(T.proc.params(x: Method).void)
613
1707
  ).returns(Method)
614
1708
  end
615
- 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
1709
+ def create_method(name, signatures = nil, class_method: false, &block); end
616
1710
 
617
1711
  sig do
618
1712
  params(
619
1713
  name: String,
620
1714
  kind: Symbol,
621
- type: String,
622
- class_attribute: T::Boolean,
1715
+ type: Types::TypeLike,
623
1716
  block: T.nilable(T.proc.params(x: Attribute).void)
624
1717
  ).returns(Attribute)
625
1718
  end
626
- def create_attribute(name, kind:, type:, class_attribute: false, &block); end
1719
+ def create_attribute(name, kind:, type:, &block); end
627
1720
 
628
- sig do
629
- params(
630
- name: String,
631
- type: String,
632
- class_attribute: T::Boolean,
633
- block: T.nilable(T.proc.params(x: Attribute).void)
634
- ).returns(Attribute)
635
- end
636
- def create_attr_reader(name, type:, class_attribute: false, &block); end
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
637
1723
 
638
- sig do
639
- params(
640
- name: String,
641
- type: String,
642
- class_attribute: T::Boolean,
643
- block: T.nilable(T.proc.params(x: Attribute).void)
644
- ).returns(Attribute)
645
- end
646
- def create_attr_writer(name, type:, class_attribute: false, &block); end
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
647
1726
 
648
- sig do
649
- params(
650
- name: String,
651
- type: String,
652
- class_attribute: T::Boolean,
653
- block: T.nilable(T.proc.params(x: Attribute).void)
654
- ).returns(Attribute)
655
- end
656
- def create_attr_accessor(name, type:, class_attribute: false, &block); end
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
657
1729
 
658
1730
  sig { params(code: T.untyped, block: T.untyped).returns(T.untyped) }
659
1731
  def create_arbitrary(code:, &block); end
660
1732
 
661
- sig { params(name: String, block: T.nilable(T.proc.params(x: Extend).void)).returns(RbiGenerator::Extend) }
662
- def create_extend(name, &block); end
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
663
1735
 
664
- sig { params(extendables: T::Array[String]).returns(T::Array[Extend]) }
1736
+ sig { params(extendables: T::Array[Types::TypeLike]).returns(T::Array[Extend]) }
665
1737
  def create_extends(extendables); end
666
1738
 
667
- sig { params(name: String, block: T.nilable(T.proc.params(x: Include).void)).returns(Include) }
668
- def create_include(name, &block); end
1739
+ sig { params(type: Types::TypeLike, block: T.nilable(T.proc.params(x: Include).void)).returns(Include) }
1740
+ def create_include(type, &block); end
669
1741
 
670
- sig { params(includables: T::Array[String]).returns(T::Array[Include]) }
1742
+ sig { params(includables: T::Array[Types::TypeLike]).returns(T::Array[Include]) }
671
1743
  def create_includes(includables); end
672
1744
 
673
- sig do
674
- params(
675
- name: String,
676
- value: String,
677
- eigen_constant: T::Boolean,
678
- block: T.nilable(T.proc.params(x: Constant).void)
679
- ).returns(Constant)
680
- end
681
- def create_constant(name, value:, eigen_constant: false, &block); end
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
682
1747
 
683
- sig { params(name: String, type: String, block: T.nilable(T.proc.params(x: Constant).void)).returns(Constant) }
1748
+ sig { params(name: String, type: Types::TypeLike, block: T.nilable(T.proc.params(x: TypeAlias).void)).returns(TypeAlias) }
684
1749
  def create_type_alias(name, type:, &block); end
685
1750
 
686
- sig { override.overridable.params(others: T::Array[RbiGenerator::RbiObject]).returns(T::Boolean) }
1751
+ sig { override.overridable.params(others: T::Array[RbsGenerator::RbsObject]).returns(T::Boolean) }
687
1752
  def mergeable?(others); end
688
1753
 
689
- sig { override.overridable.params(others: T::Array[RbiGenerator::RbiObject]).void }
1754
+ sig { override.overridable.params(others: T::Array[RbsGenerator::RbsObject]).void }
690
1755
  def merge_into_self(others); end
691
1756
 
692
1757
  sig { override.overridable.returns(String) }
@@ -695,40 +1760,24 @@ module Parlour
695
1760
  sig { overridable.params(indent_level: Integer, options: Options).returns(T::Array[String]) }
696
1761
  def generate_body(indent_level, options); end
697
1762
 
698
- sig { params(object: RbiObject).void }
1763
+ sig { params(object: RbsObject).void }
699
1764
  def move_next_comments(object); end
700
1765
  end
701
1766
 
702
- class Options
703
- extend T::Sig
704
-
705
- sig { params(break_params: Integer, tab_size: Integer, sort_namespaces: T::Boolean).void }
706
- def initialize(break_params:, tab_size:, sort_namespaces:); end
707
-
708
- sig { returns(Integer) }
709
- attr_reader :break_params
710
-
711
- sig { returns(Integer) }
712
- attr_reader :tab_size
713
-
714
- sig { returns(T::Boolean) }
715
- attr_reader :sort_namespaces
716
-
717
- sig { params(level: Integer, str: String).returns(String) }
718
- def indented(level, str); end
719
- end
720
-
721
1767
  class Parameter
722
1768
  extend T::Sig
1769
+ RBS_KEYWORDS = [
1770
+ 'type', 'interface', 'out', 'in', 'instance', 'extension', 'top', 'bot',
1771
+ 'self', 'nil', 'void'
1772
+ ]
723
1773
  PREFIXES = {
724
1774
  normal: '',
725
1775
  splat: '*',
726
1776
  double_splat: '**',
727
- block: '&'
728
1777
  }.freeze
729
1778
 
730
- sig { params(name: String, type: T.nilable(String), default: T.nilable(String)).void }
731
- def initialize(name, type: nil, default: nil); end
1779
+ sig { params(name: String, type: T.nilable(Types::TypeLike), required: T::Boolean).void }
1780
+ def initialize(name, type: nil, required: true); end
732
1781
 
733
1782
  sig { params(other: Object).returns(T::Boolean) }
734
1783
  def ==(other); end
@@ -739,155 +1788,69 @@ module Parlour
739
1788
  sig { returns(String) }
740
1789
  def name_without_kind; end
741
1790
 
742
- sig { returns(String) }
1791
+ sig { returns(Types::TypeLike) }
743
1792
  attr_reader :type
744
1793
 
745
- sig { returns(T.nilable(String)) }
746
- attr_reader :default
1794
+ sig { returns(T::Boolean) }
1795
+ attr_reader :required
747
1796
 
748
1797
  sig { returns(Symbol) }
749
1798
  attr_reader :kind
750
1799
 
751
1800
  sig { returns(String) }
752
- def to_def_param; end
753
-
754
- sig { returns(String) }
755
- def to_sig_param; end
1801
+ def to_rbs_param; end
756
1802
  end
757
1803
 
758
- class RbiObject
1804
+ class RbsObject < TypedObject
759
1805
  abstract!
760
1806
 
761
- extend T::Helpers
762
- extend T::Sig
763
-
764
- sig { params(generator: RbiGenerator, name: String).void }
1807
+ sig { params(generator: Generator, name: String).void }
765
1808
  def initialize(generator, name); end
766
1809
 
767
- sig { returns(RbiGenerator) }
1810
+ sig { returns(Generator) }
768
1811
  attr_reader :generator
769
1812
 
770
- sig { returns(T.nilable(Plugin)) }
771
- attr_reader :generated_by
772
-
773
- sig { returns(String) }
774
- attr_reader :name
775
-
776
- sig { returns(T::Array[String]) }
777
- attr_reader :comments
778
-
779
- sig { params(comment: T.any(String, T::Array[String])).void }
780
- def add_comment(comment); end
781
-
782
1813
  sig { abstract.params(indent_level: Integer, options: Options).returns(T::Array[String]) }
783
- def generate_rbi(indent_level, options); end
1814
+ def generate_rbs(indent_level, options); end
784
1815
 
785
- sig { abstract.params(others: T::Array[RbiGenerator::RbiObject]).returns(T::Boolean) }
1816
+ sig { abstract.params(others: T::Array[RbsGenerator::RbsObject]).returns(T::Boolean) }
786
1817
  def mergeable?(others); end
787
1818
 
788
- sig { abstract.params(others: T::Array[RbiGenerator::RbiObject]).void }
1819
+ sig { abstract.params(others: T::Array[RbsGenerator::RbsObject]).void }
789
1820
  def merge_into_self(others); end
790
1821
 
791
- sig { abstract.returns(String) }
1822
+ sig { override.overridable.returns(String) }
792
1823
  def describe; end
793
-
794
- sig { params(indent_level: Integer, options: Options).returns(T::Array[String]) }
795
- def generate_comments(indent_level, options); end
796
1824
  end
797
1825
 
798
- class StructClassNamespace < ClassNamespace
799
- extend T::Sig
800
-
1826
+ class TypeAlias < RbsObject
801
1827
  sig do
802
1828
  params(
803
- generator: RbiGenerator,
1829
+ generator: Generator,
804
1830
  name: String,
805
- final: T::Boolean,
806
- props: T::Array[StructProp],
807
- abstract: T::Boolean,
808
- block: T.nilable(T.proc.params(x: StructClassNamespace).void)
1831
+ type: Types::TypeLike,
1832
+ block: T.nilable(T.proc.params(x: TypeAlias).void)
809
1833
  ).void
810
1834
  end
811
- def initialize(generator, name, final, props, abstract, &block); end
812
-
813
- sig { returns(T::Array[StructProp]) }
814
- attr_reader :props
815
-
816
- sig { override.params(indent_level: Integer, options: Options).returns(T::Array[String]) }
817
- def generate_body(indent_level, options); end
818
-
819
- sig { override.params(others: T::Array[RbiGenerator::RbiObject]).returns(T::Boolean) }
820
- def mergeable?(others); end
821
-
822
- sig { override.params(others: T::Array[RbiGenerator::RbiObject]).void }
823
- def merge_into_self(others); end
824
- end
825
-
826
- class StructProp
827
- extend T::Sig
828
- EXTRA_PROPERTIES = %i{
829
- optional enum dont_store foreign default factory immutable array override redaction
830
- }
1835
+ def initialize(generator, name:, type:, &block); end
831
1836
 
832
- sig do
833
- params(
834
- name: String,
835
- type: String,
836
- optional: T.nilable(T.any(T::Boolean, Symbol)),
837
- enum: T.nilable(String),
838
- dont_store: T.nilable(T::Boolean),
839
- foreign: T.nilable(String),
840
- default: T.nilable(String),
841
- factory: T.nilable(String),
842
- immutable: T.nilable(T::Boolean),
843
- array: T.nilable(String),
844
- override: T.nilable(T::Boolean),
845
- redaction: T.nilable(String)
846
- ).void
847
- end
848
- 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
1837
+ sig { returns(Types::TypeLike) }
1838
+ attr_reader :type
849
1839
 
850
1840
  sig { params(other: Object).returns(T::Boolean) }
851
1841
  def ==(other); end
852
1842
 
853
- sig { returns(String) }
854
- attr_reader :name
855
-
856
- sig { returns(T.nilable(String)) }
857
- attr_reader :type
858
-
859
- sig { returns(T.nilable(T.any(T::Boolean, Symbol))) }
860
- attr_reader :optional
861
-
862
- sig { returns(T.nilable(String)) }
863
- attr_reader :enum
864
-
865
- sig { returns(T.nilable(T::Boolean)) }
866
- attr_reader :dont_store
867
-
868
- sig { returns(T.nilable(String)) }
869
- attr_reader :foreign
870
-
871
- sig { returns(T.nilable(String)) }
872
- attr_reader :default
873
-
874
- sig { returns(T.nilable(String)) }
875
- attr_reader :factory
876
-
877
- sig { returns(T.nilable(T::Boolean)) }
878
- attr_reader :immutable
879
-
880
- sig { returns(T.nilable(String)) }
881
- attr_reader :array
1843
+ sig { override.params(indent_level: Integer, options: Options).returns(T::Array[String]) }
1844
+ def generate_rbs(indent_level, options); end
882
1845
 
883
- sig { returns(T.nilable(T::Boolean)) }
884
- attr_reader :override
1846
+ sig { override.params(others: T::Array[RbsGenerator::RbsObject]).returns(T::Boolean) }
1847
+ def mergeable?(others); end
885
1848
 
886
- sig { returns(T.nilable(String)) }
887
- attr_reader :redaction
1849
+ sig { override.params(others: T::Array[RbsGenerator::RbsObject]).void }
1850
+ def merge_into_self(others); end
888
1851
 
889
- sig { returns(String) }
890
- def to_prop_call; end
1852
+ sig { override.returns(String) }
1853
+ def describe; end
891
1854
  end
892
1855
  end
893
1856
  end