parlour 4.0.0 → 5.0.0.beta.4

Sign up to get free protection for your applications and to get access to all the features.
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