parlour 2.0.0 → 5.0.0.beta.1

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