packwerk 1.0.1 → 1.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. checksums.yaml +4 -4
  2. data/.github/pull_request_template.md +8 -7
  3. data/.github/workflows/ci.yml +14 -5
  4. data/.ruby-version +1 -1
  5. data/Gemfile +2 -1
  6. data/Gemfile.lock +130 -110
  7. data/README.md +8 -1
  8. data/USAGE.md +23 -2
  9. data/dev.yml +1 -1
  10. data/exe/packwerk +1 -1
  11. data/gemfiles/Gemfile-rails-6-0 +22 -0
  12. data/lib/packwerk.rb +4 -2
  13. data/lib/packwerk/application_load_paths.rb +68 -0
  14. data/lib/packwerk/application_validator.rb +94 -74
  15. data/lib/packwerk/association_inspector.rb +24 -9
  16. data/lib/packwerk/cache_deprecated_references.rb +55 -0
  17. data/lib/packwerk/checker.rb +3 -0
  18. data/lib/packwerk/checking_deprecated_references.rb +5 -2
  19. data/lib/packwerk/cli.rb +56 -55
  20. data/lib/packwerk/commands/detect_stale_violations_command.rb +60 -0
  21. data/lib/packwerk/commands/offense_progress_marker.rb +24 -0
  22. data/lib/packwerk/commands/result.rb +13 -0
  23. data/lib/packwerk/commands/update_deprecations_command.rb +81 -0
  24. data/lib/packwerk/configuration.rb +5 -37
  25. data/lib/packwerk/const_node_inspector.rb +28 -17
  26. data/lib/packwerk/dependency_checker.rb +13 -5
  27. data/lib/packwerk/deprecated_references.rb +23 -0
  28. data/lib/packwerk/detect_stale_deprecated_references.rb +14 -0
  29. data/lib/packwerk/file_processor.rb +4 -4
  30. data/lib/packwerk/formatters/offenses_formatter.rb +48 -0
  31. data/lib/packwerk/formatters/progress_formatter.rb +6 -2
  32. data/lib/packwerk/inflector.rb +17 -8
  33. data/lib/packwerk/node.rb +61 -38
  34. data/lib/packwerk/node_processor.rb +4 -4
  35. data/lib/packwerk/node_processor_factory.rb +39 -0
  36. data/lib/packwerk/node_visitor.rb +1 -1
  37. data/lib/packwerk/offense.rb +4 -6
  38. data/lib/packwerk/output_style.rb +20 -0
  39. data/lib/packwerk/output_styles/coloured.rb +29 -0
  40. data/lib/packwerk/output_styles/plain.rb +26 -0
  41. data/lib/packwerk/package_set.rb +9 -3
  42. data/lib/packwerk/parsed_constant_definitions.rb +4 -4
  43. data/lib/packwerk/parsers/erb.rb +4 -0
  44. data/lib/packwerk/parsers/factory.rb +10 -1
  45. data/lib/packwerk/privacy_checker.rb +23 -5
  46. data/lib/packwerk/run_context.rb +69 -46
  47. data/lib/packwerk/sanity_checker.rb +1 -1
  48. data/lib/packwerk/spring_command.rb +1 -1
  49. data/lib/packwerk/updating_deprecated_references.rb +2 -39
  50. data/lib/packwerk/version.rb +1 -1
  51. data/library.yml +1 -1
  52. data/packwerk.gemspec +1 -1
  53. data/service.yml +2 -2
  54. data/shipit.rubygems.yml +5 -1
  55. data/sorbet/rbi/gems/{actioncable@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → actioncable@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +56 -36
  56. data/sorbet/rbi/gems/{actionmailbox@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → actionmailbox@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +25 -28
  57. data/sorbet/rbi/gems/{actionmailer@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → actionmailer@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +43 -24
  58. data/sorbet/rbi/gems/{actionpack@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → actionpack@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +382 -284
  59. data/sorbet/rbi/gems/{actiontext@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → actiontext@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +76 -40
  60. data/sorbet/rbi/gems/{actionview@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → actionview@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +206 -195
  61. data/sorbet/rbi/gems/{activejob@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → activejob@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +64 -75
  62. data/sorbet/rbi/gems/{activemodel@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → activemodel@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +103 -56
  63. data/sorbet/rbi/gems/{activerecord@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → activerecord@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +1250 -898
  64. data/sorbet/rbi/gems/{activestorage@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → activestorage@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +92 -120
  65. data/sorbet/rbi/gems/{activesupport@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → activesupport@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +292 -193
  66. data/sorbet/rbi/gems/{ast@2.4.1.rbi → ast@2.4.2.rbi} +2 -1
  67. data/sorbet/rbi/gems/{better_html@1.0.15.rbi → better_html@1.0.16.rbi} +2 -2
  68. data/sorbet/rbi/gems/{concurrent-ruby@1.1.6.rbi → concurrent-ruby@1.1.8.rbi} +12 -9
  69. data/sorbet/rbi/gems/{erubi@1.9.0.rbi → erubi@1.10.0.rbi} +3 -1
  70. data/sorbet/rbi/gems/{i18n@1.8.2.rbi → i18n@1.8.10.rbi} +19 -52
  71. data/sorbet/rbi/gems/{loofah@2.5.0.rbi → loofah@2.9.0.rbi} +3 -1
  72. data/sorbet/rbi/gems/marcel@1.0.0.rbi +70 -0
  73. data/sorbet/rbi/gems/{mini_mime@1.0.2.rbi → mini_mime@1.0.3.rbi} +6 -6
  74. data/sorbet/rbi/gems/{mini_portile2@2.4.0.rbi → minitest-focus@1.2.1.rbi} +2 -2
  75. data/sorbet/rbi/gems/{minitest@5.14.0.rbi → minitest@5.14.4.rbi} +31 -29
  76. data/sorbet/rbi/gems/{mocha@1.11.2.rbi → mocha@1.12.0.rbi} +25 -36
  77. data/sorbet/rbi/gems/{nio4r@2.5.2.rbi → nio4r@2.5.7.rbi} +21 -20
  78. data/sorbet/rbi/gems/{nokogiri@1.10.9.rbi → nokogiri@1.11.2.rbi} +193 -154
  79. data/sorbet/rbi/gems/{parallel@1.19.1.rbi → parallel@1.20.1.rbi} +1 -1
  80. data/sorbet/rbi/gems/parlour@6.0.0.rbi +1272 -0
  81. data/sorbet/rbi/gems/{parser@2.7.1.4.rbi → parser@3.0.0.0.rbi} +287 -174
  82. data/sorbet/rbi/gems/{pry@0.13.1.rbi → pry@0.14.0.rbi} +1 -1
  83. data/sorbet/rbi/gems/racc@1.5.2.rbi +57 -0
  84. data/sorbet/rbi/gems/{rack@2.2.2.rbi → rack@2.2.3.rbi} +23 -35
  85. data/sorbet/rbi/gems/{rails@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → rails@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +1 -1
  86. data/sorbet/rbi/gems/{railties@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → railties@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +132 -121
  87. data/sorbet/rbi/gems/{rake@13.0.1.rbi → rake@13.0.3.rbi} +16 -20
  88. data/sorbet/rbi/gems/regexp_parser@2.1.1.rbi +8 -0
  89. data/sorbet/rbi/gems/rubocop-ast@1.4.1.rbi +8 -0
  90. data/sorbet/rbi/gems/{rubocop-performance@1.5.2.rbi → rubocop-performance@1.10.2.rbi} +1 -1
  91. data/sorbet/rbi/gems/{rubocop-shopify@1.0.2.rbi → rubocop-shopify@2.0.1.rbi} +1 -1
  92. data/sorbet/rbi/gems/{rubocop-sorbet@0.3.7.rbi → rubocop-sorbet@0.6.1.rbi} +1 -1
  93. data/sorbet/rbi/gems/{rubocop@0.82.0.rbi → rubocop@1.12.0.rbi} +1 -1
  94. data/sorbet/rbi/gems/{ruby-progressbar@1.10.1.rbi → ruby-progressbar@1.11.0.rbi} +1 -1
  95. data/sorbet/rbi/gems/spoom@1.1.0.rbi +1061 -0
  96. data/sorbet/rbi/gems/{spring@2.1.0.rbi → spring@2.1.1.rbi} +7 -7
  97. data/sorbet/rbi/gems/{sprockets-rails@3.2.1.rbi → sprockets-rails@3.2.2.rbi} +88 -68
  98. data/sorbet/rbi/gems/{sprockets@4.0.0.rbi → sprockets@4.0.2.rbi} +8 -7
  99. data/sorbet/rbi/gems/{tapioca@0.4.5.rbi → tapioca@0.4.19.rbi} +109 -24
  100. data/sorbet/rbi/gems/{thor@1.0.1.rbi → thor@1.1.0.rbi} +16 -15
  101. data/sorbet/rbi/gems/{tzinfo@2.0.2.rbi → tzinfo@2.0.4.rbi} +21 -2
  102. data/sorbet/rbi/gems/{unicode-display_width@1.7.0.rbi → unicode-display_width@2.0.0.rbi} +1 -1
  103. data/sorbet/rbi/gems/{websocket-driver@0.7.1.rbi → websocket-driver@0.7.3.rbi} +29 -29
  104. data/sorbet/rbi/gems/{websocket-extensions@0.1.4.rbi → websocket-extensions@0.1.5.rbi} +2 -2
  105. data/sorbet/rbi/gems/zeitwerk@2.4.2.rbi +177 -0
  106. metadata +66 -58
  107. data/lib/packwerk/output_styles.rb +0 -41
  108. data/sorbet/rbi/gems/jaro_winkler@1.5.4.rbi +0 -8
  109. data/sorbet/rbi/gems/marcel@0.3.3.rbi +0 -30
  110. data/sorbet/rbi/gems/mimemagic@0.3.5.rbi +0 -47
  111. data/sorbet/rbi/gems/parlour@4.0.1.rbi +0 -561
  112. data/sorbet/rbi/gems/spoom@1.0.4.rbi +0 -418
  113. data/sorbet/rbi/gems/zeitwerk@2.3.0.rbi +0 -8
  114. data/static/packwerk-check-demo.png +0 -0
  115. data/static/packwerk_check.gif +0 -0
  116. data/static/packwerk_check_violation.gif +0 -0
  117. data/static/packwerk_update.gif +0 -0
  118. data/static/packwerk_validate.gif +0 -0
@@ -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