packwerk 1.1.0 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (133) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +17 -8
  3. data/.ruby-version +1 -1
  4. data/Gemfile +1 -1
  5. data/Gemfile.lock +129 -111
  6. data/README.md +10 -3
  7. data/TROUBLESHOOT.md +2 -2
  8. data/USAGE.md +30 -30
  9. data/bin/m +29 -0
  10. data/bin/rake +29 -0
  11. data/bin/rubocop +29 -0
  12. data/bin/srb +29 -0
  13. data/bin/tapioca +29 -0
  14. data/dev.yml +7 -7
  15. data/exe/packwerk +1 -1
  16. data/gemfiles/Gemfile-rails-6-0 +22 -0
  17. data/lib/packwerk.rb +72 -34
  18. data/lib/packwerk/application_load_paths.rb +21 -10
  19. data/lib/packwerk/application_validator.rb +104 -84
  20. data/lib/packwerk/association_inspector.rb +23 -11
  21. data/lib/packwerk/checker.rb +4 -7
  22. data/lib/packwerk/cli.rb +36 -129
  23. data/lib/packwerk/configuration.rb +10 -2
  24. data/lib/packwerk/const_node_inspector.rb +13 -14
  25. data/lib/packwerk/constant_discovery.rb +2 -0
  26. data/lib/packwerk/constant_name_inspector.rb +0 -1
  27. data/lib/packwerk/dependency_checker.rb +12 -17
  28. data/lib/packwerk/deprecated_references.rb +8 -10
  29. data/lib/packwerk/file_processor.rb +0 -4
  30. data/lib/packwerk/formatters/offenses_formatter.rb +52 -0
  31. data/lib/packwerk/formatters/progress_formatter.rb +9 -4
  32. data/lib/packwerk/generators/configuration_file.rb +0 -1
  33. data/lib/packwerk/inflector.rb +0 -2
  34. data/lib/packwerk/node.rb +9 -2
  35. data/lib/packwerk/node_processor.rb +15 -32
  36. data/lib/packwerk/node_processor_factory.rb +0 -5
  37. data/lib/packwerk/node_visitor.rb +1 -4
  38. data/lib/packwerk/offense.rb +2 -8
  39. data/lib/packwerk/offense_collection.rb +84 -0
  40. data/lib/packwerk/offenses_formatter.rb +19 -0
  41. data/lib/packwerk/output_style.rb +20 -0
  42. data/lib/packwerk/output_styles/coloured.rb +29 -0
  43. data/lib/packwerk/output_styles/plain.rb +26 -0
  44. data/lib/packwerk/package.rb +17 -1
  45. data/lib/packwerk/package_set.rb +2 -3
  46. data/lib/packwerk/parse_run.rb +106 -0
  47. data/lib/packwerk/parsed_constant_definitions.rb +2 -4
  48. data/lib/packwerk/parsers.rb +0 -2
  49. data/lib/packwerk/parsers/erb.rb +0 -2
  50. data/lib/packwerk/parsers/factory.rb +1 -3
  51. data/lib/packwerk/privacy_checker.rb +22 -17
  52. data/lib/packwerk/reference_extractor.rb +0 -8
  53. data/lib/packwerk/reference_offense.rb +49 -0
  54. data/lib/packwerk/result.rb +9 -0
  55. data/lib/packwerk/run_context.rb +4 -21
  56. data/lib/packwerk/sanity_checker.rb +1 -3
  57. data/lib/packwerk/version.rb +1 -1
  58. data/lib/packwerk/violation_type.rb +0 -2
  59. data/library.yml +1 -1
  60. data/packwerk.gemspec +1 -0
  61. data/service.yml +1 -4
  62. data/shipit.rubygems.yml +5 -1
  63. data/sorbet/rbi/gems/{actioncable@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → actioncable@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +56 -36
  64. data/sorbet/rbi/gems/{actionmailbox@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → actionmailbox@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +25 -28
  65. data/sorbet/rbi/gems/{actionmailer@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → actionmailer@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +43 -24
  66. data/sorbet/rbi/gems/{actionpack@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → actionpack@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +382 -284
  67. data/sorbet/rbi/gems/{actiontext@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → actiontext@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +76 -40
  68. data/sorbet/rbi/gems/{actionview@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → actionview@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +206 -195
  69. data/sorbet/rbi/gems/{activejob@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → activejob@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +64 -75
  70. data/sorbet/rbi/gems/{activemodel@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → activemodel@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +103 -56
  71. data/sorbet/rbi/gems/{activerecord@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → activerecord@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +1250 -898
  72. data/sorbet/rbi/gems/{activestorage@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → activestorage@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +92 -120
  73. data/sorbet/rbi/gems/{activesupport@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → activesupport@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +292 -193
  74. data/sorbet/rbi/gems/{ast@2.4.1.rbi → ast@2.4.2.rbi} +2 -1
  75. data/sorbet/rbi/gems/{better_html@1.0.15.rbi → better_html@1.0.16.rbi} +2 -2
  76. data/sorbet/rbi/gems/{concurrent-ruby@1.1.6.rbi → concurrent-ruby@1.1.8.rbi} +12 -9
  77. data/sorbet/rbi/gems/{erubi@1.9.0.rbi → erubi@1.10.0.rbi} +3 -1
  78. data/sorbet/rbi/gems/{i18n@1.8.2.rbi → i18n@1.8.10.rbi} +19 -52
  79. data/sorbet/rbi/gems/{loofah@2.5.0.rbi → loofah@2.9.0.rbi} +3 -1
  80. data/sorbet/rbi/gems/marcel@1.0.0.rbi +70 -0
  81. data/sorbet/rbi/gems/{mini_mime@1.0.2.rbi → mini_mime@1.0.3.rbi} +6 -6
  82. data/sorbet/rbi/gems/{mini_portile2@2.4.0.rbi → minitest-focus@1.2.1.rbi} +2 -2
  83. data/sorbet/rbi/gems/{minitest@5.14.0.rbi → minitest@5.14.4.rbi} +31 -29
  84. data/sorbet/rbi/gems/{mocha@1.11.2.rbi → mocha@1.12.0.rbi} +25 -36
  85. data/sorbet/rbi/gems/{nio4r@2.5.2.rbi → nio4r@2.5.7.rbi} +21 -20
  86. data/sorbet/rbi/gems/{nokogiri@1.10.9.rbi → nokogiri@1.11.2.rbi} +193 -154
  87. data/sorbet/rbi/gems/parallel@1.20.1.rbi +117 -0
  88. data/sorbet/rbi/gems/parlour@6.0.0.rbi +1272 -0
  89. data/sorbet/rbi/gems/{parser@2.7.1.4.rbi → parser@3.0.0.0.rbi} +287 -174
  90. data/sorbet/rbi/gems/{pry@0.13.1.rbi → pry@0.14.0.rbi} +1 -1
  91. data/sorbet/rbi/gems/racc@1.5.2.rbi +57 -0
  92. data/sorbet/rbi/gems/{rack@2.2.2.rbi → rack@2.2.3.rbi} +23 -35
  93. data/sorbet/rbi/gems/{rails@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → rails@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +1 -1
  94. data/sorbet/rbi/gems/{railties@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → railties@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +132 -121
  95. data/sorbet/rbi/gems/{rake@13.0.1.rbi → rake@13.0.3.rbi} +16 -20
  96. data/sorbet/rbi/gems/{parallel@1.19.1.rbi → regexp_parser@2.1.1.rbi} +2 -2
  97. data/sorbet/rbi/gems/rubocop-ast@1.4.1.rbi +8 -0
  98. data/sorbet/rbi/gems/{rubocop-performance@1.5.2.rbi → rubocop-performance@1.10.2.rbi} +1 -1
  99. data/sorbet/rbi/gems/{rubocop-shopify@1.0.2.rbi → rubocop-shopify@2.0.1.rbi} +1 -1
  100. data/sorbet/rbi/gems/{rubocop-sorbet@0.3.7.rbi → rubocop-sorbet@0.6.1.rbi} +1 -1
  101. data/sorbet/rbi/gems/{rubocop@0.82.0.rbi → rubocop@1.12.0.rbi} +1 -1
  102. data/sorbet/rbi/gems/{ruby-progressbar@1.10.1.rbi → ruby-progressbar@1.11.0.rbi} +1 -1
  103. data/sorbet/rbi/gems/spoom@1.1.0.rbi +1061 -0
  104. data/sorbet/rbi/gems/{spring@2.1.0.rbi → spring@2.1.1.rbi} +7 -7
  105. data/sorbet/rbi/gems/{sprockets-rails@3.2.1.rbi → sprockets-rails@3.2.2.rbi} +88 -68
  106. data/sorbet/rbi/gems/{sprockets@4.0.0.rbi → sprockets@4.0.2.rbi} +8 -7
  107. data/sorbet/rbi/gems/{tapioca@0.4.5.rbi → tapioca@0.4.19.rbi} +109 -24
  108. data/sorbet/rbi/gems/{thor@1.0.1.rbi → thor@1.1.0.rbi} +16 -15
  109. data/sorbet/rbi/gems/{tzinfo@2.0.2.rbi → tzinfo@2.0.4.rbi} +21 -2
  110. data/sorbet/rbi/gems/{unicode-display_width@1.7.0.rbi → unicode-display_width@2.0.0.rbi} +1 -1
  111. data/sorbet/rbi/gems/{websocket-driver@0.7.1.rbi → websocket-driver@0.7.3.rbi} +29 -29
  112. data/sorbet/rbi/gems/{websocket-extensions@0.1.4.rbi → websocket-extensions@0.1.5.rbi} +2 -2
  113. data/sorbet/rbi/gems/zeitwerk@2.4.2.rbi +177 -0
  114. data/sorbet/tapioca/require.rb +1 -0
  115. metadata +83 -65
  116. data/lib/packwerk/cache_deprecated_references.rb +0 -47
  117. data/lib/packwerk/checking_deprecated_references.rb +0 -40
  118. data/lib/packwerk/commands/detect_stale_violations_command.rb +0 -63
  119. data/lib/packwerk/commands/offense_progress_marker.rb +0 -24
  120. data/lib/packwerk/detect_stale_deprecated_references.rb +0 -14
  121. data/lib/packwerk/generators/application_validation.rb +0 -62
  122. data/lib/packwerk/generators/templates/packwerk +0 -23
  123. data/lib/packwerk/generators/templates/packwerk_validator_test.rb +0 -11
  124. data/lib/packwerk/output_styles.rb +0 -41
  125. data/lib/packwerk/reference_lister.rb +0 -23
  126. data/lib/packwerk/spring_command.rb +0 -28
  127. data/lib/packwerk/updating_deprecated_references.rb +0 -14
  128. data/sorbet/rbi/gems/jaro_winkler@1.5.4.rbi +0 -8
  129. data/sorbet/rbi/gems/marcel@0.3.3.rbi +0 -30
  130. data/sorbet/rbi/gems/mimemagic@0.3.5.rbi +0 -47
  131. data/sorbet/rbi/gems/parlour@4.0.1.rbi +0 -561
  132. data/sorbet/rbi/gems/spoom@1.0.4.rbi +0 -418
  133. data/sorbet/rbi/gems/zeitwerk@2.3.0.rbi +0 -8
@@ -1,27 +1,51 @@
1
1
  # DO NOT EDIT MANUALLY
2
2
  # This is an autogenerated file for types exported from the `tapioca` gem.
3
- # Please instead update this file by running `dev typecheck update`.
3
+ # Please instead update this file by running `bin/tapioca sync`.
4
4
 
5
5
  # typed: true
6
6
 
7
+ module T::Generic::TypeStoragePatch
8
+ def [](*types); end
9
+ def type_member(variance = T.unsafe(nil), fixed: T.unsafe(nil), lower: T.unsafe(nil), upper: T.unsafe(nil)); end
10
+ def type_template(variance = T.unsafe(nil), fixed: T.unsafe(nil), lower: T.unsafe(nil), upper: T.unsafe(nil)); end
11
+ end
12
+
13
+ module T::Types::Simple::GenericNamePatch
14
+ def name; end
15
+ end
16
+
17
+ module T::Types::Simple::NamePatch
18
+ def name; end
19
+ end
20
+
7
21
  module Tapioca
8
22
  class << self
9
23
  def silence_warnings(&blk); end
10
24
  end
11
25
  end
12
26
 
13
- class Tapioca::Cli < ::Thor
27
+ module Tapioca::Cli
28
+ end
29
+
30
+ class Tapioca::Cli::Main < ::Thor
14
31
  include(::Thor::Actions)
15
32
  extend(::Thor::Actions::ClassMethods)
16
33
 
34
+ def __print_version; end
17
35
  def dsl(*constants); end
18
36
  def generate(*gems); end
19
- def generator; end
20
37
  def init; end
21
38
  def require; end
22
39
  def sync; end
23
40
  def todo; end
24
41
 
42
+ private
43
+
44
+ def create_config; end
45
+ def create_post_require; end
46
+ def generate_binstub; end
47
+ def generator; end
48
+
25
49
  class << self
26
50
  def exit_on_failure?; end
27
51
  end
@@ -52,7 +76,7 @@ class Tapioca::Compilers::Dsl::Base
52
76
 
53
77
  sig { params(method_def: T.any(Method, UnboundMethod)).returns(T::Array[Parlour::RbiGenerator::Parameter]) }
54
78
  def compile_method_parameters_to_parlour(method_def); end
55
- sig { params(method_def: T.any(Method, UnboundMethod)).returns(String) }
79
+ sig { params(method_def: T.any(Method, UnboundMethod)).returns(T.nilable(String)) }
56
80
  def compile_method_return_type_to_parlour(method_def); end
57
81
  sig { params(namespace: Parlour::RbiGenerator::Namespace, name: String, options: T::Hash[T.untyped, T.untyped]).void }
58
82
  def create_method(namespace, name, options = T.unsafe(nil)); end
@@ -85,7 +109,7 @@ class Tapioca::Compilers::DslCompiler
85
109
  def gather_constants(requested_constants); end
86
110
  sig { params(requested_generators: T::Array[String]).returns(T::Enumerable[Tapioca::Compilers::Dsl::Base]) }
87
111
  def gather_generators(requested_generators); end
88
- sig { params(requested_generators: T::Array[String]).returns(Proc) }
112
+ sig { params(requested_generators: T::Array[String]).returns(T.proc.params(klass: Class).returns(T::Boolean)) }
89
113
  def generator_filter(requested_generators); end
90
114
  sig { params(constant: Module).returns(T.nilable(String)) }
91
115
  def rbi_for_constant(constant); end
@@ -108,10 +132,12 @@ class Tapioca::Compilers::RequiresCompiler
108
132
  def collect_files(config); end
109
133
  sig { params(file_path: String).returns(T::Enumerable[String]) }
110
134
  def collect_requires(file_path); end
111
- sig { params(config: Spoom::Sorbet::Config, file: String).returns(T::Boolean) }
112
- def file_ignored_by_sorbet?(config, file); end
135
+ sig { params(config: Spoom::Sorbet::Config, file_path: Pathname).returns(T::Boolean) }
136
+ def file_ignored_by_sorbet?(config, file_path); end
113
137
  sig { params(files: T::Enumerable[String], name: String).returns(T::Boolean) }
114
138
  def name_in_project?(files, name); end
139
+ sig { params(path: Pathname).returns(T::Array[String]) }
140
+ def path_parts(path); end
115
141
  end
116
142
 
117
143
  module Tapioca::Compilers::Sorbet
@@ -123,6 +149,8 @@ module Tapioca::Compilers::Sorbet
123
149
  end
124
150
  end
125
151
 
152
+ Tapioca::Compilers::Sorbet::EXE_PATH_ENV_VAR = T.let(T.unsafe(nil), String)
153
+
126
154
  Tapioca::Compilers::Sorbet::SORBET = T.let(T.unsafe(nil), Pathname)
127
155
 
128
156
  module Tapioca::Compilers::SymbolTable
@@ -143,6 +171,8 @@ class Tapioca::Compilers::SymbolTable::SymbolGenerator
143
171
  def add_to_alias_namespace(name); end
144
172
  sig { params(name: String).returns(T::Boolean) }
145
173
  def alias_namespaced?(name); end
174
+ sig { params(constant: Module).returns(T::Array[Module]) }
175
+ def ancestors_of(constant); end
146
176
  sig { params(constant: Module, other: BasicObject).returns(T::Boolean) }
147
177
  def are_equal?(constant, other); end
148
178
  sig { params(constant: BasicObject).returns(Class) }
@@ -155,8 +185,10 @@ class Tapioca::Compilers::SymbolTable::SymbolGenerator
155
185
  def compile_body(name, constant); end
156
186
  sig { params(name: String, constant: BasicObject).returns(T.nilable(String)) }
157
187
  def compile_constant(name, constant); end
158
- sig { params(module_name: String, mod: Module, for_visibility: T::Array[Symbol]).returns(String) }
188
+ sig { params(module_name: String, mod: Module, for_visibility: T::Array[Symbol]).returns(T.nilable(String)) }
159
189
  def compile_directly_owned_methods(module_name, mod, for_visibility = T.unsafe(nil)); end
190
+ sig { params(constant: Module).returns(T.nilable(String)) }
191
+ def compile_enums(constant); end
160
192
  sig { params(symbol_name: String, constant: Module, method: T.nilable(UnboundMethod)).returns(T.nilable(String)) }
161
193
  def compile_method(symbol_name, constant, method); end
162
194
  sig { params(name: String, constant: Module).returns(T.nilable(String)) }
@@ -167,11 +199,11 @@ class Tapioca::Compilers::SymbolTable::SymbolGenerator
167
199
  def compile_mixins(constant); end
168
200
  sig { params(name: String, constant: Module).returns(T.nilable(String)) }
169
201
  def compile_module(name, constant); end
170
- sig { params(constant: Module).returns(String) }
202
+ sig { params(constant: Module).returns(T.nilable(String)) }
171
203
  def compile_module_helpers(constant); end
172
204
  sig { params(name: String, value: BasicObject).returns(T.nilable(String)) }
173
205
  def compile_object(name, value); end
174
- sig { params(constant: Module).returns(String) }
206
+ sig { params(constant: Module).returns(T.nilable(String)) }
175
207
  def compile_props(constant); end
176
208
  sig { params(signature: T.untyped, parameters: T::Array[[Symbol, String]]).returns(String) }
177
209
  def compile_signature(signature, parameters); end
@@ -179,6 +211,10 @@ class Tapioca::Compilers::SymbolTable::SymbolGenerator
179
211
  def compile_subconstants(name, constant); end
180
212
  sig { params(constant: Class).returns(String) }
181
213
  def compile_superclass(constant); end
214
+ sig { params(constant: Module).returns(T.nilable(String)) }
215
+ def compile_type_variable_declarations(constant); end
216
+ sig { params(constant: Module).returns(T.nilable(String)) }
217
+ def compile_type_variables(constant); end
182
218
  sig { params(constant: Module).returns(T::Array[Symbol]) }
183
219
  def constants_of(constant); end
184
220
  sig { params(constant: Module, strict: T::Boolean).returns(T::Boolean) }
@@ -191,7 +227,11 @@ class Tapioca::Compilers::SymbolTable::SymbolGenerator
191
227
  def get_file_candidates(constant); end
192
228
  sig { params(str: String).returns(String) }
193
229
  def indented(str); end
230
+ sig { params(constant: Module).returns(T::Array[Module]) }
231
+ def inherited_ancestors_of(constant); end
194
232
  def initialize_method_for(constant); end
233
+ sig { params(constant: Module).returns(T::Array[Module]) }
234
+ def interesting_ancestors_of(constant); end
195
235
  sig { params(name: String).void }
196
236
  def mark_seen(name); end
197
237
  sig { params(method: UnboundMethod).returns(T::Boolean) }
@@ -202,6 +242,8 @@ class Tapioca::Compilers::SymbolTable::SymbolGenerator
202
242
  def name_of(constant); end
203
243
  sig { params(constant: Module).returns(T.nilable(String)) }
204
244
  def name_of_proxy_target(constant); end
245
+ sig { params(object: BasicObject).returns(Integer) }
246
+ def object_id_of(object); end
205
247
  def parent_declares_constant?(name); end
206
248
  sig { params(constant: Module).returns(T::Boolean) }
207
249
  def public_module?(constant); end
@@ -209,13 +251,13 @@ class Tapioca::Compilers::SymbolTable::SymbolGenerator
209
251
  def qualified_name_of(constant); end
210
252
  sig { params(constant: Module).returns(T.nilable(String)) }
211
253
  def raw_name_of(constant); end
212
- sig { params(symbol: String).returns(BasicObject) }
213
- def resolve_constant(symbol); end
254
+ sig { params(symbol: String, inherit: T::Boolean, namespace: Module).returns(BasicObject) }
255
+ def resolve_constant(symbol, inherit: T.unsafe(nil), namespace: T.unsafe(nil)); end
214
256
  sig { params(name: String).returns(T::Boolean) }
215
257
  def seen?(name); end
216
258
  sig { params(method: T.any(Method, UnboundMethod)).returns(T.untyped) }
217
259
  def signature_of(method); end
218
- sig { params(constant: BasicObject).returns(Class) }
260
+ sig { params(constant: Module).returns(Class) }
219
261
  def singleton_class_of(constant); end
220
262
  sig { params(constant: Module, method_name: String).returns(T::Boolean) }
221
263
  def struct_method?(constant, method_name); end
@@ -225,12 +267,14 @@ class Tapioca::Compilers::SymbolTable::SymbolGenerator
225
267
  def symbol_ignored?(symbol_name); end
226
268
  sig { returns(T::Set[String]) }
227
269
  def symbols; end
228
- sig { params(constant: Module).returns(String) }
270
+ sig { params(constant: T::Types::Base).returns(String) }
229
271
  def type_of(constant); end
230
272
  sig { params(name: String).returns(T::Boolean) }
231
273
  def valid_method_name?(name); end
232
- sig { type_parameters(:U).params(step: Integer, _blk: T.proc.params().returns(T.type_parameter(:U))).returns(T.type_parameter(:U)) }
274
+ sig { type_parameters(:U).params(step: Integer, _blk: T.proc.returns(T.type_parameter(:U))).returns(T.type_parameter(:U)) }
233
275
  def with_indentation(step = T.unsafe(nil), &_blk); end
276
+ sig { params(constant: Module, blk: T.proc.returns(T.nilable(String))).returns(T.nilable(String)) }
277
+ def with_indentation_for_constant(constant, &blk); end
234
278
  end
235
279
 
236
280
  Tapioca::Compilers::SymbolTable::SymbolGenerator::IGNORED_SYMBOLS = T.let(T.unsafe(nil), Array)
@@ -279,7 +323,6 @@ class Tapioca::Config < ::T::Struct
279
323
  const :outdir, String
280
324
  const :prerequire, T.nilable(String)
281
325
  const :postrequire, String
282
- const :generate_command, String
283
326
  const :exclude, T::Array[String]
284
327
  const :typed_overrides, T::Hash[String, String]
285
328
  const :todos_path, String
@@ -293,6 +336,8 @@ class Tapioca::Config < ::T::Struct
293
336
  end
294
337
  end
295
338
 
339
+ Tapioca::Config::DEFAULT_COMMAND = T.let(T.unsafe(nil), String)
340
+
296
341
  Tapioca::Config::DEFAULT_DSLDIR = T.let(T.unsafe(nil), String)
297
342
 
298
343
  Tapioca::Config::DEFAULT_GEMDIR = T.let(T.unsafe(nil), String)
@@ -322,8 +367,6 @@ class Tapioca::ConfigBuilder
322
367
 
323
368
  sig { returns(T::Hash[String, T.untyped]) }
324
369
  def config_options; end
325
- sig { returns(String) }
326
- def default_command; end
327
370
  sig { params(command: Symbol).returns(T::Hash[String, T.untyped]) }
328
371
  def default_options(command); end
329
372
  sig { params(options: T::Hash[String, T.untyped]).returns(T::Hash[String, T.untyped]) }
@@ -351,23 +394,27 @@ class Tapioca::Gemfile
351
394
  sig { void }
352
395
  def initialize; end
353
396
 
397
+ sig { returns(Bundler::Definition) }
398
+ def definition; end
354
399
  sig { returns(T::Array[Tapioca::Gemfile::Gem]) }
355
400
  def dependencies; end
356
401
  sig { params(gem_name: String).returns(T.nilable(Tapioca::Gemfile::Gem)) }
357
402
  def gem(gem_name); end
403
+ sig { returns(T::Array[String]) }
404
+ def missing_specs; end
358
405
  sig { void }
359
406
  def require; end
360
407
 
361
408
  private
362
409
 
363
- sig { returns(Bundler::Definition) }
364
- def definition; end
365
410
  sig { returns(String) }
366
411
  def dir; end
367
412
  sig { returns(File) }
368
413
  def gemfile; end
369
414
  sig { returns(T::Array[Symbol]) }
370
415
  def groups; end
416
+ sig { returns([T::Array[Tapioca::Gemfile::Gem], T::Array[String]]) }
417
+ def load_dependencies; end
371
418
  def lockfile; end
372
419
  sig { returns(Bundler::Runtime) }
373
420
  def runtime; end
@@ -413,8 +460,8 @@ class Tapioca::Generator < ::Thor::Shell::Color
413
460
  sig { params(config: Tapioca::Config).void }
414
461
  def initialize(config); end
415
462
 
416
- sig { params(requested_constants: T::Array[String]).void }
417
- def build_dsl(requested_constants); end
463
+ sig { params(requested_constants: T::Array[String], should_verify: T::Boolean).void }
464
+ def build_dsl(requested_constants, should_verify: T.unsafe(nil)); end
418
465
  sig { params(gem_names: T::Array[String]).void }
419
466
  def build_gem_rbis(gem_names); end
420
467
  sig { void }
@@ -434,16 +481,20 @@ class Tapioca::Generator < ::Thor::Shell::Color
434
481
  def added_rbis; end
435
482
  sig { returns(Tapioca::Gemfile) }
436
483
  def bundle; end
437
- sig { params(constant: Module, contents: String).void }
438
- def compile_dsl_rbi(constant, contents); end
484
+ sig { params(constant: Module, contents: String, outpath: Pathname).returns(T.nilable(Pathname)) }
485
+ def compile_dsl_rbi(constant, contents, outpath: T.unsafe(nil)); end
439
486
  sig { params(gem: Tapioca::Gemfile::Gem).void }
440
487
  def compile_gem_rbi(gem); end
441
488
  sig { returns(Tapioca::Compilers::SymbolTableCompiler) }
442
489
  def compiler; end
443
490
  sig { params(constant_names: T::Array[String]).returns(T::Array[Module]) }
444
491
  def constantize(constant_names); end
492
+ sig { params(constant_name: String).returns(Pathname) }
493
+ def dsl_rbi_filename(constant_name); end
445
494
  sig { params(gem_name: String).returns(Pathname) }
446
495
  def existing_rbi(gem_name); end
496
+ sig { params(requested_constants: T::Array[String], path: Pathname).returns(T::Set[Pathname]) }
497
+ def existing_rbi_filenames(requested_constants, path: T.unsafe(nil)); end
447
498
  sig { returns(T::Hash[String, String]) }
448
499
  def existing_rbis; end
449
500
  sig { params(gem_name: String).returns(Pathname) }
@@ -468,8 +519,12 @@ class Tapioca::Generator < ::Thor::Shell::Color
468
519
  def move(old_filename, new_filename); end
469
520
  sig { void }
470
521
  def perform_additions; end
522
+ sig { params(dir: String).void }
523
+ def perform_dsl_verification(dir); end
471
524
  sig { void }
472
525
  def perform_removals; end
526
+ sig { params(files: T::Set[Pathname]).void }
527
+ def purge_stale_dsl_rbi_files(files); end
473
528
  sig { params(command: String, reason: T.nilable(String), strictness: T.nilable(String)).returns(String) }
474
529
  def rbi_header(command, reason: T.unsafe(nil), strictness: T.unsafe(nil)); end
475
530
  sig { params(filename: Pathname).void }
@@ -480,10 +535,40 @@ class Tapioca::Generator < ::Thor::Shell::Color
480
535
  def require_gem_file; end
481
536
  sig { params(message: String, color: T.any(Symbol, T::Array[Symbol])).void }
482
537
  def say_error(message = T.unsafe(nil), *color); end
538
+ sig { params(tmp_dir: Pathname).returns(T.nilable(String)) }
539
+ def verify_dsl_rbi(tmp_dir:); end
483
540
  end
484
541
 
485
542
  Tapioca::Generator::EMPTY_RBI_COMMENT = T.let(T.unsafe(nil), String)
486
543
 
544
+ module Tapioca::GenericTypeRegistry
545
+ class << self
546
+ sig { params(constant: Module).returns(T.nilable(T::Hash[Integer, String])) }
547
+ def lookup_type_variables(constant); end
548
+ sig { params(constant: T.untyped, types: T.untyped).returns(Module) }
549
+ def register_type(constant, types); end
550
+ sig { params(constant: T.untyped, type_member: T::Types::TypeVariable, fixed: T.untyped, lower: T.untyped, upper: T.untyped).void }
551
+ def register_type_member(constant, type_member, fixed, lower, upper); end
552
+ sig { params(constant: T.untyped, type_template: T::Types::TypeVariable, fixed: T.untyped, lower: T.untyped, upper: T.untyped).void }
553
+ def register_type_template(constant, type_template, fixed, lower, upper); end
554
+
555
+ private
556
+
557
+ sig { params(constant: Module, name: String).returns(Module) }
558
+ def create_generic_type(constant, name); end
559
+ sig { params(constant: Module).returns(T::Hash[Integer, String]) }
560
+ def lookup_or_initialize_type_variables(constant); end
561
+ sig { params(constant: Module).returns(T.nilable(String)) }
562
+ def name_of(constant); end
563
+ sig { params(object: BasicObject).returns(Integer) }
564
+ def object_id_of(object); end
565
+ sig { params(constant: T.untyped, type_variable_type: T.enum([:type_member, :type_template]), type_variable: T::Types::TypeVariable, fixed: T.untyped, lower: T.untyped, upper: T.untyped).void }
566
+ def register_type_variable(constant, type_variable_type, type_variable, fixed, lower, upper); end
567
+ sig { params(type_variable_type: Symbol, variance: Symbol, fixed: T.untyped, lower: T.untyped, upper: T.untyped).returns(String) }
568
+ def serialize_type_variable(type_variable_type, variance, fixed, lower, upper); end
569
+ end
570
+ end
571
+
487
572
  class Tapioca::Loader
488
573
  sig { params(gemfile: Tapioca::Gemfile).void }
489
574
  def initialize(gemfile); end
@@ -1,6 +1,6 @@
1
1
  # DO NOT EDIT MANUALLY
2
2
  # This is an autogenerated file for types exported from the `thor` gem.
3
- # Please instead update this file by running `dev typecheck update`.
3
+ # Please instead update this file by running `bin/tapioca sync`.
4
4
 
5
5
  # typed: true
6
6
 
@@ -77,7 +77,7 @@ module Thor::Actions
77
77
  def append_to_file(path, *args, &block); end
78
78
  def apply(path, config = T.unsafe(nil)); end
79
79
  def behavior; end
80
- def behavior=(_); end
80
+ def behavior=(_arg0); end
81
81
  def chmod(path, mode, config = T.unsafe(nil)); end
82
82
  def comment_lines(path, flag, *args); end
83
83
  def copy_file(source, *args, &block); end
@@ -119,7 +119,7 @@ module Thor::Actions
119
119
  def capture(*args); end
120
120
  def concat(string); end
121
121
  def output_buffer; end
122
- def output_buffer=(_); end
122
+ def output_buffer=(_arg0); end
123
123
  def with_output_buffer(buf = T.unsafe(nil)); end
124
124
 
125
125
  class << self
@@ -280,17 +280,17 @@ module Thor::Base
280
280
  def initialize(args = T.unsafe(nil), local_options = T.unsafe(nil), config = T.unsafe(nil)); end
281
281
 
282
282
  def args; end
283
- def args=(_); end
283
+ def args=(_arg0); end
284
284
  def options; end
285
- def options=(_); end
285
+ def options=(_arg0); end
286
286
  def parent_options; end
287
- def parent_options=(_); end
287
+ def parent_options=(_arg0); end
288
288
 
289
289
  class << self
290
290
  def included(base); end
291
291
  def register_klass_file(klass); end
292
292
  def shell; end
293
- def shell=(_); end
293
+ def shell=(_arg0); end
294
294
  def subclass_files; end
295
295
  def subclasses; end
296
296
  end
@@ -302,9 +302,9 @@ module Thor::Base::ClassMethods
302
302
  def allow_incompatible_default_type!; end
303
303
  def argument(name, options = T.unsafe(nil)); end
304
304
  def arguments; end
305
- def attr_accessor(*_); end
306
- def attr_reader(*_); end
307
- def attr_writer(*_); end
305
+ def attr_accessor(*_arg0); end
306
+ def attr_reader(*_arg0); end
307
+ def attr_writer(*_arg0); end
308
308
  def check_default_type; end
309
309
  def check_default_type!; end
310
310
  def check_unknown_options; end
@@ -443,8 +443,8 @@ class Thor::Group
443
443
  def invocations; end
444
444
  def invoke(*names, &block); end
445
445
  def invoke_from_option(*names, &block); end
446
- def printable_commands(*_); end
447
- def printable_tasks(*_); end
446
+ def printable_commands(*_arg0); end
447
+ def printable_tasks(*_arg0); end
448
448
  def remove_invocation(*names); end
449
449
 
450
450
  protected
@@ -672,7 +672,7 @@ module Thor::Shell
672
672
  def say_status(*args, &block); end
673
673
  def set_color(*args, &block); end
674
674
  def shell; end
675
- def shell=(_); end
675
+ def shell=(_arg0); end
676
676
  def terminal_width(*args, &block); end
677
677
  def with_padding; end
678
678
  def yes?(*args, &block); end
@@ -687,7 +687,7 @@ class Thor::Shell::Basic
687
687
 
688
688
  def ask(statement, *args); end
689
689
  def base; end
690
- def base=(_); end
690
+ def base=(_arg0); end
691
691
  def error(statement); end
692
692
  def file_collision(destination); end
693
693
  def indent(count = T.unsafe(nil)); end
@@ -701,7 +701,7 @@ class Thor::Shell::Basic
701
701
  def print_wrapped(message, options = T.unsafe(nil)); end
702
702
  def say(message = T.unsafe(nil), color = T.unsafe(nil), force_new_line = T.unsafe(nil)); end
703
703
  def say_status(status, message, log_status = T.unsafe(nil)); end
704
- def set_color(string, *_); end
704
+ def set_color(string, *_arg1); end
705
705
  def terminal_width; end
706
706
  def yes?(statement, color = T.unsafe(nil)); end
707
707
 
@@ -738,6 +738,7 @@ class Thor::Shell::Color < ::Thor::Shell::Basic
738
738
  protected
739
739
 
740
740
  def are_colors_disabled?; end
741
+ def are_colors_supported?; end
741
742
  def can_display_colors?; end
742
743
  def diff_lcs_loaded?; end
743
744
  def output_diff_line(diff); end
@@ -1,12 +1,26 @@
1
1
  # DO NOT EDIT MANUALLY
2
2
  # This is an autogenerated file for types exported from the `tzinfo` gem.
3
- # Please instead update this file by running `dev typecheck update`.
3
+ # Please instead update this file by running `bin/tapioca sync`.
4
4
 
5
5
  # typed: true
6
6
 
7
7
  module TZInfo
8
8
  end
9
9
 
10
+ class TZInfo::AbsoluteDayOfYearTransitionRule
11
+ def initialize(day, transition_at = T.unsafe(nil)); end
12
+
13
+ def ==(r); end
14
+ def eql?(r); end
15
+ def is_always_first_day_of_year?; end
16
+ def is_always_last_day_of_year?; end
17
+
18
+ protected
19
+
20
+ def get_day(offset, year); end
21
+ def hash_args; end
22
+ end
23
+
10
24
  class TZInfo::AmbiguousTime < ::StandardError
11
25
  end
12
26
 
@@ -307,6 +321,7 @@ class TZInfo::TimeWithOffset < ::Time
307
321
  include(::TZInfo::WithOffset)
308
322
 
309
323
  def dst?; end
324
+ def getlocal(*args); end
310
325
  def gmtime; end
311
326
  def isdst; end
312
327
  def localtime(*args); end
@@ -317,6 +332,10 @@ class TZInfo::TimeWithOffset < ::Time
317
332
  def to_datetime; end
318
333
  def utc; end
319
334
  def zone; end
335
+
336
+ protected
337
+
338
+ def clear_timezone_offset; end
320
339
  end
321
340
 
322
341
  class TZInfo::Timestamp
@@ -326,7 +345,7 @@ class TZInfo::Timestamp
326
345
 
327
346
  def <=>(t); end
328
347
  def add_and_set_utc_offset(seconds, utc_offset); end
329
- def eql?(_); end
348
+ def eql?(_arg0); end
330
349
  def hash; end
331
350
  def inspect; end
332
351
  def strftime(format); end