mootool 0.1.1 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (76) hide show
  1. checksums.yaml +4 -4
  2. data/.DS_Store +0 -0
  3. data/.github/workflows/ci.yml +14 -14
  4. data/.github/workflows/gem-push.yml +26 -28
  5. data/.overcommit.yml +79 -0
  6. data/.rubocop.yml +147 -0
  7. data/.ruby-version +1 -1
  8. data/.run/All Specs.run.xml +46 -0
  9. data/CODE_OF_CONDUCT.md +2 -1
  10. data/Gemfile +14 -11
  11. data/Gemfile.lock +92 -31
  12. data/README.md +12 -6
  13. data/bin/tapioca +27 -0
  14. data/lib/mootool/command.rb +1 -0
  15. data/lib/mootool/controller_base.rb +4 -1
  16. data/lib/mootool/controllers/dwarf.rb +8 -0
  17. data/lib/mootool/controllers/dyld_linker.rb +8 -0
  18. data/lib/mootool/controllers/dyld_shared_cache.rb +8 -0
  19. data/lib/mootool/controllers/fat_binary.rb +8 -0
  20. data/lib/mootool/controllers/kernel_collection.rb +21 -15
  21. data/lib/mootool/controllers/sections.rb +8 -0
  22. data/lib/mootool/core_extensions.rb +26 -0
  23. data/lib/mootool/models/device_tree.rb +85 -0
  24. data/lib/mootool/models/img4.rb +49 -0
  25. data/lib/mootool/models/ipsw.rb +19 -0
  26. data/lib/mootool/version.rb +1 -1
  27. data/lib/mootool/views/sections.full.erb +2 -2
  28. data/lib/mootool.rb +10 -3
  29. data/mootool.gemspec +17 -12
  30. data/sorbet/rbi/annotations/rainbow.rbi +269 -0
  31. data/sorbet/rbi/gems/ast@2.4.2.rbi +618 -0
  32. data/sorbet/rbi/gems/childprocess@4.1.0.rbi +447 -0
  33. data/sorbet/rbi/gems/coderay@1.1.3.rbi +8 -0
  34. data/sorbet/rbi/gems/diff-lcs@1.5.0.rbi +1219 -0
  35. data/sorbet/rbi/gems/iniparse@1.5.0.rbi +1007 -0
  36. data/sorbet/rbi/gems/json@2.6.2.rbi +1650 -0
  37. data/sorbet/rbi/gems/method_source@1.0.0.rbi +8 -0
  38. data/sorbet/rbi/gems/netrc@0.11.0.rbi +186 -0
  39. data/sorbet/rbi/gems/overcommit@0.59.1.rbi +2747 -0
  40. data/sorbet/rbi/gems/parallel@1.22.1.rbi +353 -0
  41. data/sorbet/rbi/gems/parser@3.1.2.1.rbi +6198 -0
  42. data/sorbet/rbi/gems/plist@3.6.0.rbi +212 -0
  43. data/sorbet/rbi/gems/pry@0.14.1.rbi +8 -0
  44. data/sorbet/rbi/gems/rainbow@3.1.1.rbi +452 -0
  45. data/sorbet/rbi/gems/rake@13.0.6.rbi +3587 -0
  46. data/sorbet/rbi/gems/rbi@0.0.15.rbi +3619 -0
  47. data/sorbet/rbi/gems/regexp_parser@2.5.0.rbi +3927 -0
  48. data/sorbet/rbi/gems/rexml@3.2.5.rbi +5238 -0
  49. data/sorbet/rbi/gems/rspec-core@3.11.0.rbi +12834 -0
  50. data/sorbet/rbi/gems/rspec-expectations@3.11.0.rbi +9151 -0
  51. data/sorbet/rbi/gems/rspec-mocks@3.11.1.rbi +6506 -0
  52. data/sorbet/rbi/gems/rspec-support@3.11.0.rbi +2040 -0
  53. data/sorbet/rbi/gems/rspec@3.11.0.rbi +120 -0
  54. data/sorbet/rbi/gems/rubocop-ast@1.21.0.rbi +7990 -0
  55. data/sorbet/rbi/gems/rubocop-rake@0.6.0.rbi +413 -0
  56. data/sorbet/rbi/gems/rubocop-rspec@2.12.1.rbi +7604 -0
  57. data/sorbet/rbi/gems/rubocop@1.35.0.rbi +62260 -0
  58. data/sorbet/rbi/gems/ruby-macho@3.0.0.rbi +5039 -0
  59. data/sorbet/rbi/gems/ruby-progressbar@1.11.0.rbi +1445 -0
  60. data/sorbet/rbi/gems/rubyzip@2.3.2.rbi +2868 -0
  61. data/sorbet/rbi/gems/spoom@1.1.12.rbi +2829 -0
  62. data/sorbet/rbi/gems/tapioca@0.9.3.rbi +2151 -0
  63. data/sorbet/rbi/gems/thor@1.2.1.rbi +4532 -0
  64. data/sorbet/rbi/gems/unicode-display_width@2.2.0.rbi +60 -0
  65. data/sorbet/rbi/gems/unparser@0.6.5.rbi +8 -0
  66. data/sorbet/rbi/gems/webrick@1.7.0.rbi +3075 -0
  67. data/sorbet/rbi/gems/yard-sorbet@0.6.1.rbi +458 -0
  68. data/sorbet/rbi/gems/yard@0.9.28.rbi +20844 -0
  69. data/sorbet/rbi/sorbet-typed/lib/rainbow/all/rainbow.rbi +72 -24
  70. data/sorbet/rbi/sorbet-typed/lib/rake/all/rake.rbi +1697 -385
  71. data/sorbet/rbi/sorbet-typed/lib/rspec-core/all/rspec-core.rbi +30 -7
  72. data/sorbet/rbi/sorbet-typed/lib/rubocop/>=1.8/rubocop.rbi +3 -1
  73. data/sorbet/rbi/todo.rbi +7 -0
  74. data/sorbet/tapioca/config.yml +13 -0
  75. data/sorbet/tapioca/require.rb +4 -0
  76. metadata +89 -9
@@ -0,0 +1,2151 @@
1
+ # typed: false
2
+
3
+ # DO NOT EDIT MANUALLY
4
+ # This is an autogenerated file for types exported from the `tapioca` gem.
5
+ # Please instead update this file by running `bin/tapioca gem tapioca`.
6
+
7
+ class Bundler::Dependency < ::Gem::Dependency
8
+ include ::Tapioca::Gemfile::AutoRequireHook
9
+ end
10
+
11
+ # We need to do the alias-method-chain dance since Bootsnap does the same,
12
+ # and prepended modules and alias-method-chain don't play well together.
13
+ #
14
+ # So, why does Bootsnap do alias-method-chain and not prepend? Glad you asked!
15
+ # That's because RubyGems does alias-method-chain for Kernel#require and such,
16
+ # so, if Bootsnap were to do prepend, it might end up breaking RubyGems.
17
+ class Module
18
+ def append_features(constant); end
19
+ def autoload(const_name, path); end
20
+ def extend_object(obj); end
21
+ def prepend_features(constant); end
22
+ end
23
+
24
+ module RBI; end
25
+
26
+ class RBI::Tree < ::RBI::NodeWithComments
27
+ sig do
28
+ params(
29
+ loc: T.nilable(::RBI::Loc),
30
+ comments: T::Array[::RBI::Comment],
31
+ block: T.nilable(T.proc.params(node: ::RBI::Tree).void)
32
+ ).void
33
+ end
34
+ def initialize(loc: T.unsafe(nil), comments: T.unsafe(nil), &block); end
35
+
36
+ sig { params(node: ::RBI::Node).void }
37
+ def <<(node); end
38
+
39
+ sig { override.params(v: ::RBI::Printer).void }
40
+ def accept_printer(v); end
41
+
42
+ sig { params(with_todo_comment: T::Boolean).void }
43
+ def add_sig_templates!(with_todo_comment: T.unsafe(nil)); end
44
+
45
+ sig { params(annotation: ::String, annotate_scopes: T::Boolean, annotate_properties: T::Boolean).void }
46
+ def annotate!(annotation, annotate_scopes: T.unsafe(nil), annotate_properties: T.unsafe(nil)); end
47
+
48
+ sig do
49
+ params(
50
+ name: ::String,
51
+ superclass_name: T.nilable(::String),
52
+ block: T.nilable(T.proc.params(scope: ::RBI::Scope).void)
53
+ ).returns(::RBI::Scope)
54
+ end
55
+ def create_class(name, superclass_name: T.unsafe(nil), &block); end
56
+
57
+ sig { params(name: ::String, value: ::String).void }
58
+ def create_constant(name, value:); end
59
+
60
+ sig { params(name: ::String).void }
61
+ def create_extend(name); end
62
+
63
+ sig { params(name: ::String).void }
64
+ def create_include(name); end
65
+
66
+ sig do
67
+ params(
68
+ name: ::String,
69
+ parameters: T::Array[::RBI::TypedParam],
70
+ return_type: ::String,
71
+ class_method: T::Boolean,
72
+ visibility: ::RBI::Visibility
73
+ ).void
74
+ end
75
+ def create_method(name, parameters: T.unsafe(nil), return_type: T.unsafe(nil), class_method: T.unsafe(nil), visibility: T.unsafe(nil)); end
76
+
77
+ sig { params(name: ::String).void }
78
+ def create_mixes_in_class_methods(name); end
79
+
80
+ sig { params(name: ::String, block: T.nilable(T.proc.params(scope: ::RBI::Scope).void)).returns(::RBI::Scope) }
81
+ def create_module(name, &block); end
82
+
83
+ sig { params(constant: ::Module, block: T.nilable(T.proc.params(scope: ::RBI::Scope).void)).void }
84
+ def create_path(constant, &block); end
85
+
86
+ sig do
87
+ params(
88
+ name: ::String,
89
+ type: ::String,
90
+ variance: ::Symbol,
91
+ fixed: T.nilable(::String),
92
+ upper: T.nilable(::String),
93
+ lower: T.nilable(::String)
94
+ ).void
95
+ end
96
+ def create_type_variable(name, type:, variance: T.unsafe(nil), fixed: T.unsafe(nil), upper: T.unsafe(nil), lower: T.unsafe(nil)); end
97
+
98
+ sig { params(annotation: ::String).void }
99
+ def deannotate!(annotation); end
100
+
101
+ sig { returns(T::Boolean) }
102
+ def empty?; end
103
+
104
+ sig { void }
105
+ def group_nodes!; end
106
+
107
+ sig { returns(::RBI::Index) }
108
+ def index; end
109
+
110
+ sig do
111
+ params(
112
+ other: ::RBI::Tree,
113
+ left_name: ::String,
114
+ right_name: ::String,
115
+ keep: ::RBI::Rewriters::Merge::Keep
116
+ ).returns(::RBI::MergeTree)
117
+ end
118
+ def merge(other, left_name: T.unsafe(nil), right_name: T.unsafe(nil), keep: T.unsafe(nil)); end
119
+
120
+ sig { void }
121
+ def nest_non_public_methods!; end
122
+
123
+ sig { void }
124
+ def nest_singleton_methods!; end
125
+
126
+ sig { returns(T::Array[::RBI::Node]) }
127
+ def nodes; end
128
+
129
+ sig { override.returns(T::Boolean) }
130
+ def oneline?; end
131
+
132
+ sig { void }
133
+ def sort_nodes!; end
134
+
135
+ private
136
+
137
+ sig { params(node: ::RBI::Node).returns(::RBI::Node) }
138
+ def create_node(node); end
139
+
140
+ sig { returns(T::Hash[::String, ::RBI::Node]) }
141
+ def nodes_cache; end
142
+ end
143
+
144
+ class RBI::TypedParam < ::T::Struct
145
+ const :param, ::RBI::Param
146
+ const :type, ::String
147
+
148
+ class << self
149
+ def inherited(s); end
150
+ end
151
+ end
152
+
153
+ RBI::VERSION = T.let(T.unsafe(nil), String)
154
+
155
+ module T::Generic
156
+ def [](*types); end
157
+ def type_member(variance = T.unsafe(nil), fixed: T.unsafe(nil), lower: T.unsafe(nil), upper: T.unsafe(nil), &bounds_proc); end
158
+ def type_template(variance = T.unsafe(nil), fixed: T.unsafe(nil), lower: T.unsafe(nil), upper: T.unsafe(nil), &bounds_proc); end
159
+ end
160
+
161
+ # This module intercepts calls to generic type instantiations and type variable definitions.
162
+ # Tapioca stores the data from those calls in a `GenericTypeRegistry` which can then be used
163
+ # to look up the original call details when we are trying to do code generation.
164
+ #
165
+ # We are interested in the data of the `[]`, `type_member` and `type_template` calls which
166
+ # are all needed to generate good generic information at runtime.
167
+ module T::Generic::TypeStoragePatch
168
+ def [](*types); end
169
+ def type_member(variance = T.unsafe(nil), fixed: T.unsafe(nil), lower: T.unsafe(nil), upper: T.unsafe(nil), &bounds_proc); end
170
+ def type_template(variance = T.unsafe(nil), fixed: T.unsafe(nil), lower: T.unsafe(nil), upper: T.unsafe(nil), &bounds_proc); end
171
+ end
172
+
173
+ class T::Types::Simple < ::T::Types::Base
174
+ def name; end
175
+ end
176
+
177
+ module T::Types::Simple::GenericPatch
178
+ # This method intercepts calls to the `name` method for simple types, so that
179
+ # it can ask the name to the type if the type is generic, since, by this point,
180
+ # we've created a clone of that type with the `name` method returning the
181
+ # appropriate name for that specific concrete type.
182
+ def name; end
183
+ end
184
+
185
+ module T::Types::Simple::NamePatch
186
+ def name; end
187
+ end
188
+
189
+ module T::Types::Simple::Private; end
190
+
191
+ module T::Types::Simple::Private::Pool
192
+ class << self
193
+ def type_for_module(mod); end
194
+ end
195
+ end
196
+
197
+ module T::Utils
198
+ class << self
199
+ def coerce(val); end
200
+ end
201
+ end
202
+
203
+ module T::Utils::CoercePatch
204
+ def coerce(val); end
205
+ end
206
+
207
+ module Tapioca
208
+ class << self
209
+ sig do
210
+ type_parameters(:Result)
211
+ .params(
212
+ blk: T.proc.returns(T.type_parameter(:Result))
213
+ ).returns(T.type_parameter(:Result))
214
+ end
215
+ def silence_warnings(&blk); end
216
+ end
217
+ end
218
+
219
+ Tapioca::BINARY_FILE = T.let(T.unsafe(nil), String)
220
+ Tapioca::CENTRAL_REPO_ANNOTATIONS_DIR = T.let(T.unsafe(nil), String)
221
+ Tapioca::CENTRAL_REPO_INDEX_PATH = T.let(T.unsafe(nil), String)
222
+ Tapioca::CENTRAL_REPO_ROOT_URI = T.let(T.unsafe(nil), String)
223
+
224
+ class Tapioca::Cli < ::Thor
225
+ include ::Tapioca::CliHelper
226
+ include ::Tapioca::ConfigHelper
227
+ include ::Tapioca::EnvHelper
228
+
229
+ def __print_version; end
230
+ def annotations; end
231
+ def check_shims; end
232
+ def configure; end
233
+ def dsl(*constants); end
234
+ def gem(*gems); end
235
+ def init; end
236
+ def require; end
237
+ def todo; end
238
+
239
+ private
240
+
241
+ def print_init_next_steps; end
242
+
243
+ class << self
244
+ def exit_on_failure?; end
245
+ end
246
+ end
247
+
248
+ Tapioca::Cli::FILE_HEADER_OPTION_DESC = T.let(T.unsafe(nil), String)
249
+
250
+ module Tapioca::CliHelper
251
+ requires_ancestor { Thor::Shell }
252
+
253
+ sig { params(options: T::Hash[::Symbol, T.untyped]).returns(T.nilable(::String)) }
254
+ def netrc_file(options); end
255
+
256
+ sig { params(options: T::Hash[::Symbol, T.untyped]).returns(::Tapioca::RBIFormatter) }
257
+ def rbi_formatter(options); end
258
+
259
+ sig { params(message: ::String, color: T.any(::Symbol, T::Array[::Symbol])).void }
260
+ def say_error(message = T.unsafe(nil), *color); end
261
+ end
262
+
263
+ module Tapioca::Commands; end
264
+
265
+ class Tapioca::Commands::Annotations < ::Tapioca::Commands::Command
266
+ sig do
267
+ params(
268
+ central_repo_root_uris: T::Array[::String],
269
+ auth: T.nilable(::String),
270
+ netrc_file: T.nilable(::String),
271
+ central_repo_index_path: ::String,
272
+ typed_overrides: T::Hash[::String, ::String]
273
+ ).void
274
+ end
275
+ def initialize(central_repo_root_uris:, auth: T.unsafe(nil), netrc_file: T.unsafe(nil), central_repo_index_path: T.unsafe(nil), typed_overrides: T.unsafe(nil)); end
276
+
277
+ sig { override.void }
278
+ def execute; end
279
+
280
+ private
281
+
282
+ sig { params(name: ::String, content: ::String).returns(::String) }
283
+ def add_header(name, content); end
284
+
285
+ sig { params(name: ::String, content: ::String).returns(::String) }
286
+ def apply_typed_override(name, content); end
287
+
288
+ sig { params(repo_uris: T::Array[::String], gem_name: ::String).void }
289
+ def fetch_annotation(repo_uris, gem_name); end
290
+
291
+ sig { params(gem_names: T::Array[::String]).returns(T::Array[::String]) }
292
+ def fetch_annotations(gem_names); end
293
+
294
+ sig { params(repo_uri: ::String, path: ::String).returns(T.nilable(::String)) }
295
+ def fetch_file(repo_uri, path); end
296
+
297
+ sig { params(repo_uri: ::String, path: ::String).returns(T.nilable(::String)) }
298
+ def fetch_http_file(repo_uri, path); end
299
+
300
+ sig { params(repo_uri: ::String, repo_number: T.nilable(::Integer)).returns(T.nilable(Tapioca::RepoIndex)) }
301
+ def fetch_index(repo_uri, repo_number:); end
302
+
303
+ sig { returns(T::Hash[::String, Tapioca::RepoIndex]) }
304
+ def fetch_indexes; end
305
+
306
+ sig { params(repo_uri: ::String, path: ::String).returns(T.nilable(::String)) }
307
+ def fetch_local_file(repo_uri, path); end
308
+
309
+ sig { returns(T::Array[::String]) }
310
+ def list_gemfile_gems; end
311
+
312
+ sig { params(gem_name: ::String, contents: T::Array[::String]).returns(T.nilable(::String)) }
313
+ def merge_files(gem_name, contents); end
314
+
315
+ sig { params(project_gems: T::Array[::String]).void }
316
+ def remove_expired_annotations(project_gems); end
317
+
318
+ sig { returns(T::Hash[::String, T.nilable(::String)]) }
319
+ def repo_tokens; end
320
+
321
+ sig { params(path: ::String, repo_uri: ::String, message: ::String).void }
322
+ def say_http_error(path, repo_uri, message:); end
323
+
324
+ sig { params(repo_uri: ::String).returns(T.nilable(::String)) }
325
+ def token_for(repo_uri); end
326
+ end
327
+
328
+ class Tapioca::Commands::CheckShims < ::Tapioca::Commands::Command
329
+ include ::Tapioca::SorbetHelper
330
+ include ::Tapioca::RBIFilesHelper
331
+
332
+ sig do
333
+ params(
334
+ gem_rbi_dir: ::String,
335
+ dsl_rbi_dir: ::String,
336
+ annotations_rbi_dir: ::String,
337
+ shim_rbi_dir: ::String,
338
+ todo_rbi_file: ::String,
339
+ payload: T::Boolean
340
+ ).void
341
+ end
342
+ def initialize(gem_rbi_dir:, dsl_rbi_dir:, annotations_rbi_dir:, shim_rbi_dir:, todo_rbi_file:, payload:); end
343
+
344
+ sig { override.void }
345
+ def execute; end
346
+ end
347
+
348
+ # @abstract It cannont be directly instantiated. Subclasses must implement the `abstract` methods below.
349
+ class Tapioca::Commands::Command
350
+ include ::Thor::Base
351
+ include ::Thor::Invocation
352
+ include ::Thor::Shell
353
+ include ::Tapioca::CliHelper
354
+ extend ::Thor::Base::ClassMethods
355
+ extend ::Thor::Invocation::ClassMethods
356
+
357
+ abstract!
358
+
359
+ sig { void }
360
+ def initialize; end
361
+
362
+ # @abstract
363
+ sig { abstract.void }
364
+ def execute; end
365
+
366
+ sig { returns(::Thor::Actions) }
367
+ def file_writer; end
368
+
369
+ private
370
+
371
+ sig do
372
+ params(
373
+ path: T.any(::Pathname, ::String),
374
+ content: ::String,
375
+ force: T::Boolean,
376
+ skip: T::Boolean,
377
+ verbose: T::Boolean
378
+ ).void
379
+ end
380
+ def create_file(path, content, force: T.unsafe(nil), skip: T.unsafe(nil), verbose: T.unsafe(nil)); end
381
+
382
+ sig { params(command: ::Symbol, args: ::String).returns(::String) }
383
+ def default_command(command, *args); end
384
+
385
+ sig { params(path: T.any(::Pathname, ::String), verbose: T::Boolean).void }
386
+ def remove_file(path, verbose: T.unsafe(nil)); end
387
+ end
388
+
389
+ class Tapioca::Commands::Command::FileWriter < ::Thor
390
+ include ::Thor::Actions
391
+ extend ::Thor::Actions::ClassMethods
392
+ end
393
+
394
+ class Tapioca::Commands::Configure < ::Tapioca::Commands::Command
395
+ sig { params(sorbet_config: ::String, tapioca_config: ::String, default_postrequire: ::String).void }
396
+ def initialize(sorbet_config:, tapioca_config:, default_postrequire:); end
397
+
398
+ sig { override.void }
399
+ def execute; end
400
+
401
+ private
402
+
403
+ sig { void }
404
+ def create_binstub; end
405
+
406
+ sig { void }
407
+ def create_post_require; end
408
+
409
+ sig { void }
410
+ def create_sorbet_config; end
411
+
412
+ sig { void }
413
+ def create_tapioca_config; end
414
+
415
+ sig { returns(::Bundler::Installer) }
416
+ def installer; end
417
+
418
+ sig { returns(::Bundler::StubSpecification) }
419
+ def spec; end
420
+ end
421
+
422
+ class Tapioca::Commands::Dsl < ::Tapioca::Commands::Command
423
+ include ::Tapioca::SorbetHelper
424
+ include ::Tapioca::RBIFilesHelper
425
+
426
+ sig do
427
+ params(
428
+ requested_constants: T::Array[::String],
429
+ outpath: ::Pathname,
430
+ only: T::Array[::String],
431
+ exclude: T::Array[::String],
432
+ file_header: T::Boolean,
433
+ compiler_path: ::String,
434
+ tapioca_path: ::String,
435
+ should_verify: T::Boolean,
436
+ quiet: T::Boolean,
437
+ verbose: T::Boolean,
438
+ number_of_workers: T.nilable(::Integer),
439
+ auto_strictness: T::Boolean,
440
+ gem_dir: ::String,
441
+ rbi_formatter: ::Tapioca::RBIFormatter
442
+ ).void
443
+ end
444
+ def initialize(requested_constants:, outpath:, only:, exclude:, file_header:, compiler_path:, tapioca_path:, should_verify: T.unsafe(nil), quiet: T.unsafe(nil), verbose: T.unsafe(nil), number_of_workers: T.unsafe(nil), auto_strictness: T.unsafe(nil), gem_dir: T.unsafe(nil), rbi_formatter: T.unsafe(nil)); end
445
+
446
+ sig { override.void }
447
+ def execute; end
448
+
449
+ private
450
+
451
+ sig { void }
452
+ def abort_if_pending_migrations!; end
453
+
454
+ sig { params(cause: ::Symbol, files: T::Array[::String]).returns(::String) }
455
+ def build_error_for_files(cause, files); end
456
+
457
+ sig do
458
+ params(
459
+ constant_name: ::String,
460
+ rbi: ::RBI::File,
461
+ outpath: ::Pathname,
462
+ quiet: T::Boolean
463
+ ).returns(T.nilable(::Pathname))
464
+ end
465
+ def compile_dsl_rbi(constant_name, rbi, outpath: T.unsafe(nil), quiet: T.unsafe(nil)); end
466
+
467
+ sig { params(constant_names: T::Array[::String]).returns(T::Array[::Module]) }
468
+ def constantize(constant_names); end
469
+
470
+ sig { params(compiler_names: T::Array[::String]).returns(T::Array[T.class_of(Tapioca::Dsl::Compiler)]) }
471
+ def constantize_compilers(compiler_names); end
472
+
473
+ sig { params(constant_name: ::String).returns(::Pathname) }
474
+ def dsl_rbi_filename(constant_name); end
475
+
476
+ sig { params(requested_constants: T::Array[::String], path: ::Pathname).returns(T::Set[::Pathname]) }
477
+ def existing_rbi_filenames(requested_constants, path: T.unsafe(nil)); end
478
+
479
+ sig { params(constant: ::String).returns(::String) }
480
+ def generate_command_for(constant); end
481
+
482
+ sig { params(eager_load: T::Boolean).void }
483
+ def load_application(eager_load:); end
484
+
485
+ sig { void }
486
+ def load_dsl_compilers; end
487
+
488
+ sig { void }
489
+ def load_dsl_extensions; end
490
+
491
+ sig { returns(::Tapioca::Runtime::Loader) }
492
+ def loader; end
493
+
494
+ sig { params(dir: ::Pathname).void }
495
+ def perform_dsl_verification(dir); end
496
+
497
+ sig { params(files: T::Set[::Pathname]).void }
498
+ def purge_stale_dsl_rbi_files(files); end
499
+
500
+ sig { params(constant: ::String).returns(::String) }
501
+ def rbi_filename_for(constant); end
502
+
503
+ sig { params(path: ::Pathname).returns(T::Array[::Pathname]) }
504
+ def rbi_files_in(path); end
505
+
506
+ sig { params(diff: T::Hash[::String, ::Symbol], command: ::Symbol).void }
507
+ def report_diff_and_exit_if_out_of_date(diff, command); end
508
+
509
+ sig { params(name: ::String).returns(T.nilable(T.class_of(Tapioca::Dsl::Compiler))) }
510
+ def resolve(name); end
511
+
512
+ sig { params(class_name: ::String).returns(::String) }
513
+ def underscore(class_name); end
514
+
515
+ sig { params(tmp_dir: ::Pathname).returns(T::Hash[::String, ::Symbol]) }
516
+ def verify_dsl_rbi(tmp_dir:); end
517
+ end
518
+
519
+ class Tapioca::Commands::Gem < ::Tapioca::Commands::Command
520
+ include ::Tapioca::SorbetHelper
521
+ include ::Tapioca::RBIFilesHelper
522
+
523
+ sig do
524
+ params(
525
+ gem_names: T::Array[::String],
526
+ exclude: T::Array[::String],
527
+ prerequire: T.nilable(::String),
528
+ postrequire: ::String,
529
+ typed_overrides: T::Hash[::String, ::String],
530
+ outpath: ::Pathname,
531
+ file_header: T::Boolean,
532
+ include_doc: T::Boolean,
533
+ include_exported_rbis: T::Boolean,
534
+ number_of_workers: T.nilable(::Integer),
535
+ auto_strictness: T::Boolean,
536
+ dsl_dir: ::String,
537
+ rbi_formatter: ::Tapioca::RBIFormatter
538
+ ).void
539
+ end
540
+ def initialize(gem_names:, exclude:, prerequire:, postrequire:, typed_overrides:, outpath:, file_header:, include_doc:, include_exported_rbis:, number_of_workers: T.unsafe(nil), auto_strictness: T.unsafe(nil), dsl_dir: T.unsafe(nil), rbi_formatter: T.unsafe(nil)); end
541
+
542
+ sig { override.void }
543
+ def execute; end
544
+
545
+ sig { params(should_verify: T::Boolean).void }
546
+ def sync(should_verify: T.unsafe(nil)); end
547
+
548
+ private
549
+
550
+ sig { returns(T::Array[::String]) }
551
+ def added_rbis; end
552
+
553
+ sig { params(cause: ::Symbol, files: T::Array[::String]).returns(::String) }
554
+ def build_error_for_files(cause, files); end
555
+
556
+ sig { returns(::Tapioca::Gemfile) }
557
+ def bundle; end
558
+
559
+ sig { params(gem: ::Tapioca::Gemfile::GemSpec).void }
560
+ def compile_gem_rbi(gem); end
561
+
562
+ sig { params(gem_name: ::String).returns(::Pathname) }
563
+ def existing_rbi(gem_name); end
564
+
565
+ sig { returns(T::Hash[::String, ::String]) }
566
+ def existing_rbis; end
567
+
568
+ sig { params(gem_name: ::String).returns(::Pathname) }
569
+ def expected_rbi(gem_name); end
570
+
571
+ sig { returns(T::Hash[::String, ::String]) }
572
+ def expected_rbis; end
573
+
574
+ sig { params(file: ::String, error: ::LoadError).void }
575
+ def explain_failed_require(file, error); end
576
+
577
+ sig { params(gem_name: ::String).returns(T::Boolean) }
578
+ def gem_rbi_exists?(gem_name); end
579
+
580
+ sig { params(gem_name: ::String, version: ::String).returns(::Pathname) }
581
+ def gem_rbi_filename(gem_name, version); end
582
+
583
+ sig { params(gem_names: T::Array[::String]).returns(T::Array[::Tapioca::Gemfile::GemSpec]) }
584
+ def gems_to_generate(gem_names); end
585
+
586
+ sig { returns(::Tapioca::Runtime::Loader) }
587
+ def loader; end
588
+
589
+ sig { params(gem: ::Tapioca::Gemfile::GemSpec, file: ::RBI::File).void }
590
+ def merge_with_exported_rbi(gem, file); end
591
+
592
+ sig { params(old_filename: ::Pathname, new_filename: ::Pathname).void }
593
+ def move(old_filename, new_filename); end
594
+
595
+ sig { void }
596
+ def perform_additions; end
597
+
598
+ sig { void }
599
+ def perform_removals; end
600
+
601
+ sig { void }
602
+ def perform_sync_verification; end
603
+
604
+ sig { returns(T::Array[::String]) }
605
+ def removed_rbis; end
606
+
607
+ sig { params(diff: T::Hash[::String, ::Symbol], command: ::Symbol).void }
608
+ def report_diff_and_exit_if_out_of_date(diff, command); end
609
+
610
+ sig { void }
611
+ def require_gem_file; end
612
+ end
613
+
614
+ class Tapioca::Commands::Require < ::Tapioca::Commands::Command
615
+ sig { params(requires_path: ::String, sorbet_config_path: ::String).void }
616
+ def initialize(requires_path:, sorbet_config_path:); end
617
+
618
+ sig { override.void }
619
+ def execute; end
620
+ end
621
+
622
+ class Tapioca::Commands::Todo < ::Tapioca::Commands::Command
623
+ include ::Tapioca::SorbetHelper
624
+
625
+ sig { params(todo_file: ::String, file_header: T::Boolean).void }
626
+ def initialize(todo_file:, file_header:); end
627
+
628
+ sig { override.void }
629
+ def execute; end
630
+
631
+ private
632
+
633
+ sig { params(constants: T::Array[::String], command: ::String).returns(::RBI::File) }
634
+ def rbi(constants, command:); end
635
+
636
+ sig { returns(T::Array[::String]) }
637
+ def unresolved_constants; end
638
+ end
639
+
640
+ module Tapioca::ConfigHelper
641
+ requires_ancestor { Thor }
642
+
643
+ sig { params(args: T.untyped, local_options: T.untyped, config: T.untyped).void }
644
+ def initialize(args = T.unsafe(nil), local_options = T.unsafe(nil), config = T.unsafe(nil)); end
645
+
646
+ sig { returns(::String) }
647
+ def command_name; end
648
+
649
+ sig { returns(::Thor::CoreExt::HashWithIndifferentAccess) }
650
+ def defaults; end
651
+
652
+ sig { returns(::Thor::CoreExt::HashWithIndifferentAccess) }
653
+ def options; end
654
+
655
+ private
656
+
657
+ sig { params(msg: ::String).returns(::Tapioca::ConfigHelper::ConfigError) }
658
+ def build_error(msg); end
659
+
660
+ sig do
661
+ params(
662
+ options: ::Thor::CoreExt::HashWithIndifferentAccess
663
+ ).returns(::Thor::CoreExt::HashWithIndifferentAccess)
664
+ end
665
+ def config_options(options); end
666
+
667
+ sig { params(options: T::Hash[::Symbol, ::Thor::Option]).void }
668
+ def filter_defaults(options); end
669
+
670
+ sig do
671
+ params(
672
+ options: T.nilable(::Thor::CoreExt::HashWithIndifferentAccess)
673
+ ).returns(::Thor::CoreExt::HashWithIndifferentAccess)
674
+ end
675
+ def merge_options(*options); end
676
+
677
+ sig { params(config_file: ::String, errors: T::Array[::Tapioca::ConfigHelper::ConfigError]).void }
678
+ def print_errors(config_file, errors); end
679
+
680
+ sig { params(config_file: ::String, config: T::Hash[T.untyped, T.untyped]).void }
681
+ def validate_config!(config_file, config); end
682
+
683
+ sig do
684
+ params(
685
+ command_options: T::Hash[::Symbol, ::Thor::Option],
686
+ config_key: ::String,
687
+ config_options: T::Hash[T.untyped, T.untyped]
688
+ ).returns(T::Array[::Tapioca::ConfigHelper::ConfigError])
689
+ end
690
+ def validate_config_options(command_options, config_key, config_options); end
691
+ end
692
+
693
+ class Tapioca::ConfigHelper::ConfigError < ::T::Struct
694
+ const :message_parts, T::Array[::Tapioca::ConfigHelper::ConfigErrorMessagePart]
695
+
696
+ class << self
697
+ def inherited(s); end
698
+ end
699
+ end
700
+
701
+ class Tapioca::ConfigHelper::ConfigErrorMessagePart < ::T::Struct
702
+ const :colors, T::Array[::Symbol]
703
+ const :message, ::String
704
+
705
+ class << self
706
+ def inherited(s); end
707
+ end
708
+ end
709
+
710
+ Tapioca::DEFAULT_ANNOTATIONS_DIR = T.let(T.unsafe(nil), String)
711
+ Tapioca::DEFAULT_DSL_DIR = T.let(T.unsafe(nil), String)
712
+ Tapioca::DEFAULT_ENVIRONMENT = T.let(T.unsafe(nil), String)
713
+ Tapioca::DEFAULT_GEM_DIR = T.let(T.unsafe(nil), String)
714
+ Tapioca::DEFAULT_OVERRIDES = T.let(T.unsafe(nil), Hash)
715
+ Tapioca::DEFAULT_POSTREQUIRE_FILE = T.let(T.unsafe(nil), String)
716
+ Tapioca::DEFAULT_RBI_DIR = T.let(T.unsafe(nil), String)
717
+ Tapioca::DEFAULT_RBI_FORMATTER = T.let(T.unsafe(nil), Tapioca::RBIFormatter)
718
+ Tapioca::DEFAULT_RBI_MAX_LINE_LENGTH = T.let(T.unsafe(nil), Integer)
719
+ Tapioca::DEFAULT_SHIM_DIR = T.let(T.unsafe(nil), String)
720
+ Tapioca::DEFAULT_TODO_FILE = T.let(T.unsafe(nil), String)
721
+ module Tapioca::Dsl; end
722
+
723
+ # @abstract It cannont be directly instantiated. Subclasses must implement the `abstract` methods below.
724
+ class Tapioca::Dsl::Compiler
725
+ extend T::Generic
726
+ include ::Tapioca::SorbetHelper
727
+ include ::Tapioca::RBIHelper
728
+ include ::Tapioca::Runtime::Reflection
729
+ extend ::Tapioca::Runtime::Reflection
730
+
731
+ abstract!
732
+
733
+ ConstantType = type_member { { upper: Module } }
734
+
735
+ sig { params(pipeline: ::Tapioca::Dsl::Pipeline, root: ::RBI::Tree, constant: ConstantType).void }
736
+ def initialize(pipeline, root, constant); end
737
+
738
+ # NOTE: This should eventually accept an `Error` object or `Exception` rather than simply a `String`.
739
+ sig { params(error: ::String).void }
740
+ def add_error(error); end
741
+
742
+ sig { params(compiler_name: ::String).returns(T::Boolean) }
743
+ def compiler_enabled?(compiler_name); end
744
+
745
+ sig { returns(ConstantType) }
746
+ def constant; end
747
+
748
+ # @abstract
749
+ sig { abstract.void }
750
+ def decorate; end
751
+
752
+ sig { returns(::RBI::Tree) }
753
+ def root; end
754
+
755
+ private
756
+
757
+ sig { params(type: ::String).returns(::String) }
758
+ def as_nilable_type(type); end
759
+
760
+ sig { params(method_def: T.any(::Method, ::UnboundMethod)).returns(T::Array[::RBI::TypedParam]) }
761
+ def compile_method_parameters_to_rbi(method_def); end
762
+
763
+ sig { params(method_def: T.any(::Method, ::UnboundMethod)).returns(::String) }
764
+ def compile_method_return_type_to_rbi(method_def); end
765
+
766
+ sig { params(scope: ::RBI::Scope, method_def: T.any(::Method, ::UnboundMethod), class_method: T::Boolean).void }
767
+ def create_method_from_def(scope, method_def, class_method: T.unsafe(nil)); end
768
+
769
+ # Get the types of each parameter from a method signature
770
+ sig { params(method_def: T.any(::Method, ::UnboundMethod), signature: T.untyped).returns(T::Array[::String]) }
771
+ def parameters_types_from_signature(method_def, signature); end
772
+
773
+ class << self
774
+ # @abstract
775
+ sig { abstract.returns(T::Enumerable[::Module]) }
776
+ def gather_constants; end
777
+
778
+ sig { params(constant: ::Module).returns(T::Boolean) }
779
+ def handles?(constant); end
780
+
781
+ sig { returns(T::Set[::Module]) }
782
+ def processable_constants; end
783
+
784
+ private
785
+
786
+ sig { returns(T::Enumerable[::Class]) }
787
+ def all_classes; end
788
+
789
+ sig { returns(T::Enumerable[::Module]) }
790
+ def all_modules; end
791
+ end
792
+ end
793
+
794
+ module Tapioca::Dsl::Compilers; end
795
+ Tapioca::Dsl::Compilers::DIRECTORY = T.let(T.unsafe(nil), String)
796
+
797
+ # DSL compilers are either built-in to Tapioca and live under the
798
+ # `Tapioca::Dsl::Compilers` namespace (i.e. this namespace), and
799
+ # can be referred to by just using the class name, or they live in
800
+ # a different namespace and can only be referred to using their fully
801
+ # qualified name. This constant encapsulates that dual lookup when
802
+ # a compiler needs to be resolved by name.
803
+ Tapioca::Dsl::Compilers::NAMESPACES = T.let(T.unsafe(nil), Array)
804
+
805
+ class Tapioca::Dsl::Pipeline
806
+ sig do
807
+ params(
808
+ requested_constants: T::Array[::Module],
809
+ requested_compilers: T::Array[T.class_of(Tapioca::Dsl::Compiler)],
810
+ excluded_compilers: T::Array[T.class_of(Tapioca::Dsl::Compiler)],
811
+ error_handler: T.proc.params(error: ::String).void,
812
+ number_of_workers: T.nilable(::Integer)
813
+ ).void
814
+ end
815
+ def initialize(requested_constants:, requested_compilers: T.unsafe(nil), excluded_compilers: T.unsafe(nil), error_handler: T.unsafe(nil), number_of_workers: T.unsafe(nil)); end
816
+
817
+ sig { params(error: ::String).void }
818
+ def add_error(error); end
819
+
820
+ sig { params(compiler_name: ::String).returns(T::Boolean) }
821
+ def compiler_enabled?(compiler_name); end
822
+
823
+ sig { returns(T::Enumerable[T.class_of(Tapioca::Dsl::Compiler)]) }
824
+ def compilers; end
825
+
826
+ sig { returns(T.proc.params(error: ::String).void) }
827
+ def error_handler; end
828
+
829
+ sig { returns(T::Array[::String]) }
830
+ def errors; end
831
+
832
+ sig { returns(T::Array[::Module]) }
833
+ def requested_constants; end
834
+
835
+ sig do
836
+ type_parameters(:T)
837
+ .params(
838
+ blk: T.proc.params(constant: ::Module, rbi: ::RBI::File).returns(T.type_parameter(:T))
839
+ ).returns(T::Array[T.type_parameter(:T)])
840
+ end
841
+ def run(&blk); end
842
+
843
+ private
844
+
845
+ sig { params(constants: T::Set[::Module]).returns(T::Set[::Module]) }
846
+ def filter_anonymous_and_reloaded_constants(constants); end
847
+
848
+ sig do
849
+ params(
850
+ requested_compilers: T::Array[T.class_of(Tapioca::Dsl::Compiler)],
851
+ excluded_compilers: T::Array[T.class_of(Tapioca::Dsl::Compiler)]
852
+ ).returns(T::Enumerable[T.class_of(Tapioca::Dsl::Compiler)])
853
+ end
854
+ def gather_compilers(requested_compilers, excluded_compilers); end
855
+
856
+ sig { params(requested_constants: T::Array[::Module]).returns(T::Set[::Module]) }
857
+ def gather_constants(requested_constants); end
858
+
859
+ sig { params(constant: ::Module).returns(T.nilable(::RBI::File)) }
860
+ def rbi_for_constant(constant); end
861
+
862
+ sig { params(error: ::String).returns(T.noreturn) }
863
+ def report_error(error); end
864
+ end
865
+
866
+ module Tapioca::EnvHelper
867
+ requires_ancestor { Thor }
868
+
869
+ sig { params(options: T::Hash[::Symbol, T.untyped]).void }
870
+ def set_environment(options); end
871
+ end
872
+
873
+ class Tapioca::Error < ::StandardError; end
874
+
875
+ class Tapioca::Executor
876
+ sig { params(queue: T::Array[T.untyped], number_of_workers: T.nilable(::Integer)).void }
877
+ def initialize(queue, number_of_workers: T.unsafe(nil)); end
878
+
879
+ sig do
880
+ type_parameters(:T)
881
+ .params(
882
+ block: T.proc.params(item: T.untyped).returns(T.type_parameter(:T))
883
+ ).returns(T::Array[T.type_parameter(:T)])
884
+ end
885
+ def run_in_parallel(&block); end
886
+ end
887
+
888
+ Tapioca::Executor::MINIMUM_ITEMS_PER_WORKER = T.let(T.unsafe(nil), Integer)
889
+ module Tapioca::Gem; end
890
+
891
+ class Tapioca::Gem::ConstNodeAdded < ::Tapioca::Gem::NodeAdded
892
+ sig { params(symbol: ::String, constant: ::Module, node: ::RBI::Const).void }
893
+ def initialize(symbol, constant, node); end
894
+
895
+ sig { returns(::RBI::Const) }
896
+ def node; end
897
+ end
898
+
899
+ class Tapioca::Gem::ConstantFound < ::Tapioca::Gem::Event
900
+ sig { params(symbol: ::String, constant: ::BasicObject).void }
901
+ def initialize(symbol, constant); end
902
+
903
+ sig { returns(::BasicObject) }
904
+ def constant; end
905
+
906
+ sig { returns(::String) }
907
+ def symbol; end
908
+ end
909
+
910
+ # @abstract It cannont be directly instantiated. Subclasses must implement the `abstract` methods below.
911
+ class Tapioca::Gem::Event
912
+ abstract!
913
+
914
+ def initialize(*args, **_arg1, &blk); end
915
+ end
916
+
917
+ class Tapioca::Gem::ForeignConstantFound < ::Tapioca::Gem::ConstantFound
918
+ sig { params(symbol: ::String, constant: ::Module).void }
919
+ def initialize(symbol, constant); end
920
+
921
+ sig { override.returns(::Module) }
922
+ def constant; end
923
+ end
924
+
925
+ class Tapioca::Gem::ForeignScopeNodeAdded < ::Tapioca::Gem::ScopeNodeAdded; end
926
+ module Tapioca::Gem::Listeners; end
927
+
928
+ # @abstract It cannont be directly instantiated. Subclasses must implement the `abstract` methods below.
929
+ class Tapioca::Gem::Listeners::Base
930
+ abstract!
931
+
932
+ sig { params(pipeline: ::Tapioca::Gem::Pipeline).void }
933
+ def initialize(pipeline); end
934
+
935
+ sig { params(event: ::Tapioca::Gem::NodeAdded).void }
936
+ def dispatch(event); end
937
+
938
+ private
939
+
940
+ sig { params(event: ::Tapioca::Gem::NodeAdded).returns(T::Boolean) }
941
+ def ignore?(event); end
942
+
943
+ sig { params(event: ::Tapioca::Gem::ConstNodeAdded).void }
944
+ def on_const(event); end
945
+
946
+ sig { params(event: ::Tapioca::Gem::MethodNodeAdded).void }
947
+ def on_method(event); end
948
+
949
+ sig { params(event: ::Tapioca::Gem::ScopeNodeAdded).void }
950
+ def on_scope(event); end
951
+ end
952
+
953
+ class Tapioca::Gem::Listeners::DynamicMixins < ::Tapioca::Gem::Listeners::Base
954
+ include ::Tapioca::Runtime::Reflection
955
+
956
+ private
957
+
958
+ sig { override.params(event: ::Tapioca::Gem::NodeAdded).returns(T::Boolean) }
959
+ def ignore?(event); end
960
+
961
+ sig { override.params(event: ::Tapioca::Gem::ScopeNodeAdded).void }
962
+ def on_scope(event); end
963
+ end
964
+
965
+ class Tapioca::Gem::Listeners::ForeignConstants < ::Tapioca::Gem::Listeners::Base
966
+ include ::Tapioca::Runtime::Reflection
967
+
968
+ private
969
+
970
+ sig { override.params(event: ::Tapioca::Gem::NodeAdded).returns(T::Boolean) }
971
+ def ignore?(event); end
972
+
973
+ sig { params(location: ::String).returns(T::Boolean) }
974
+ def mixed_in_by_gem?(location); end
975
+
976
+ sig { override.params(event: ::Tapioca::Gem::ScopeNodeAdded).void }
977
+ def on_scope(event); end
978
+ end
979
+
980
+ class Tapioca::Gem::Listeners::Methods < ::Tapioca::Gem::Listeners::Base
981
+ include ::Tapioca::SorbetHelper
982
+ include ::Tapioca::RBIHelper
983
+ include ::Tapioca::Runtime::Reflection
984
+
985
+ private
986
+
987
+ sig { params(tree: ::RBI::Tree, module_name: ::String, mod: ::Module, for_visibility: T::Array[::Symbol]).void }
988
+ def compile_directly_owned_methods(tree, module_name, mod, for_visibility = T.unsafe(nil)); end
989
+
990
+ sig do
991
+ params(
992
+ tree: ::RBI::Tree,
993
+ symbol_name: ::String,
994
+ constant: ::Module,
995
+ method: T.nilable(::UnboundMethod),
996
+ visibility: ::RBI::Visibility
997
+ ).void
998
+ end
999
+ def compile_method(tree, symbol_name, constant, method, visibility = T.unsafe(nil)); end
1000
+
1001
+ sig { override.params(event: ::Tapioca::Gem::NodeAdded).returns(T::Boolean) }
1002
+ def ignore?(event); end
1003
+
1004
+ sig { params(constant: ::Module).returns(T.nilable(::UnboundMethod)) }
1005
+ def initialize_method_for(constant); end
1006
+
1007
+ sig { params(mod: ::Module).returns(T::Hash[::Symbol, T::Array[::Symbol]]) }
1008
+ def method_names_by_visibility(mod); end
1009
+
1010
+ # Check whether the method is defined by the constant.
1011
+ #
1012
+ # In most cases, it works to check that the constant is the method owner. However,
1013
+ # in the case that a method is also defined in a module prepended to the constant, it
1014
+ # will be owned by the prepended module, not the constant.
1015
+ #
1016
+ # This method implements a better way of checking whether a constant defines a method.
1017
+ # It walks up the ancestor tree via the `super_method` method; if any of the super
1018
+ # methods are owned by the constant, it means that the constant declares the method.
1019
+ sig { params(method: ::UnboundMethod, constant: ::Module).returns(T::Boolean) }
1020
+ def method_owned_by_constant?(method, constant); end
1021
+
1022
+ sig { override.params(event: ::Tapioca::Gem::ScopeNodeAdded).void }
1023
+ def on_scope(event); end
1024
+
1025
+ sig { params(constant: ::Module, method_name: ::String).returns(T::Boolean) }
1026
+ def struct_method?(constant, method_name); end
1027
+ end
1028
+
1029
+ class Tapioca::Gem::Listeners::Mixins < ::Tapioca::Gem::Listeners::Base
1030
+ include ::Tapioca::Runtime::Reflection
1031
+
1032
+ private
1033
+
1034
+ sig do
1035
+ params(
1036
+ tree: ::RBI::Tree,
1037
+ constant: ::Module,
1038
+ mods: T::Array[::Module],
1039
+ mixin_type: ::Tapioca::Runtime::Trackers::Mixin::Type
1040
+ ).void
1041
+ end
1042
+ def add_mixins(tree, constant, mods, mixin_type); end
1043
+
1044
+ sig { params(mixin_name: ::String).returns(T::Boolean) }
1045
+ def filtered_mixin?(mixin_name); end
1046
+
1047
+ sig { params(constant: ::Module).returns(T::Array[::Module]) }
1048
+ def interesting_ancestors_of(constant); end
1049
+
1050
+ sig do
1051
+ params(
1052
+ constant: ::Module,
1053
+ mixin: ::Module,
1054
+ mixin_type: ::Tapioca::Runtime::Trackers::Mixin::Type
1055
+ ).returns(T::Boolean)
1056
+ end
1057
+ def mixed_in_by_gem?(constant, mixin, mixin_type); end
1058
+
1059
+ sig { override.params(event: ::Tapioca::Gem::ScopeNodeAdded).void }
1060
+ def on_scope(event); end
1061
+ end
1062
+
1063
+ class Tapioca::Gem::Listeners::RemoveEmptyPayloadScopes < ::Tapioca::Gem::Listeners::Base
1064
+ include ::Tapioca::Runtime::Reflection
1065
+
1066
+ private
1067
+
1068
+ sig { override.params(event: ::Tapioca::Gem::NodeAdded).returns(T::Boolean) }
1069
+ def ignore?(event); end
1070
+
1071
+ sig { override.params(event: ::Tapioca::Gem::ScopeNodeAdded).void }
1072
+ def on_scope(event); end
1073
+ end
1074
+
1075
+ class Tapioca::Gem::Listeners::SorbetEnums < ::Tapioca::Gem::Listeners::Base
1076
+ private
1077
+
1078
+ sig { override.params(event: ::Tapioca::Gem::NodeAdded).returns(T::Boolean) }
1079
+ def ignore?(event); end
1080
+
1081
+ sig { override.params(event: ::Tapioca::Gem::ScopeNodeAdded).void }
1082
+ def on_scope(event); end
1083
+ end
1084
+
1085
+ class Tapioca::Gem::Listeners::SorbetHelpers < ::Tapioca::Gem::Listeners::Base
1086
+ include ::Tapioca::Runtime::Reflection
1087
+
1088
+ private
1089
+
1090
+ sig { override.params(event: ::Tapioca::Gem::NodeAdded).returns(T::Boolean) }
1091
+ def ignore?(event); end
1092
+
1093
+ sig { override.params(event: ::Tapioca::Gem::ScopeNodeAdded).void }
1094
+ def on_scope(event); end
1095
+ end
1096
+
1097
+ class Tapioca::Gem::Listeners::SorbetProps < ::Tapioca::Gem::Listeners::Base
1098
+ private
1099
+
1100
+ sig { override.params(event: ::Tapioca::Gem::NodeAdded).returns(T::Boolean) }
1101
+ def ignore?(event); end
1102
+
1103
+ sig { override.params(event: ::Tapioca::Gem::ScopeNodeAdded).void }
1104
+ def on_scope(event); end
1105
+ end
1106
+
1107
+ class Tapioca::Gem::Listeners::SorbetRequiredAncestors < ::Tapioca::Gem::Listeners::Base
1108
+ private
1109
+
1110
+ sig { override.params(event: ::Tapioca::Gem::NodeAdded).returns(T::Boolean) }
1111
+ def ignore?(event); end
1112
+
1113
+ sig { override.params(event: ::Tapioca::Gem::ScopeNodeAdded).void }
1114
+ def on_scope(event); end
1115
+ end
1116
+
1117
+ class Tapioca::Gem::Listeners::SorbetSignatures < ::Tapioca::Gem::Listeners::Base
1118
+ include ::Tapioca::Runtime::Reflection
1119
+ include ::Tapioca::SorbetHelper
1120
+ include ::Tapioca::RBIHelper
1121
+
1122
+ private
1123
+
1124
+ sig { params(signature: T.untyped, parameters: T::Array[[::Symbol, ::String]]).returns(::RBI::Sig) }
1125
+ def compile_signature(signature, parameters); end
1126
+
1127
+ sig { override.params(event: ::Tapioca::Gem::NodeAdded).returns(T::Boolean) }
1128
+ def ignore?(event); end
1129
+
1130
+ sig { override.params(event: ::Tapioca::Gem::MethodNodeAdded).void }
1131
+ def on_method(event); end
1132
+
1133
+ sig { params(signature: T.untyped).returns(T::Boolean) }
1134
+ def signature_final?(signature); end
1135
+ end
1136
+
1137
+ Tapioca::Gem::Listeners::SorbetSignatures::TYPE_PARAMETER_MATCHER = T.let(T.unsafe(nil), Regexp)
1138
+
1139
+ class Tapioca::Gem::Listeners::SorbetTypeVariables < ::Tapioca::Gem::Listeners::Base
1140
+ include ::Tapioca::Runtime::Reflection
1141
+
1142
+ private
1143
+
1144
+ sig { params(tree: ::RBI::Tree, constant: ::Module).void }
1145
+ def compile_type_variable_declarations(tree, constant); end
1146
+
1147
+ sig { override.params(event: ::Tapioca::Gem::NodeAdded).returns(T::Boolean) }
1148
+ def ignore?(event); end
1149
+
1150
+ sig { override.params(event: ::Tapioca::Gem::ScopeNodeAdded).void }
1151
+ def on_scope(event); end
1152
+ end
1153
+
1154
+ class Tapioca::Gem::Listeners::Subconstants < ::Tapioca::Gem::Listeners::Base
1155
+ include ::Tapioca::Runtime::Reflection
1156
+
1157
+ private
1158
+
1159
+ sig { override.params(event: ::Tapioca::Gem::NodeAdded).returns(T::Boolean) }
1160
+ def ignore?(event); end
1161
+
1162
+ sig { override.params(event: ::Tapioca::Gem::ScopeNodeAdded).void }
1163
+ def on_scope(event); end
1164
+ end
1165
+
1166
+ class Tapioca::Gem::Listeners::YardDoc < ::Tapioca::Gem::Listeners::Base
1167
+ sig { params(pipeline: ::Tapioca::Gem::Pipeline).void }
1168
+ def initialize(pipeline); end
1169
+
1170
+ private
1171
+
1172
+ sig { params(name: ::String, sigs: T::Array[::RBI::Sig]).returns(T::Array[::RBI::Comment]) }
1173
+ def documentation_comments(name, sigs: T.unsafe(nil)); end
1174
+
1175
+ sig { override.params(event: ::Tapioca::Gem::NodeAdded).returns(T::Boolean) }
1176
+ def ignore?(event); end
1177
+
1178
+ sig { override.params(event: ::Tapioca::Gem::ConstNodeAdded).void }
1179
+ def on_const(event); end
1180
+
1181
+ sig { override.params(event: ::Tapioca::Gem::MethodNodeAdded).void }
1182
+ def on_method(event); end
1183
+
1184
+ sig { override.params(event: ::Tapioca::Gem::ScopeNodeAdded).void }
1185
+ def on_scope(event); end
1186
+ end
1187
+
1188
+ Tapioca::Gem::Listeners::YardDoc::IGNORED_COMMENTS = T.let(T.unsafe(nil), Array)
1189
+ Tapioca::Gem::Listeners::YardDoc::IGNORED_SIG_TAGS = T.let(T.unsafe(nil), Array)
1190
+
1191
+ class Tapioca::Gem::MethodNodeAdded < ::Tapioca::Gem::NodeAdded
1192
+ sig do
1193
+ params(
1194
+ symbol: ::String,
1195
+ constant: ::Module,
1196
+ node: ::RBI::Method,
1197
+ signature: T.untyped,
1198
+ parameters: T::Array[[::Symbol, ::String]]
1199
+ ).void
1200
+ end
1201
+ def initialize(symbol, constant, node, signature, parameters); end
1202
+
1203
+ sig { returns(::RBI::Method) }
1204
+ def node; end
1205
+
1206
+ sig { returns(T::Array[[::Symbol, ::String]]) }
1207
+ def parameters; end
1208
+
1209
+ sig { returns(T.untyped) }
1210
+ def signature; end
1211
+ end
1212
+
1213
+ # @abstract It cannont be directly instantiated. Subclasses must implement the `abstract` methods below.
1214
+ class Tapioca::Gem::NodeAdded < ::Tapioca::Gem::Event
1215
+ abstract!
1216
+
1217
+ sig { params(symbol: ::String, constant: ::Module).void }
1218
+ def initialize(symbol, constant); end
1219
+
1220
+ sig { returns(::Module) }
1221
+ def constant; end
1222
+
1223
+ sig { returns(::String) }
1224
+ def symbol; end
1225
+ end
1226
+
1227
+ class Tapioca::Gem::Pipeline
1228
+ include ::Tapioca::Runtime::Reflection
1229
+ include ::Tapioca::SorbetHelper
1230
+ include ::Tapioca::RBIHelper
1231
+
1232
+ sig { params(gem: ::Tapioca::Gemfile::GemSpec, include_doc: T::Boolean).void }
1233
+ def initialize(gem, include_doc: T.unsafe(nil)); end
1234
+
1235
+ sig { returns(::RBI::Tree) }
1236
+ def compile; end
1237
+
1238
+ sig { returns(::Tapioca::Gemfile::GemSpec) }
1239
+ def gem; end
1240
+
1241
+ sig { params(method: ::UnboundMethod).returns(T::Boolean) }
1242
+ def method_in_gem?(method); end
1243
+
1244
+ sig { params(constant: ::Module).returns(T.nilable(::String)) }
1245
+ def name_of(constant); end
1246
+
1247
+ sig { params(symbol: ::String, constant: ::Module, node: ::RBI::Const).void }
1248
+ def push_const(symbol, constant, node); end
1249
+
1250
+ sig { params(symbol: ::String, constant: ::BasicObject).void }
1251
+ def push_constant(symbol, constant); end
1252
+
1253
+ sig { params(symbol: ::String, constant: ::Module).void }
1254
+ def push_foreign_constant(symbol, constant); end
1255
+
1256
+ sig { params(symbol: ::String, constant: ::Module, node: ::RBI::Scope).void }
1257
+ def push_foreign_scope(symbol, constant, node); end
1258
+
1259
+ sig do
1260
+ params(
1261
+ symbol: ::String,
1262
+ constant: ::Module,
1263
+ node: ::RBI::Method,
1264
+ signature: T.untyped,
1265
+ parameters: T::Array[[::Symbol, ::String]]
1266
+ ).void
1267
+ end
1268
+ def push_method(symbol, constant, node, signature, parameters); end
1269
+
1270
+ sig { params(symbol: ::String, constant: ::Module, node: ::RBI::Scope).void }
1271
+ def push_scope(symbol, constant, node); end
1272
+
1273
+ sig { params(symbol: ::String).void }
1274
+ def push_symbol(symbol); end
1275
+
1276
+ sig { params(symbol_name: ::String).returns(T::Boolean) }
1277
+ def symbol_in_payload?(symbol_name); end
1278
+
1279
+ private
1280
+
1281
+ sig { params(name: ::String).void }
1282
+ def add_to_alias_namespace(name); end
1283
+
1284
+ sig { params(name: ::String).returns(T::Boolean) }
1285
+ def alias_namespaced?(name); end
1286
+
1287
+ sig { params(name: ::String, constant: ::Module).void }
1288
+ def compile_alias(name, constant); end
1289
+
1290
+ sig { params(symbol: ::String, constant: ::BasicObject).void }
1291
+ def compile_constant(symbol, constant); end
1292
+
1293
+ # Compile
1294
+ sig { params(symbol: ::String, constant: ::Module).void }
1295
+ def compile_foreign_constant(symbol, constant); end
1296
+
1297
+ sig { params(name: ::String, constant: ::Module, foreign_constant: T::Boolean).void }
1298
+ def compile_module(name, constant, foreign_constant: T.unsafe(nil)); end
1299
+
1300
+ sig { params(name: ::String, value: ::BasicObject).void }
1301
+ def compile_object(name, value); end
1302
+
1303
+ sig { params(constant: ::Class).returns(T.nilable(::String)) }
1304
+ def compile_superclass(constant); end
1305
+
1306
+ sig { params(constant: ::Module, strict: T::Boolean).returns(T::Boolean) }
1307
+ def defined_in_gem?(constant, strict: T.unsafe(nil)); end
1308
+
1309
+ sig { params(event: ::Tapioca::Gem::Event).void }
1310
+ def dispatch(event); end
1311
+
1312
+ sig { params(constant: T.all(::Module, ::T::Generic)).returns(::String) }
1313
+ def generic_name_of(constant); end
1314
+
1315
+ sig { params(constant: ::Module).returns(T::Array[::String]) }
1316
+ def get_file_candidates(constant); end
1317
+
1318
+ sig { params(gem: ::Tapioca::Gemfile::GemSpec).returns(T::Set[::String]) }
1319
+ def load_bootstrap_symbols(gem); end
1320
+
1321
+ sig { params(name: ::String).void }
1322
+ def mark_seen(name); end
1323
+
1324
+ sig { params(constant: ::Module, class_name: T.nilable(::String)).returns(T.nilable(::String)) }
1325
+ def name_of_proxy_target(constant, class_name); end
1326
+
1327
+ sig { returns(::Tapioca::Gem::Event) }
1328
+ def next_event; end
1329
+
1330
+ sig { params(event: ::Tapioca::Gem::ConstantFound).void }
1331
+ def on_constant(event); end
1332
+
1333
+ sig { params(event: ::Tapioca::Gem::NodeAdded).void }
1334
+ def on_node(event); end
1335
+
1336
+ sig { params(event: ::Tapioca::Gem::SymbolFound).void }
1337
+ def on_symbol(event); end
1338
+
1339
+ sig { params(name: ::String).returns(T::Boolean) }
1340
+ def seen?(name); end
1341
+ end
1342
+
1343
+ Tapioca::Gem::Pipeline::IGNORED_SYMBOLS = T.let(T.unsafe(nil), Array)
1344
+
1345
+ class Tapioca::Gem::ScopeNodeAdded < ::Tapioca::Gem::NodeAdded
1346
+ sig { params(symbol: ::String, constant: ::Module, node: ::RBI::Scope).void }
1347
+ def initialize(symbol, constant, node); end
1348
+
1349
+ sig { returns(::RBI::Scope) }
1350
+ def node; end
1351
+ end
1352
+
1353
+ class Tapioca::Gem::SymbolFound < ::Tapioca::Gem::Event
1354
+ sig { params(symbol: ::String).void }
1355
+ def initialize(symbol); end
1356
+
1357
+ sig { returns(::String) }
1358
+ def symbol; end
1359
+ end
1360
+
1361
+ module Tapioca::GemHelper
1362
+ sig { params(gemfile_dir: ::String, full_gem_path: ::String).returns(T::Boolean) }
1363
+ def gem_in_app_dir?(gemfile_dir, full_gem_path); end
1364
+
1365
+ sig { params(full_gem_path: ::String).returns(T::Boolean) }
1366
+ def gem_in_bundle_path?(full_gem_path); end
1367
+
1368
+ sig { params(path: T.any(::Pathname, ::String)).returns(::String) }
1369
+ def to_realpath(path); end
1370
+ end
1371
+
1372
+ class Tapioca::Gemfile
1373
+ sig { params(exclude: T::Array[::String]).void }
1374
+ def initialize(exclude); end
1375
+
1376
+ sig { returns(::Bundler::Definition) }
1377
+ def definition; end
1378
+
1379
+ sig { returns(T::Array[::Tapioca::Gemfile::GemSpec]) }
1380
+ def dependencies; end
1381
+
1382
+ sig { params(gem_name: ::String).returns(T.nilable(::Tapioca::Gemfile::GemSpec)) }
1383
+ def gem(gem_name); end
1384
+
1385
+ sig { returns(T::Array[::String]) }
1386
+ def missing_specs; end
1387
+
1388
+ sig { void }
1389
+ def require_bundle; end
1390
+
1391
+ private
1392
+
1393
+ sig { returns(::String) }
1394
+ def dir; end
1395
+
1396
+ sig { returns(::File) }
1397
+ def gemfile; end
1398
+
1399
+ sig { returns(T::Array[::Symbol]) }
1400
+ def groups; end
1401
+
1402
+ sig { returns([T::Array[::Tapioca::Gemfile::GemSpec], T::Array[::String]]) }
1403
+ def load_dependencies; end
1404
+
1405
+ # @return [File]
1406
+ def lockfile; end
1407
+
1408
+ sig { returns([T::Enumerable[T.any(::Bundler::StubSpecification, ::Gem::Specification)], T::Array[::String]]) }
1409
+ def materialize_deps; end
1410
+
1411
+ sig { returns(::Bundler::Runtime) }
1412
+ def runtime; end
1413
+ end
1414
+
1415
+ # This is a module that gets prepended to `Bundler::Dependency` and
1416
+ # makes sure even gems marked as `require: false` are required during
1417
+ # `Bundler.require`.
1418
+ module Tapioca::Gemfile::AutoRequireHook
1419
+ requires_ancestor { Bundler::Dependency }
1420
+
1421
+ sig { returns(T.untyped) }
1422
+ def autorequire; end
1423
+
1424
+ class << self
1425
+ sig { params(exclude: T::Array[::String]).returns(T::Array[::String]) }
1426
+ def exclude=(exclude); end
1427
+
1428
+ sig { params(name: T.untyped).returns(T::Boolean) }
1429
+ def excluded?(name); end
1430
+ end
1431
+ end
1432
+
1433
+ class Tapioca::Gemfile::GemSpec
1434
+ include ::Tapioca::GemHelper
1435
+
1436
+ sig { params(spec: T.any(::Bundler::StubSpecification, ::Gem::Specification)).void }
1437
+ def initialize(spec); end
1438
+
1439
+ sig { params(path: ::String).returns(T::Boolean) }
1440
+ def contains_path?(path); end
1441
+
1442
+ sig { returns(T::Boolean) }
1443
+ def export_rbi_files?; end
1444
+
1445
+ sig { returns(T::Array[::String]) }
1446
+ def exported_rbi_files; end
1447
+
1448
+ sig { returns(::RBI::MergeTree) }
1449
+ def exported_rbi_tree; end
1450
+
1451
+ sig { returns(T::Array[::Pathname]) }
1452
+ def files; end
1453
+
1454
+ sig { returns(::String) }
1455
+ def full_gem_path; end
1456
+
1457
+ sig { params(gemfile_dir: ::String).returns(T::Boolean) }
1458
+ def ignore?(gemfile_dir); end
1459
+
1460
+ sig { returns(::String) }
1461
+ def name; end
1462
+
1463
+ sig { void }
1464
+ def parse_yard_docs; end
1465
+
1466
+ sig { returns(::String) }
1467
+ def rbi_file_name; end
1468
+
1469
+ # @return [String]
1470
+ def version; end
1471
+
1472
+ private
1473
+
1474
+ sig { returns(T::Array[::Pathname]) }
1475
+ def collect_files; end
1476
+
1477
+ sig { returns(T.nilable(T::Boolean)) }
1478
+ def default_gem?; end
1479
+
1480
+ sig { returns(T::Boolean) }
1481
+ def gem_ignored?; end
1482
+
1483
+ sig { params(path: ::String).returns(T::Boolean) }
1484
+ def has_parent_gemspec?(path); end
1485
+
1486
+ sig { returns(::Regexp) }
1487
+ def require_paths_prefix_matcher; end
1488
+
1489
+ sig { params(file: ::String).returns(::Pathname) }
1490
+ def resolve_to_ruby_lib_dir(file); end
1491
+
1492
+ sig { returns(::String) }
1493
+ def version_string; end
1494
+ end
1495
+
1496
+ Tapioca::Gemfile::GemSpec::IGNORED_GEMS = T.let(T.unsafe(nil), Array)
1497
+ Tapioca::Gemfile::Spec = T.type_alias { T.any(::Bundler::StubSpecification, ::Gem::Specification) }
1498
+
1499
+ module Tapioca::RBIFilesHelper
1500
+ requires_ancestor { Tapioca::SorbetHelper }
1501
+ requires_ancestor { Thor::Shell }
1502
+
1503
+ sig do
1504
+ params(
1505
+ index: ::RBI::Index,
1506
+ shim_rbi_dir: ::String,
1507
+ todo_rbi_file: ::String
1508
+ ).returns(T::Hash[::String, T::Array[::RBI::Node]])
1509
+ end
1510
+ def duplicated_nodes_from_index(index, shim_rbi_dir:, todo_rbi_file:); end
1511
+
1512
+ sig { params(index: ::RBI::Index, dir: ::String).void }
1513
+ def index_payload(index, dir); end
1514
+
1515
+ sig { params(index: ::RBI::Index, kind: ::String, file: ::String).void }
1516
+ def index_rbi(index, kind, file); end
1517
+
1518
+ sig { params(index: ::RBI::Index, kind: ::String, dir: ::String).void }
1519
+ def index_rbis(index, kind, dir); end
1520
+
1521
+ sig { params(loc: ::RBI::Loc, path_prefix: T.nilable(::String)).returns(::String) }
1522
+ def location_to_payload_url(loc, path_prefix:); end
1523
+
1524
+ sig do
1525
+ params(
1526
+ command: ::String,
1527
+ gem_dir: ::String,
1528
+ dsl_dir: ::String,
1529
+ auto_strictness: T::Boolean,
1530
+ gems: T::Array[::Tapioca::Gemfile::GemSpec],
1531
+ compilers: T::Enumerable[::Class]
1532
+ ).void
1533
+ end
1534
+ def validate_rbi_files(command:, gem_dir:, dsl_dir:, auto_strictness:, gems: T.unsafe(nil), compilers: T.unsafe(nil)); end
1535
+
1536
+ private
1537
+
1538
+ sig { params(nodes: T::Array[::RBI::Node]).returns(T::Array[::RBI::Scope]) }
1539
+ def extract_empty_scopes(nodes); end
1540
+
1541
+ sig { params(nodes: T::Array[::RBI::Node]).returns(T::Array[T.any(::RBI::Attr, ::RBI::Method)]) }
1542
+ def extract_methods_and_attrs(nodes); end
1543
+
1544
+ sig { params(nodes: T::Array[::RBI::Node]).returns(T::Array[T.any(::RBI::Mixin, ::RBI::RequiresAncestor)]) }
1545
+ def extract_mixins(nodes); end
1546
+
1547
+ sig do
1548
+ params(
1549
+ nodes: T::Array[T.any(::RBI::Attr, ::RBI::Method)]
1550
+ ).returns(T::Array[T.any(::RBI::Attr, ::RBI::Method)])
1551
+ end
1552
+ def extract_nodes_with_sigs(nodes); end
1553
+
1554
+ sig do
1555
+ params(
1556
+ nodes: T::Array[::RBI::Node],
1557
+ shim_rbi_dir: ::String,
1558
+ todo_rbi_file: ::String
1559
+ ).returns(T::Array[::RBI::Node])
1560
+ end
1561
+ def extract_shims_and_todos(nodes, shim_rbi_dir:, todo_rbi_file:); end
1562
+
1563
+ sig { params(path: ::String).returns(::String) }
1564
+ def gem_name_from_rbi_path(path); end
1565
+
1566
+ sig { params(index: ::RBI::Index, file: ::String).void }
1567
+ def parse_and_index_file(index, file); end
1568
+
1569
+ sig { params(index: ::RBI::Index, files: T::Array[::String]).void }
1570
+ def parse_and_index_files(index, files); end
1571
+
1572
+ sig { params(nodes: T::Array[::RBI::Node], shim_rbi_dir: ::String, todo_rbi_file: ::String).returns(T::Boolean) }
1573
+ def shims_or_todos_have_duplicates?(nodes, shim_rbi_dir:, todo_rbi_file:); end
1574
+
1575
+ sig { params(errors: T::Array[::Spoom::Sorbet::Errors::Error], gem_dir: ::String).void }
1576
+ def update_gem_rbis_strictnesses(errors, gem_dir); end
1577
+ end
1578
+
1579
+ class Tapioca::RBIFormatter < ::RBI::Formatter
1580
+ sig { params(file: ::RBI::File).void }
1581
+ def write_empty_body_comment!(file); end
1582
+
1583
+ sig { params(file: ::RBI::File, command: ::String, reason: T.nilable(::String)).void }
1584
+ def write_header!(file, command, reason: T.unsafe(nil)); end
1585
+ end
1586
+
1587
+ module Tapioca::RBIHelper
1588
+ include ::Tapioca::SorbetHelper
1589
+ extend ::Tapioca::SorbetHelper
1590
+ extend ::Tapioca::RBIHelper
1591
+
1592
+ sig { params(name: ::String, type: ::String).returns(::RBI::TypedParam) }
1593
+ def create_block_param(name, type:); end
1594
+
1595
+ sig { params(name: ::String, type: ::String, default: ::String).returns(::RBI::TypedParam) }
1596
+ def create_kw_opt_param(name, type:, default:); end
1597
+
1598
+ sig { params(name: ::String, type: ::String).returns(::RBI::TypedParam) }
1599
+ def create_kw_param(name, type:); end
1600
+
1601
+ sig { params(name: ::String, type: ::String).returns(::RBI::TypedParam) }
1602
+ def create_kw_rest_param(name, type:); end
1603
+
1604
+ sig { params(name: ::String, type: ::String, default: ::String).returns(::RBI::TypedParam) }
1605
+ def create_opt_param(name, type:, default:); end
1606
+
1607
+ sig { params(name: ::String, type: ::String).returns(::RBI::TypedParam) }
1608
+ def create_param(name, type:); end
1609
+
1610
+ sig { params(name: ::String, type: ::String).returns(::RBI::TypedParam) }
1611
+ def create_rest_param(name, type:); end
1612
+
1613
+ sig { params(param: ::RBI::Param, type: ::String).returns(::RBI::TypedParam) }
1614
+ def create_typed_param(param, type); end
1615
+
1616
+ sig { params(sig_string: ::String).returns(::String) }
1617
+ def sanitize_signature_types(sig_string); end
1618
+
1619
+ sig { params(name: ::String).returns(T::Boolean) }
1620
+ def valid_method_name?(name); end
1621
+
1622
+ sig { params(name: ::String).returns(T::Boolean) }
1623
+ def valid_parameter_name?(name); end
1624
+
1625
+ class << self
1626
+ sig do
1627
+ params(
1628
+ type: ::String,
1629
+ variance: ::Symbol,
1630
+ fixed: T.nilable(::String),
1631
+ upper: T.nilable(::String),
1632
+ lower: T.nilable(::String)
1633
+ ).returns(::String)
1634
+ end
1635
+ def serialize_type_variable(type, variance, fixed, upper, lower); end
1636
+ end
1637
+ end
1638
+
1639
+ class Tapioca::RepoIndex
1640
+ sig { void }
1641
+ def initialize; end
1642
+
1643
+ sig { params(gem_name: ::String).void }
1644
+ def <<(gem_name); end
1645
+
1646
+ sig { returns(T::Enumerable[::String]) }
1647
+ def gems; end
1648
+
1649
+ sig { params(gem_name: ::String).returns(T::Boolean) }
1650
+ def has_gem?(gem_name); end
1651
+
1652
+ class << self
1653
+ sig { params(hash: T::Hash[::String, T::Hash[T.untyped, T.untyped]]).returns(Tapioca::RepoIndex) }
1654
+ def from_hash(hash); end
1655
+
1656
+ sig { params(json: ::String).returns(Tapioca::RepoIndex) }
1657
+ def from_json(json); end
1658
+ end
1659
+ end
1660
+
1661
+ module Tapioca::Runtime; end
1662
+
1663
+ class Tapioca::Runtime::DynamicMixinCompiler
1664
+ include ::Tapioca::Runtime::Reflection
1665
+
1666
+ sig { params(constant: ::Module).void }
1667
+ def initialize(constant); end
1668
+
1669
+ # @return [Array<Symbol>]
1670
+ def class_attribute_predicates; end
1671
+
1672
+ sig { returns(T::Array[::Symbol]) }
1673
+ def class_attribute_readers; end
1674
+
1675
+ # @return [Array<Symbol>]
1676
+ def class_attribute_writers; end
1677
+
1678
+ sig { params(tree: ::RBI::Tree).void }
1679
+ def compile_class_attributes(tree); end
1680
+
1681
+ sig { params(tree: ::RBI::Tree).returns([T::Array[::Module], T::Array[::Module]]) }
1682
+ def compile_mixes_in_class_methods(tree); end
1683
+
1684
+ sig { returns(T::Array[::Module]) }
1685
+ def dynamic_extends; end
1686
+
1687
+ # @return [Array<Module>]
1688
+ def dynamic_includes; end
1689
+
1690
+ sig { returns(T::Boolean) }
1691
+ def empty_attributes?; end
1692
+
1693
+ sig { params(qualified_mixin_name: ::String).returns(T::Boolean) }
1694
+ def filtered_mixin?(qualified_mixin_name); end
1695
+
1696
+ # @return [Array<Symbol>]
1697
+ def instance_attribute_predicates; end
1698
+
1699
+ sig { returns(T::Array[::Symbol]) }
1700
+ def instance_attribute_readers; end
1701
+
1702
+ # @return [Array<Symbol>]
1703
+ def instance_attribute_writers; end
1704
+
1705
+ sig { params(mod: ::Module, dynamic_extends: T::Array[::Module]).returns(T::Boolean) }
1706
+ def module_included_by_another_dynamic_extend?(mod, dynamic_extends); end
1707
+ end
1708
+
1709
+ # This class is responsible for storing and looking up information related to generic types.
1710
+ #
1711
+ # The class stores 2 different kinds of data, in two separate lookup tables:
1712
+ # 1. a lookup of generic type instances by name: `@generic_instances`
1713
+ # 2. a lookup of type variable serializer by constant and type variable
1714
+ # instance: `@type_variables`
1715
+ #
1716
+ # By storing the above data, we can cheaply query each constant against this registry
1717
+ # to see if it declares any generic type variables. This becomes a simple lookup in the
1718
+ # `@type_variables` hash table with the given constant.
1719
+ #
1720
+ # If there is no entry, then we can cheaply know that we can skip generic type
1721
+ # information generation for this type.
1722
+ #
1723
+ # On the other hand, if we get a result, then the result will be a hash of type
1724
+ # variable to type variable serializers. This allows us to associate type variables
1725
+ # to the constant names that represent them, easily.
1726
+ module Tapioca::Runtime::GenericTypeRegistry
1727
+ class << self
1728
+ sig { params(instance: ::Object).returns(T::Boolean) }
1729
+ def generic_type_instance?(instance); end
1730
+
1731
+ sig { params(constant: ::Module).returns(T.nilable(T::Array[::Tapioca::TypeVariableModule])) }
1732
+ def lookup_type_variables(constant); end
1733
+
1734
+ # This method is responsible for building the name of the instantiated concrete type
1735
+ # and cloning the given constant so that we can return a type that is the same
1736
+ # as the current type but is a different instance and has a different name method.
1737
+ #
1738
+ # We cache those cloned instances by their name in `@generic_instances`, so that
1739
+ # we don't keep instantiating a new type every single time it is referenced.
1740
+ # For example, `[Foo[Integer], Foo[Integer], Foo[Integer], Foo[String]]` will only
1741
+ # result in 2 clones (1 for `Foo[Integer]` and another for `Foo[String]`) and
1742
+ # 2 hash lookups (for the other two `Foo[Integer]`s).
1743
+ #
1744
+ # This method returns the created or cached clone of the constant.
1745
+ sig { params(constant: T.untyped, types: T.untyped).returns(::Module) }
1746
+ def register_type(constant, types); end
1747
+
1748
+ # This method is called from intercepted calls to `type_member` and `type_template`.
1749
+ # We get passed all the arguments to those methods, as well as the `T::Types::TypeVariable`
1750
+ # instance generated by the Sorbet defined `type_member`/`type_template` call on `T::Generic`.
1751
+ #
1752
+ # This method creates a `String` with that data and stores it in the
1753
+ # `@type_variables` lookup table, keyed by the `constant` and `type_variable`.
1754
+ #
1755
+ # Finally, the original `type_variable` is returned from this method, so that the caller
1756
+ # can return it from the original methods as well.
1757
+ sig { params(constant: T.untyped, type_variable: ::Tapioca::TypeVariableModule).void }
1758
+ def register_type_variable(constant, type_variable); end
1759
+
1760
+ private
1761
+
1762
+ sig { params(constant: ::Module, name: ::String).returns(::Module) }
1763
+ def create_generic_type(constant, name); end
1764
+
1765
+ sig { params(constant: ::Class).returns(::Class) }
1766
+ def create_safe_subclass(constant); end
1767
+
1768
+ sig { params(constant: ::Module).returns(T::Array[::Tapioca::TypeVariableModule]) }
1769
+ def lookup_or_initialize_type_variables(constant); end
1770
+ end
1771
+ end
1772
+
1773
+ class Tapioca::Runtime::Loader
1774
+ include ::Tapioca::GemHelper
1775
+
1776
+ sig do
1777
+ params(
1778
+ gemfile: ::Tapioca::Gemfile,
1779
+ initialize_file: T.nilable(::String),
1780
+ require_file: T.nilable(::String)
1781
+ ).void
1782
+ end
1783
+ def load_bundle(gemfile, initialize_file, require_file); end
1784
+
1785
+ sig { params(environment_load: T::Boolean, eager_load: T::Boolean).void }
1786
+ def load_rails_application(environment_load: T.unsafe(nil), eager_load: T.unsafe(nil)); end
1787
+
1788
+ private
1789
+
1790
+ sig { void }
1791
+ def eager_load_rails_app; end
1792
+
1793
+ sig { void }
1794
+ def load_rails_engines; end
1795
+
1796
+ sig { returns(T::Array[T.untyped]) }
1797
+ def rails_engines; end
1798
+
1799
+ sig { params(file: T.nilable(::String)).void }
1800
+ def require_helper(file); end
1801
+
1802
+ sig { params(path: ::String).void }
1803
+ def safe_require(path); end
1804
+
1805
+ sig { void }
1806
+ def silence_deprecations; end
1807
+ end
1808
+
1809
+ module Tapioca::Runtime::Reflection
1810
+ extend ::Tapioca::Runtime::Reflection
1811
+
1812
+ sig { params(constant: ::Module).returns(T::Array[::Module]) }
1813
+ def ancestors_of(constant); end
1814
+
1815
+ sig { params(object: ::BasicObject, other: ::BasicObject).returns(T::Boolean) }
1816
+ def are_equal?(object, other); end
1817
+
1818
+ sig { params(singleton_class: ::Module).returns(T.nilable(::Module)) }
1819
+ def attached_class_of(singleton_class); end
1820
+
1821
+ sig { params(object: ::BasicObject).returns(::Class) }
1822
+ def class_of(object); end
1823
+
1824
+ sig { params(symbol: ::String, inherit: T::Boolean, namespace: ::Module).returns(::BasicObject) }
1825
+ def constantize(symbol, inherit: T.unsafe(nil), namespace: T.unsafe(nil)); end
1826
+
1827
+ sig { params(constant: ::Module).returns(T::Array[::Symbol]) }
1828
+ def constants_of(constant); end
1829
+
1830
+ # Returns an array with all classes that are < than the supplied class.
1831
+ #
1832
+ # class C; end
1833
+ # descendants_of(C) # => []
1834
+ #
1835
+ # class B < C; end
1836
+ # descendants_of(C) # => [B]
1837
+ #
1838
+ # class A < B; end
1839
+ # descendants_of(C) # => [B, A]
1840
+ #
1841
+ # class D < C; end
1842
+ # descendants_of(C) # => [B, A, D]
1843
+ sig do
1844
+ type_parameters(:U)
1845
+ .params(
1846
+ klass: T.all(::Class, T.type_parameter(:U))
1847
+ ).returns(T::Array[T.type_parameter(:U)])
1848
+ end
1849
+ def descendants_of(klass); end
1850
+
1851
+ sig { params(constant: ::Module).returns(T::Array[::Module]) }
1852
+ def inherited_ancestors_of(constant); end
1853
+
1854
+ sig { params(constant: ::Module, method: ::Symbol).returns(::Method) }
1855
+ def method_of(constant, method); end
1856
+
1857
+ sig { params(constant: ::Module).returns(T.nilable(::String)) }
1858
+ def name_of(constant); end
1859
+
1860
+ sig { params(type: ::T::Types::Base).returns(::String) }
1861
+ def name_of_type(type); end
1862
+
1863
+ sig { params(object: ::BasicObject).returns(::Integer) }
1864
+ def object_id_of(object); end
1865
+
1866
+ sig { params(constant: ::Module).returns(T::Array[::Symbol]) }
1867
+ def private_instance_methods_of(constant); end
1868
+
1869
+ sig { params(constant: ::Module).returns(T::Array[::Symbol]) }
1870
+ def protected_instance_methods_of(constant); end
1871
+
1872
+ sig { params(constant: ::Module).returns(T::Array[::Symbol]) }
1873
+ def public_instance_methods_of(constant); end
1874
+
1875
+ sig { params(constant: ::Module).returns(T.nilable(::String)) }
1876
+ def qualified_name_of(constant); end
1877
+
1878
+ # Examines the call stack to identify the closest location where a "require" is performed
1879
+ # by searching for the label "<top (required)>". If none is found, it returns the location
1880
+ # labeled "<main>", which is the original call site.
1881
+ sig { returns(::String) }
1882
+ def required_from_location; end
1883
+
1884
+ sig { params(method: T.any(::Method, ::UnboundMethod)).returns(T.untyped) }
1885
+ def signature_of(method); end
1886
+
1887
+ sig { params(constant: ::Module).returns(::Class) }
1888
+ def singleton_class_of(constant); end
1889
+
1890
+ sig { params(constant: ::Class).returns(T.nilable(::Class)) }
1891
+ def superclass_of(constant); end
1892
+ end
1893
+
1894
+ Tapioca::Runtime::Reflection::ANCESTORS_METHOD = T.let(T.unsafe(nil), UnboundMethod)
1895
+ Tapioca::Runtime::Reflection::CLASS_METHOD = T.let(T.unsafe(nil), UnboundMethod)
1896
+ Tapioca::Runtime::Reflection::CONSTANTS_METHOD = T.let(T.unsafe(nil), UnboundMethod)
1897
+ Tapioca::Runtime::Reflection::EQUAL_METHOD = T.let(T.unsafe(nil), UnboundMethod)
1898
+ Tapioca::Runtime::Reflection::METHOD_METHOD = T.let(T.unsafe(nil), UnboundMethod)
1899
+ Tapioca::Runtime::Reflection::NAME_METHOD = T.let(T.unsafe(nil), UnboundMethod)
1900
+ Tapioca::Runtime::Reflection::OBJECT_ID_METHOD = T.let(T.unsafe(nil), UnboundMethod)
1901
+ Tapioca::Runtime::Reflection::PRIVATE_INSTANCE_METHODS_METHOD = T.let(T.unsafe(nil), UnboundMethod)
1902
+ Tapioca::Runtime::Reflection::PROTECTED_INSTANCE_METHODS_METHOD = T.let(T.unsafe(nil), UnboundMethod)
1903
+ Tapioca::Runtime::Reflection::PUBLIC_INSTANCE_METHODS_METHOD = T.let(T.unsafe(nil), UnboundMethod)
1904
+ Tapioca::Runtime::Reflection::REQUIRED_FROM_LABELS = T.let(T.unsafe(nil), Array)
1905
+ Tapioca::Runtime::Reflection::SINGLETON_CLASS_METHOD = T.let(T.unsafe(nil), UnboundMethod)
1906
+ Tapioca::Runtime::Reflection::SUPERCLASS_METHOD = T.let(T.unsafe(nil), UnboundMethod)
1907
+ module Tapioca::Runtime::Trackers; end
1908
+
1909
+ module Tapioca::Runtime::Trackers::Autoload
1910
+ class << self
1911
+ sig { void }
1912
+ def eager_load_all!; end
1913
+
1914
+ sig { params(constant_name: ::String).void }
1915
+ def register(constant_name); end
1916
+
1917
+ sig do
1918
+ type_parameters(:Result)
1919
+ .params(
1920
+ block: T.proc.returns(T.type_parameter(:Result))
1921
+ ).returns(T.type_parameter(:Result))
1922
+ end
1923
+ def with_disabled_exits(&block); end
1924
+ end
1925
+ end
1926
+
1927
+ Tapioca::Runtime::Trackers::Autoload::NOOP_METHOD = T.let(T.unsafe(nil), Proc)
1928
+
1929
+ # Registers a TracePoint immediately upon load to track points at which
1930
+ # classes and modules are opened for definition. This is used to track
1931
+ # correspondence between classes/modules and files, as this information isn't
1932
+ # available in the ruby runtime without extra accounting.
1933
+ module Tapioca::Runtime::Trackers::ConstantDefinition
1934
+ extend ::Tapioca::Runtime::Reflection
1935
+
1936
+ class << self
1937
+ # Returns the files in which this class or module was opened. Doesn't know
1938
+ # about situations where the class was opened prior to +require+ing,
1939
+ # or where metaprogramming was used via +eval+, etc.
1940
+ def files_for(klass); end
1941
+ end
1942
+ end
1943
+
1944
+ class Tapioca::Runtime::Trackers::ConstantDefinition::ConstantLocation < ::T::Struct
1945
+ const :lineno, ::Integer
1946
+ const :path, ::String
1947
+
1948
+ class << self
1949
+ def inherited(s); end
1950
+ end
1951
+ end
1952
+
1953
+ module Tapioca::Runtime::Trackers::Mixin
1954
+ class << self
1955
+ sig do
1956
+ params(
1957
+ mixin: ::Module
1958
+ ).returns(T::Hash[::Tapioca::Runtime::Trackers::Mixin::Type, T::Hash[::Module, ::String]])
1959
+ end
1960
+ def constants_with_mixin(mixin); end
1961
+
1962
+ sig { params(constant: ::Module, mixin: ::Module, mixin_type: ::Tapioca::Runtime::Trackers::Mixin::Type).void }
1963
+ def register(constant, mixin, mixin_type); end
1964
+
1965
+ sig do
1966
+ type_parameters(:Result)
1967
+ .params(
1968
+ block: T.proc.returns(T.type_parameter(:Result))
1969
+ ).returns(T.type_parameter(:Result))
1970
+ end
1971
+ def with_disabled_registration(&block); end
1972
+ end
1973
+ end
1974
+
1975
+ class Tapioca::Runtime::Trackers::Mixin::Type < ::T::Enum
1976
+ enums do
1977
+ Prepend = new
1978
+ Include = new
1979
+ Extend = new
1980
+ end
1981
+ end
1982
+
1983
+ module Tapioca::Runtime::Trackers::RequiredAncestor
1984
+ class << self
1985
+ sig { params(requiring: ::T::Helpers, block: T.proc.returns(::Module)).void }
1986
+ def register(requiring, block); end
1987
+
1988
+ sig { params(mod: ::Module).returns(T::Array[T.proc.returns(::Module)]) }
1989
+ def required_ancestors_blocks_by(mod); end
1990
+
1991
+ sig { params(mod: ::Module).returns(T::Array[T.nilable(::Module)]) }
1992
+ def required_ancestors_by(mod); end
1993
+ end
1994
+ end
1995
+
1996
+ Tapioca::SORBET_CONFIG_FILE = T.let(T.unsafe(nil), String)
1997
+ Tapioca::SORBET_DIR = T.let(T.unsafe(nil), String)
1998
+
1999
+ module Tapioca::SorbetHelper
2000
+ sig { params(sorbet_args: ::String).returns(::Spoom::ExecResult) }
2001
+ def sorbet(*sorbet_args); end
2002
+
2003
+ sig { returns(::String) }
2004
+ def sorbet_path; end
2005
+
2006
+ sig { params(feature: ::Symbol, version: T.nilable(::Gem::Version)).returns(T::Boolean) }
2007
+ def sorbet_supports?(feature, version: T.unsafe(nil)); end
2008
+ end
2009
+
2010
+ Tapioca::SorbetHelper::FEATURE_REQUIREMENTS = T.let(T.unsafe(nil), Hash)
2011
+ Tapioca::SorbetHelper::SORBET_BIN = T.let(T.unsafe(nil), Pathname)
2012
+ Tapioca::SorbetHelper::SORBET_EXE_PATH_ENV_VAR = T.let(T.unsafe(nil), String)
2013
+ Tapioca::SorbetHelper::SORBET_GEM_SPEC = T.let(T.unsafe(nil), Gem::Specification)
2014
+ Tapioca::SorbetHelper::SORBET_PAYLOAD_URL = T.let(T.unsafe(nil), String)
2015
+ module Tapioca::Static; end
2016
+
2017
+ class Tapioca::Static::RequiresCompiler
2018
+ sig { params(sorbet_path: ::String).void }
2019
+ def initialize(sorbet_path); end
2020
+
2021
+ sig { returns(::String) }
2022
+ def compile; end
2023
+
2024
+ private
2025
+
2026
+ sig { params(config: ::Spoom::Sorbet::Config).returns(T::Array[::String]) }
2027
+ def collect_files(config); end
2028
+
2029
+ sig { params(file_path: ::String).returns(T::Enumerable[::String]) }
2030
+ def collect_requires(file_path); end
2031
+
2032
+ sig { params(config: ::Spoom::Sorbet::Config, file_path: ::Pathname).returns(T::Boolean) }
2033
+ def file_ignored_by_sorbet?(config, file_path); end
2034
+
2035
+ sig { params(path: ::Pathname).returns(T::Array[::String]) }
2036
+ def path_parts(path); end
2037
+ end
2038
+
2039
+ module Tapioca::Static::SymbolLoader
2040
+ extend ::Tapioca::SorbetHelper
2041
+ extend ::Tapioca::Runtime::Reflection
2042
+
2043
+ class << self
2044
+ sig { params(gem: ::Tapioca::Gemfile::GemSpec).returns(T::Set[::String]) }
2045
+ def engine_symbols(gem); end
2046
+
2047
+ sig { params(gem: ::Tapioca::Gemfile::GemSpec).returns(T::Set[::String]) }
2048
+ def gem_symbols(gem); end
2049
+
2050
+ sig { returns(T::Set[::String]) }
2051
+ def payload_symbols; end
2052
+
2053
+ private
2054
+
2055
+ # @return [Array<T.class_of(Rails::Engine)>]
2056
+ def engines(*args, **_arg1, &blk); end
2057
+
2058
+ sig { params(input: ::String, table_type: ::String).returns(::String) }
2059
+ def symbol_table_json_from(input, table_type: T.unsafe(nil)); end
2060
+
2061
+ sig { params(paths: T::Array[::Pathname]).returns(T::Set[::String]) }
2062
+ def symbols_from_paths(paths); end
2063
+ end
2064
+ end
2065
+
2066
+ class Tapioca::Static::SymbolTableParser
2067
+ sig { void }
2068
+ def initialize; end
2069
+
2070
+ sig { params(name: ::String).returns(::String) }
2071
+ def fully_qualified_name(name); end
2072
+
2073
+ sig { params(object: T::Hash[::String, T.untyped]).void }
2074
+ def parse_object(object); end
2075
+
2076
+ sig { returns(T::Set[::String]) }
2077
+ def symbols; end
2078
+
2079
+ class << self
2080
+ sig { params(json_string: ::String).returns(T::Set[::String]) }
2081
+ def parse_json(json_string); end
2082
+ end
2083
+ end
2084
+
2085
+ Tapioca::TAPIOCA_CONFIG_FILE = T.let(T.unsafe(nil), String)
2086
+ Tapioca::TAPIOCA_DIR = T.let(T.unsafe(nil), String)
2087
+
2088
+ class Tapioca::TypeVariable < ::T::Types::TypeVariable
2089
+ # @return [TypeVariable] a new instance of TypeVariable
2090
+ def initialize(name, variance); end
2091
+
2092
+ # Returns the value of attribute name.
2093
+ def name; end
2094
+ end
2095
+
2096
+ # This is subclassing from `Module` so that instances of this type will be modules.
2097
+ # The reason why we want that is because that means those instances will automatically
2098
+ # get bound to the constant names they are assigned to by Ruby. As a result, we don't
2099
+ # need to do any matching of constants to type variables to bind their names, Ruby will
2100
+ # do that automatically for us and we get the `name` method for free from `Module`.
2101
+ class Tapioca::TypeVariableModule < ::Module
2102
+ sig do
2103
+ params(
2104
+ context: ::Module,
2105
+ type: ::Tapioca::TypeVariableModule::Type,
2106
+ variance: ::Symbol,
2107
+ fixed: T.untyped,
2108
+ lower: T.untyped,
2109
+ upper: T.untyped,
2110
+ bounds_proc: T.nilable(T.proc.returns(T::Hash[::Symbol, T.untyped]))
2111
+ ).void
2112
+ end
2113
+ def initialize(context, type, variance, fixed, lower, upper, bounds_proc); end
2114
+
2115
+ sig { returns(::Tapioca::TypeVariable) }
2116
+ def coerce_to_type_variable; end
2117
+
2118
+ sig { returns(T.nilable(::String)) }
2119
+ def name; end
2120
+
2121
+ sig { returns(::String) }
2122
+ def serialize; end
2123
+
2124
+ private
2125
+
2126
+ sig do
2127
+ params(
2128
+ fixed: T.untyped,
2129
+ lower: T.untyped,
2130
+ upper: T.untyped
2131
+ ).returns(T.proc.returns(T::Hash[::Symbol, T.untyped]))
2132
+ end
2133
+ def build_bounds_proc(fixed, lower, upper); end
2134
+
2135
+ sig do
2136
+ type_parameters(:Result)
2137
+ .params(
2138
+ block: T.proc.returns(T.type_parameter(:Result))
2139
+ ).returns(T.type_parameter(:Result))
2140
+ end
2141
+ def with_bound_name_pre_3_0(&block); end
2142
+ end
2143
+
2144
+ class Tapioca::TypeVariableModule::Type < ::T::Enum
2145
+ enums do
2146
+ Member = new
2147
+ Template = new
2148
+ end
2149
+ end
2150
+
2151
+ Tapioca::VERSION = T.let(T.unsafe(nil), String)