tapioca 0.6.4 → 0.7.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (110) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +8 -2
  3. data/README.md +27 -15
  4. data/Rakefile +10 -14
  5. data/lib/tapioca/cli.rb +65 -80
  6. data/lib/tapioca/{generators/base.rb → commands/command.rb} +16 -9
  7. data/lib/tapioca/{generators → commands}/dsl.rb +59 -45
  8. data/lib/tapioca/{generators → commands}/gem.rb +93 -30
  9. data/lib/tapioca/{generators → commands}/init.rb +9 -13
  10. data/lib/tapioca/{generators → commands}/require.rb +8 -10
  11. data/lib/tapioca/commands/todo.rb +86 -0
  12. data/lib/tapioca/commands.rb +13 -0
  13. data/lib/tapioca/dsl/compiler.rb +185 -0
  14. data/lib/tapioca/{compilers/dsl → dsl/compilers}/aasm.rb +12 -9
  15. data/lib/tapioca/{compilers/dsl → dsl/compilers}/action_controller_helpers.rb +13 -20
  16. data/lib/tapioca/{compilers/dsl → dsl/compilers}/action_mailer.rb +10 -8
  17. data/lib/tapioca/{compilers/dsl → dsl/compilers}/active_job.rb +11 -9
  18. data/lib/tapioca/{compilers/dsl → dsl/compilers}/active_model_attributes.rb +13 -11
  19. data/lib/tapioca/{compilers/dsl → dsl/compilers}/active_model_secure_password.rb +10 -12
  20. data/lib/tapioca/{compilers/dsl → dsl/compilers}/active_record_associations.rb +28 -34
  21. data/lib/tapioca/{compilers/dsl → dsl/compilers}/active_record_columns.rb +18 -16
  22. data/lib/tapioca/{compilers/dsl → dsl/compilers}/active_record_enum.rb +14 -12
  23. data/lib/tapioca/{compilers/dsl → dsl/compilers}/active_record_fixtures.rb +12 -8
  24. data/lib/tapioca/dsl/compilers/active_record_relations.rb +712 -0
  25. data/lib/tapioca/{compilers/dsl → dsl/compilers}/active_record_scope.rb +21 -20
  26. data/lib/tapioca/{compilers/dsl → dsl/compilers}/active_record_typed_store.rb +11 -16
  27. data/lib/tapioca/{compilers/dsl → dsl/compilers}/active_resource.rb +10 -8
  28. data/lib/tapioca/{compilers/dsl → dsl/compilers}/active_storage.rb +14 -10
  29. data/lib/tapioca/{compilers/dsl → dsl/compilers}/active_support_concern.rb +19 -14
  30. data/lib/tapioca/{compilers/dsl → dsl/compilers}/active_support_current_attributes.rb +16 -21
  31. data/lib/tapioca/{compilers/dsl → dsl/compilers}/config.rb +11 -9
  32. data/lib/tapioca/{compilers/dsl → dsl/compilers}/frozen_record.rb +13 -11
  33. data/lib/tapioca/{compilers/dsl → dsl/compilers}/identity_cache.rb +23 -22
  34. data/lib/tapioca/{compilers/dsl → dsl/compilers}/mixed_in_class_attributes.rb +12 -10
  35. data/lib/tapioca/{compilers/dsl → dsl/compilers}/protobuf.rb +22 -10
  36. data/lib/tapioca/{compilers/dsl → dsl/compilers}/rails_generators.rb +12 -13
  37. data/lib/tapioca/{compilers/dsl → dsl/compilers}/sidekiq_worker.rb +14 -13
  38. data/lib/tapioca/{compilers/dsl → dsl/compilers}/smart_properties.rb +11 -9
  39. data/lib/tapioca/{compilers/dsl → dsl/compilers}/state_machines.rb +12 -10
  40. data/lib/tapioca/{compilers/dsl → dsl/compilers}/url_helpers.rb +20 -15
  41. data/lib/tapioca/dsl/compilers.rb +31 -0
  42. data/lib/tapioca/{compilers/dsl → dsl}/extensions/frozen_record.rb +2 -2
  43. data/lib/tapioca/dsl/helpers/active_record_column_type_helper.rb +114 -0
  44. data/lib/tapioca/dsl/helpers/active_record_constants_helper.rb +29 -0
  45. data/lib/tapioca/{compilers/dsl → dsl/helpers}/param_helper.rb +6 -3
  46. data/lib/tapioca/dsl/pipeline.rb +169 -0
  47. data/lib/tapioca/gem/events.rb +120 -0
  48. data/lib/tapioca/gem/listeners/base.rb +48 -0
  49. data/lib/tapioca/gem/listeners/dynamic_mixins.rb +32 -0
  50. data/lib/tapioca/gem/listeners/methods.rb +183 -0
  51. data/lib/tapioca/gem/listeners/mixins.rb +101 -0
  52. data/lib/tapioca/gem/listeners/remove_empty_payload_scopes.rb +21 -0
  53. data/lib/tapioca/gem/listeners/sorbet_enums.rb +26 -0
  54. data/lib/tapioca/gem/listeners/sorbet_helpers.rb +29 -0
  55. data/lib/tapioca/gem/listeners/sorbet_props.rb +33 -0
  56. data/lib/tapioca/gem/listeners/sorbet_required_ancestors.rb +23 -0
  57. data/lib/tapioca/gem/listeners/sorbet_signatures.rb +79 -0
  58. data/lib/tapioca/gem/listeners/sorbet_type_variables.rb +51 -0
  59. data/lib/tapioca/gem/listeners/subconstants.rb +37 -0
  60. data/lib/tapioca/gem/listeners/yard_doc.rb +96 -0
  61. data/lib/tapioca/gem/listeners.rb +16 -0
  62. data/lib/tapioca/gem/pipeline.rb +365 -0
  63. data/lib/tapioca/helpers/cli_helper.rb +7 -0
  64. data/lib/tapioca/helpers/config_helper.rb +5 -8
  65. data/lib/tapioca/helpers/shims_helper.rb +87 -0
  66. data/lib/tapioca/helpers/signatures_helper.rb +17 -0
  67. data/lib/tapioca/helpers/sorbet_helper.rb +57 -0
  68. data/lib/tapioca/helpers/test/dsl_compiler.rb +118 -0
  69. data/lib/tapioca/helpers/test/isolation.rb +1 -1
  70. data/lib/tapioca/helpers/test/template.rb +13 -2
  71. data/lib/tapioca/helpers/type_variable_helper.rb +43 -0
  72. data/lib/tapioca/internal.rb +18 -10
  73. data/lib/tapioca/rbi_ext/model.rb +14 -50
  74. data/lib/tapioca/rbi_formatter.rb +37 -0
  75. data/lib/tapioca/runtime/dynamic_mixin_compiler.rb +227 -0
  76. data/lib/tapioca/runtime/generic_type_registry.rb +168 -0
  77. data/lib/tapioca/runtime/loader.rb +123 -0
  78. data/lib/tapioca/runtime/reflection.rb +157 -0
  79. data/lib/tapioca/runtime/trackers/autoload.rb +72 -0
  80. data/lib/tapioca/runtime/trackers/constant_definition.rb +44 -0
  81. data/lib/tapioca/runtime/trackers/mixin.rb +80 -0
  82. data/lib/tapioca/runtime/trackers/required_ancestor.rb +50 -0
  83. data/lib/tapioca/{trackers.rb → runtime/trackers.rb} +4 -3
  84. data/lib/tapioca/sorbet_ext/generic_name_patch.rb +69 -34
  85. data/lib/tapioca/sorbet_ext/name_patch.rb +7 -1
  86. data/lib/tapioca/{compilers → static}/requires_compiler.rb +2 -2
  87. data/lib/tapioca/static/symbol_loader.rb +83 -0
  88. data/lib/tapioca/static/symbol_table_parser.rb +63 -0
  89. data/lib/tapioca/version.rb +1 -1
  90. data/lib/tapioca.rb +2 -7
  91. metadata +83 -62
  92. data/lib/tapioca/compilers/dsl/active_record_relations.rb +0 -720
  93. data/lib/tapioca/compilers/dsl/base.rb +0 -195
  94. data/lib/tapioca/compilers/dsl/helper/active_record_constants.rb +0 -27
  95. data/lib/tapioca/compilers/dsl_compiler.rb +0 -134
  96. data/lib/tapioca/compilers/dynamic_mixin_compiler.rb +0 -223
  97. data/lib/tapioca/compilers/sorbet.rb +0 -59
  98. data/lib/tapioca/compilers/symbol_table/symbol_generator.rb +0 -780
  99. data/lib/tapioca/compilers/symbol_table/symbol_loader.rb +0 -90
  100. data/lib/tapioca/compilers/symbol_table_compiler.rb +0 -17
  101. data/lib/tapioca/compilers/todos_compiler.rb +0 -32
  102. data/lib/tapioca/generators/todo.rb +0 -76
  103. data/lib/tapioca/generators.rb +0 -9
  104. data/lib/tapioca/generic_type_registry.rb +0 -164
  105. data/lib/tapioca/helpers/active_record_column_type_helper.rb +0 -108
  106. data/lib/tapioca/loader.rb +0 -119
  107. data/lib/tapioca/reflection.rb +0 -151
  108. data/lib/tapioca/trackers/autoload.rb +0 -70
  109. data/lib/tapioca/trackers/constant_definition.rb +0 -42
  110. data/lib/tapioca/trackers/mixin.rb +0 -78
@@ -2,6 +2,7 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  require "tapioca/sorbet_ext/name_patch"
5
+ require "tapioca/helpers/sorbet_helper"
5
6
 
6
7
  module T
7
8
  module Generic
@@ -17,36 +18,52 @@ module T
17
18
  constant = super
18
19
  # `register_type` method builds and returns an instantiated clone of the generic type
19
20
  # so, we just return that from this method as well.
20
- Tapioca::GenericTypeRegistry.register_type(constant, types)
21
+ Tapioca::Runtime::GenericTypeRegistry.register_type(constant, types)
21
22
  end
22
23
 
23
- def type_member(variance = :invariant, fixed: nil, lower: T.untyped, upper: BasicObject)
24
+ def type_member(variance = :invariant, fixed: nil, lower: nil, upper: nil, &blk)
24
25
  # `T::Generic#type_member` just instantiates a `T::Type::TypeMember` instance and returns it.
25
26
  # We use that when registering the type member and then later return it from this method.
27
+ hash = if blk
28
+ blk.call
29
+ else
30
+ {
31
+ fixed: fixed,
32
+ lower: lower,
33
+ upper: upper,
34
+ }
35
+ end
36
+
26
37
  Tapioca::TypeVariableModule.new(
27
38
  T.cast(self, Module),
28
39
  Tapioca::TypeVariableModule::Type::Member,
29
40
  variance,
30
- fixed,
31
- lower,
32
- upper
41
+ **hash,
33
42
  ).tap do |type_variable|
34
- Tapioca::GenericTypeRegistry.register_type_variable(self, type_variable)
43
+ Tapioca::Runtime::GenericTypeRegistry.register_type_variable(self, type_variable)
35
44
  end
36
45
  end
37
46
 
38
- def type_template(variance = :invariant, fixed: nil, lower: T.untyped, upper: BasicObject)
47
+ def type_template(variance = :invariant, fixed: nil, lower: nil, upper: nil, &blk)
39
48
  # `T::Generic#type_template` just instantiates a `T::Type::TypeTemplate` instance and returns it.
40
49
  # We use that when registering the type template and then later return it from this method.
50
+ hash = if blk
51
+ blk.call
52
+ else
53
+ {
54
+ fixed: fixed,
55
+ lower: lower,
56
+ upper: upper,
57
+ }
58
+ end
59
+
41
60
  Tapioca::TypeVariableModule.new(
42
61
  T.cast(self, Module),
43
62
  Tapioca::TypeVariableModule::Type::Template,
44
63
  variance,
45
- fixed,
46
- lower,
47
- upper
64
+ **hash,
48
65
  ).tap do |type_variable|
49
- Tapioca::GenericTypeRegistry.register_type_variable(self, type_variable)
66
+ Tapioca::Runtime::GenericTypeRegistry.register_type_variable(self, type_variable)
50
67
  end
51
68
  end
52
69
  end
@@ -57,18 +74,6 @@ module T
57
74
  module Types
58
75
  class Simple
59
76
  module GenericPatch
60
- def valid?(obj)
61
- # Since `Tapioca::TypeVariable` is a `Module`, it will be wrapped by a
62
- # `Simple` type. We want to always make type variable types valid, so we
63
- # need to explicitly check that `raw_type` is a `Tapioca::TypeVariable`
64
- # and return `true`
65
- if defined?(Tapioca::TypeVariableModule) && Tapioca::TypeVariableModule === @raw_type
66
- return true
67
- end
68
-
69
- obj.is_a?(@raw_type)
70
- end
71
-
72
77
  # This method intercepts calls to the `name` method for simple types, so that
73
78
  # it can ask the name to the type if the type is generic, since, by this point,
74
79
  # we've created a clone of that type with the `name` method returning the
@@ -88,9 +93,34 @@ module T
88
93
  prepend GenericPatch
89
94
  end
90
95
  end
96
+
97
+ module Utils
98
+ module CoercePatch
99
+ def coerce(val)
100
+ if val.is_a?(Tapioca::TypeVariableModule)
101
+ val.coerce_to_type_variable
102
+ else
103
+ super
104
+ end
105
+ end
106
+ end
107
+
108
+ class << self
109
+ prepend(CoercePatch)
110
+ end
111
+ end
91
112
  end
92
113
 
93
114
  module Tapioca
115
+ class TypeVariable < ::T::Types::TypeVariable
116
+ def initialize(name, variance)
117
+ @name = name
118
+ super(variance)
119
+ end
120
+
121
+ attr_reader :name
122
+ end
123
+
94
124
  # This is subclassing from `Module` so that instances of this type will be modules.
95
125
  # The reason why we want that is because that means those instances will automatically
96
126
  # get bound to the constant names they are assigned to by Ruby. As a result, we don't
@@ -109,7 +139,7 @@ module Tapioca
109
139
  sig do
110
140
  params(context: Module, type: Type, variance: Symbol, fixed: T.untyped, lower: T.untyped, upper: T.untyped).void
111
141
  end
112
- def initialize(context, type, variance, fixed, lower, upper) # rubocop:disable Metrics/ParameterLists
142
+ def initialize(context, type, variance, fixed: nil, lower: nil, upper: nil)
113
143
  @context = context
114
144
  @type = type
115
145
  @variance = variance
@@ -140,17 +170,22 @@ module Tapioca
140
170
 
141
171
  sig { returns(String) }
142
172
  def serialize
143
- parts = []
144
- parts << ":#{@variance}" unless @variance == :invariant
145
- parts << "fixed: #{@fixed}" if @fixed
146
- parts << "lower: #{@lower}" unless @lower == T.untyped
147
- parts << "upper: #{@upper}" unless @upper == BasicObject
148
-
149
- parameters = parts.join(", ")
173
+ fixed = @fixed.to_s if @fixed
174
+ upper = @upper.to_s if @upper
175
+ lower = @lower.to_s if @lower
176
+
177
+ TypeVariableHelper.serialize_type_variable(
178
+ @type.serialize,
179
+ @variance,
180
+ fixed,
181
+ upper,
182
+ lower
183
+ )
184
+ end
150
185
 
151
- serialized = @type.serialize.dup
152
- serialized << "(#{parameters})" unless parameters.empty?
153
- serialized
186
+ sig { returns(Tapioca::TypeVariable) }
187
+ def coerce_to_type_variable
188
+ TypeVariable.new(name, @variance)
154
189
  end
155
190
 
156
191
  private
@@ -1,12 +1,18 @@
1
1
  # typed: true
2
2
  # frozen_string_literal: true
3
3
 
4
+ # We need sorbet to compile the signature for `qualified_name_of` before applying
5
+ # the patch to avoid an infinite loop.
6
+ T::Utils.signature_for_method(::Tapioca::Runtime::Reflection.method(:qualified_name_of))
7
+
4
8
  module T
5
9
  module Types
6
10
  class Simple
7
11
  module NamePatch
8
12
  def name
9
- @name ||= ::Tapioca::Reflection.name_of(@raw_type).freeze
13
+ # Sorbet memoizes this method into the `@name` instance variable but
14
+ # doing so means that types get memoized before this patch is applied
15
+ ::Tapioca::Runtime::Reflection.qualified_name_of(@raw_type)
10
16
  end
11
17
  end
12
18
 
@@ -4,7 +4,7 @@
4
4
  require "spoom"
5
5
 
6
6
  module Tapioca
7
- module Compilers
7
+ module Static
8
8
  class RequiresCompiler
9
9
  extend T::Sig
10
10
 
@@ -17,7 +17,7 @@ module Tapioca
17
17
  def compile
18
18
  config = Spoom::Sorbet::Config.parse_file(@sorbet_path)
19
19
  files = collect_files(config)
20
- names_in_project = files.map { |file| [File.basename(file, ".rb"), true] }.to_h
20
+ names_in_project = files.to_h { |file| [File.basename(file, ".rb"), true] }
21
21
  files.flat_map do |file|
22
22
  collect_requires(file).reject { |req| names_in_project[req] }
23
23
  end.sort.uniq.map do |name|
@@ -0,0 +1,83 @@
1
+ # typed: strict
2
+ # frozen_string_literal: true
3
+
4
+ require "json"
5
+ require "tempfile"
6
+
7
+ module Tapioca
8
+ module Static
9
+ module SymbolLoader
10
+ class << self
11
+ extend T::Sig
12
+ include SorbetHelper
13
+ include Runtime::Reflection
14
+
15
+ sig { returns(T::Set[String]) }
16
+ def payload_symbols
17
+ unless @payload_symbols
18
+ output = symbol_table_json_from("-e ''", table_type: "symbol-table-full-json")
19
+ @payload_symbols = T.let(SymbolTableParser.parse_json(output), T.nilable(T::Set[String]))
20
+ end
21
+
22
+ T.must(@payload_symbols)
23
+ end
24
+
25
+ sig { returns(T::Set[String]) }
26
+ def engine_symbols
27
+ unless @engine_symbols
28
+ @engine_symbols = T.let(load_engine_symbols, T.nilable(T::Set[String]))
29
+ end
30
+ T.must(@engine_symbols)
31
+ end
32
+
33
+ sig { params(gem: Gemfile::GemSpec).returns(T::Set[String]) }
34
+ def gem_symbols(gem)
35
+ symbols_from_paths(gem.files)
36
+ end
37
+
38
+ private
39
+
40
+ sig { params(input: String, table_type: String).returns(String) }
41
+ def symbol_table_json_from(input, table_type: "symbol-table-json")
42
+ sorbet("--no-config", "--quiet", "--print=#{table_type}", input).out
43
+ end
44
+
45
+ sig { returns(T::Set[String]) }
46
+ def load_engine_symbols
47
+ return Set.new unless Object.const_defined?("Rails::Engine")
48
+
49
+ engine = descendants_of(Object.const_get("Rails::Engine"))
50
+ .reject(&:abstract_railtie?)
51
+ .find do |klass|
52
+ name = name_of(klass)
53
+ !name.nil? && payload_symbols.include?(name)
54
+ end
55
+
56
+ return Set.new unless engine
57
+
58
+ paths = engine.config.eager_load_paths.flat_map do |load_path|
59
+ Pathname.glob("#{load_path}/**/*.rb")
60
+ end
61
+
62
+ symbols_from_paths(paths)
63
+ rescue
64
+ Set.new
65
+ end
66
+
67
+ sig { params(paths: T::Array[Pathname]).returns(T::Set[String]) }
68
+ def symbols_from_paths(paths)
69
+ output = T.cast(Tempfile.create("sorbet") do |file|
70
+ file.write(Array(paths).join("\n"))
71
+ file.flush
72
+
73
+ symbol_table_json_from("@#{file.path.shellescape}")
74
+ end, T.nilable(String))
75
+
76
+ return Set.new if output.nil? || output.empty?
77
+
78
+ SymbolTableParser.parse_json(output)
79
+ end
80
+ end
81
+ end
82
+ end
83
+ end
@@ -0,0 +1,63 @@
1
+ # typed: strict
2
+ # frozen_string_literal: true
3
+
4
+ require "json"
5
+ require "tempfile"
6
+
7
+ module Tapioca
8
+ module Static
9
+ class SymbolTableParser
10
+ extend T::Sig
11
+
12
+ sig { params(json_string: String).returns(T::Set[String]) }
13
+ def self.parse_json(json_string)
14
+ obj = JSON.parse(json_string)
15
+
16
+ parser = SymbolTableParser.new
17
+ parser.parse_object(obj)
18
+ parser.symbols
19
+ end
20
+
21
+ sig { returns(T::Set[String]) }
22
+ attr_reader :symbols
23
+
24
+ sig { void }
25
+ def initialize
26
+ @symbols = T.let(Set.new, T::Set[String])
27
+ @parents = T.let([], T::Array[String])
28
+ end
29
+
30
+ sig { params(object: T::Hash[String, T.untyped]).void }
31
+ def parse_object(object)
32
+ children = object.fetch("children", [])
33
+
34
+ children.each do |child|
35
+ kind = child.fetch("kind")
36
+ name = child.fetch("name")
37
+ name = name.fetch("name") if name.is_a?(Hash)
38
+
39
+ next if kind.nil? || name.nil?
40
+
41
+ # TODO: CLASS is removed since v0.4.4730 of Sorbet
42
+ # but keeping here for backward compatibility. Remove
43
+ # once the minimum version is moved past that.
44
+ next unless ["CLASS", "CLASS_OR_MODULE", "STATIC_FIELD"].include?(kind)
45
+ next if name =~ /[<>()$]/
46
+ next if name =~ /^[0-9]+$/
47
+ next if name == "T::Helpers"
48
+
49
+ @symbols.add(fully_qualified_name(name))
50
+
51
+ @parents << name
52
+ parse_object(child)
53
+ @parents.pop
54
+ end
55
+ end
56
+
57
+ sig { params(name: String).returns(String) }
58
+ def fully_qualified_name(name)
59
+ [*@parents, name].join("::")
60
+ end
61
+ end
62
+ end
63
+ end
@@ -2,5 +2,5 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module Tapioca
5
- VERSION = "0.6.4"
5
+ VERSION = "0.7.2"
6
6
  end
data/lib/tapioca.rb CHANGED
@@ -14,7 +14,7 @@ module Tapioca
14
14
  def self.silence_warnings(&blk)
15
15
  original_verbosity = $VERBOSE
16
16
  $VERBOSE = nil
17
- Gem::DefaultUserInteraction.use_ui(Gem::SilentUI.new) do
17
+ ::Gem::DefaultUserInteraction.use_ui(::Gem::SilentUI.new) do
18
18
  blk.call
19
19
  end
20
20
  ensure
@@ -28,7 +28,7 @@ module Tapioca
28
28
  TAPIOCA_DIR = T.let("#{SORBET_DIR}/tapioca", String)
29
29
  TAPIOCA_CONFIG_FILE = T.let("#{TAPIOCA_DIR}/config.yml", String)
30
30
 
31
- DEFAULT_COMMAND = T.let("bin/tapioca", String)
31
+ BINARY_FILE = T.let("bin/tapioca", String)
32
32
  DEFAULT_POSTREQUIRE_FILE = T.let("#{TAPIOCA_DIR}/require.rb", String)
33
33
  DEFAULT_RBI_DIR = T.let("#{SORBET_DIR}/rbi", String)
34
34
  DEFAULT_DSL_DIR = T.let("#{DEFAULT_RBI_DIR}/dsl", String)
@@ -43,9 +43,4 @@ module Tapioca
43
43
  }.freeze, T::Hash[String, String])
44
44
  end
45
45
 
46
- require "tapioca/reflection"
47
- require "tapioca/trackers"
48
- require "tapioca/compilers/dsl/base"
49
- require "tapioca/compilers/dynamic_mixin_compiler"
50
- require "tapioca/helpers/active_record_column_type_helper"
51
46
  require "tapioca/version"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tapioca
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.4
4
+ version: 0.7.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ufuk Kayserilioglu
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: exe
13
13
  cert_chain: []
14
- date: 2022-02-11 00:00:00.000000000 Z
14
+ date: 2022-04-29 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: bundler
@@ -50,7 +50,7 @@ dependencies:
50
50
  version: 0.0.0
51
51
  - - ">="
52
52
  - !ruby/object:Gem::Version
53
- version: 0.0.9
53
+ version: 0.0.14
54
54
  type: :runtime
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
@@ -60,9 +60,9 @@ dependencies:
60
60
  version: 0.0.0
61
61
  - - ">="
62
62
  - !ruby/object:Gem::Version
63
- version: 0.0.9
63
+ version: 0.0.14
64
64
  - !ruby/object:Gem::Dependency
65
- name: sorbet-static
65
+ name: sorbet-runtime
66
66
  requirement: !ruby/object:Gem::Requirement
67
67
  requirements:
68
68
  - - ">="
@@ -76,7 +76,7 @@ dependencies:
76
76
  - !ruby/object:Gem::Version
77
77
  version: 0.5.9204
78
78
  - !ruby/object:Gem::Dependency
79
- name: sorbet-runtime
79
+ name: sorbet-static
80
80
  requirement: !ruby/object:Gem::Requirement
81
81
  requirements:
82
82
  - - ">="
@@ -98,7 +98,7 @@ dependencies:
98
98
  version: 1.1.0
99
99
  - - ">="
100
100
  - !ruby/object:Gem::Version
101
- version: 1.1.4
101
+ version: 1.1.11
102
102
  type: :runtime
103
103
  prerelease: false
104
104
  version_requirements: !ruby/object:Gem::Requirement
@@ -108,7 +108,7 @@ dependencies:
108
108
  version: 1.1.0
109
109
  - - ">="
110
110
  - !ruby/object:Gem::Version
111
- version: 1.1.4
111
+ version: 1.1.11
112
112
  - !ruby/object:Gem::Dependency
113
113
  name: thor
114
114
  requirement: !ruby/object:Gem::Requirement
@@ -151,72 +151,93 @@ files:
151
151
  - exe/tapioca
152
152
  - lib/tapioca.rb
153
153
  - lib/tapioca/cli.rb
154
- - lib/tapioca/compilers/dsl/aasm.rb
155
- - lib/tapioca/compilers/dsl/action_controller_helpers.rb
156
- - lib/tapioca/compilers/dsl/action_mailer.rb
157
- - lib/tapioca/compilers/dsl/active_job.rb
158
- - lib/tapioca/compilers/dsl/active_model_attributes.rb
159
- - lib/tapioca/compilers/dsl/active_model_secure_password.rb
160
- - lib/tapioca/compilers/dsl/active_record_associations.rb
161
- - lib/tapioca/compilers/dsl/active_record_columns.rb
162
- - lib/tapioca/compilers/dsl/active_record_enum.rb
163
- - lib/tapioca/compilers/dsl/active_record_fixtures.rb
164
- - lib/tapioca/compilers/dsl/active_record_relations.rb
165
- - lib/tapioca/compilers/dsl/active_record_scope.rb
166
- - lib/tapioca/compilers/dsl/active_record_typed_store.rb
167
- - lib/tapioca/compilers/dsl/active_resource.rb
168
- - lib/tapioca/compilers/dsl/active_storage.rb
169
- - lib/tapioca/compilers/dsl/active_support_concern.rb
170
- - lib/tapioca/compilers/dsl/active_support_current_attributes.rb
171
- - lib/tapioca/compilers/dsl/base.rb
172
- - lib/tapioca/compilers/dsl/config.rb
173
- - lib/tapioca/compilers/dsl/extensions/frozen_record.rb
174
- - lib/tapioca/compilers/dsl/frozen_record.rb
175
- - lib/tapioca/compilers/dsl/helper/active_record_constants.rb
176
- - lib/tapioca/compilers/dsl/identity_cache.rb
177
- - lib/tapioca/compilers/dsl/mixed_in_class_attributes.rb
178
- - lib/tapioca/compilers/dsl/param_helper.rb
179
- - lib/tapioca/compilers/dsl/protobuf.rb
180
- - lib/tapioca/compilers/dsl/rails_generators.rb
181
- - lib/tapioca/compilers/dsl/sidekiq_worker.rb
182
- - lib/tapioca/compilers/dsl/smart_properties.rb
183
- - lib/tapioca/compilers/dsl/state_machines.rb
184
- - lib/tapioca/compilers/dsl/url_helpers.rb
185
- - lib/tapioca/compilers/dsl_compiler.rb
186
- - lib/tapioca/compilers/dynamic_mixin_compiler.rb
187
- - lib/tapioca/compilers/requires_compiler.rb
188
- - lib/tapioca/compilers/sorbet.rb
189
- - lib/tapioca/compilers/symbol_table/symbol_generator.rb
190
- - lib/tapioca/compilers/symbol_table/symbol_loader.rb
191
- - lib/tapioca/compilers/symbol_table_compiler.rb
192
- - lib/tapioca/compilers/todos_compiler.rb
154
+ - lib/tapioca/commands.rb
155
+ - lib/tapioca/commands/command.rb
156
+ - lib/tapioca/commands/dsl.rb
157
+ - lib/tapioca/commands/gem.rb
158
+ - lib/tapioca/commands/init.rb
159
+ - lib/tapioca/commands/require.rb
160
+ - lib/tapioca/commands/todo.rb
161
+ - lib/tapioca/dsl/compiler.rb
162
+ - lib/tapioca/dsl/compilers.rb
163
+ - lib/tapioca/dsl/compilers/aasm.rb
164
+ - lib/tapioca/dsl/compilers/action_controller_helpers.rb
165
+ - lib/tapioca/dsl/compilers/action_mailer.rb
166
+ - lib/tapioca/dsl/compilers/active_job.rb
167
+ - lib/tapioca/dsl/compilers/active_model_attributes.rb
168
+ - lib/tapioca/dsl/compilers/active_model_secure_password.rb
169
+ - lib/tapioca/dsl/compilers/active_record_associations.rb
170
+ - lib/tapioca/dsl/compilers/active_record_columns.rb
171
+ - lib/tapioca/dsl/compilers/active_record_enum.rb
172
+ - lib/tapioca/dsl/compilers/active_record_fixtures.rb
173
+ - lib/tapioca/dsl/compilers/active_record_relations.rb
174
+ - lib/tapioca/dsl/compilers/active_record_scope.rb
175
+ - lib/tapioca/dsl/compilers/active_record_typed_store.rb
176
+ - lib/tapioca/dsl/compilers/active_resource.rb
177
+ - lib/tapioca/dsl/compilers/active_storage.rb
178
+ - lib/tapioca/dsl/compilers/active_support_concern.rb
179
+ - lib/tapioca/dsl/compilers/active_support_current_attributes.rb
180
+ - lib/tapioca/dsl/compilers/config.rb
181
+ - lib/tapioca/dsl/compilers/frozen_record.rb
182
+ - lib/tapioca/dsl/compilers/identity_cache.rb
183
+ - lib/tapioca/dsl/compilers/mixed_in_class_attributes.rb
184
+ - lib/tapioca/dsl/compilers/protobuf.rb
185
+ - lib/tapioca/dsl/compilers/rails_generators.rb
186
+ - lib/tapioca/dsl/compilers/sidekiq_worker.rb
187
+ - lib/tapioca/dsl/compilers/smart_properties.rb
188
+ - lib/tapioca/dsl/compilers/state_machines.rb
189
+ - lib/tapioca/dsl/compilers/url_helpers.rb
190
+ - lib/tapioca/dsl/extensions/frozen_record.rb
191
+ - lib/tapioca/dsl/helpers/active_record_column_type_helper.rb
192
+ - lib/tapioca/dsl/helpers/active_record_constants_helper.rb
193
+ - lib/tapioca/dsl/helpers/param_helper.rb
194
+ - lib/tapioca/dsl/pipeline.rb
193
195
  - lib/tapioca/executor.rb
196
+ - lib/tapioca/gem/events.rb
197
+ - lib/tapioca/gem/listeners.rb
198
+ - lib/tapioca/gem/listeners/base.rb
199
+ - lib/tapioca/gem/listeners/dynamic_mixins.rb
200
+ - lib/tapioca/gem/listeners/methods.rb
201
+ - lib/tapioca/gem/listeners/mixins.rb
202
+ - lib/tapioca/gem/listeners/remove_empty_payload_scopes.rb
203
+ - lib/tapioca/gem/listeners/sorbet_enums.rb
204
+ - lib/tapioca/gem/listeners/sorbet_helpers.rb
205
+ - lib/tapioca/gem/listeners/sorbet_props.rb
206
+ - lib/tapioca/gem/listeners/sorbet_required_ancestors.rb
207
+ - lib/tapioca/gem/listeners/sorbet_signatures.rb
208
+ - lib/tapioca/gem/listeners/sorbet_type_variables.rb
209
+ - lib/tapioca/gem/listeners/subconstants.rb
210
+ - lib/tapioca/gem/listeners/yard_doc.rb
211
+ - lib/tapioca/gem/pipeline.rb
194
212
  - lib/tapioca/gemfile.rb
195
- - lib/tapioca/generators.rb
196
- - lib/tapioca/generators/base.rb
197
- - lib/tapioca/generators/dsl.rb
198
- - lib/tapioca/generators/gem.rb
199
- - lib/tapioca/generators/init.rb
200
- - lib/tapioca/generators/require.rb
201
- - lib/tapioca/generators/todo.rb
202
- - lib/tapioca/generic_type_registry.rb
203
- - lib/tapioca/helpers/active_record_column_type_helper.rb
204
213
  - lib/tapioca/helpers/cli_helper.rb
205
214
  - lib/tapioca/helpers/config_helper.rb
215
+ - lib/tapioca/helpers/shims_helper.rb
216
+ - lib/tapioca/helpers/signatures_helper.rb
217
+ - lib/tapioca/helpers/sorbet_helper.rb
206
218
  - lib/tapioca/helpers/test/content.rb
219
+ - lib/tapioca/helpers/test/dsl_compiler.rb
207
220
  - lib/tapioca/helpers/test/isolation.rb
208
221
  - lib/tapioca/helpers/test/template.rb
222
+ - lib/tapioca/helpers/type_variable_helper.rb
209
223
  - lib/tapioca/internal.rb
210
- - lib/tapioca/loader.rb
211
224
  - lib/tapioca/rbi_ext/model.rb
212
- - lib/tapioca/reflection.rb
225
+ - lib/tapioca/rbi_formatter.rb
226
+ - lib/tapioca/runtime/dynamic_mixin_compiler.rb
227
+ - lib/tapioca/runtime/generic_type_registry.rb
228
+ - lib/tapioca/runtime/loader.rb
229
+ - lib/tapioca/runtime/reflection.rb
230
+ - lib/tapioca/runtime/trackers.rb
231
+ - lib/tapioca/runtime/trackers/autoload.rb
232
+ - lib/tapioca/runtime/trackers/constant_definition.rb
233
+ - lib/tapioca/runtime/trackers/mixin.rb
234
+ - lib/tapioca/runtime/trackers/required_ancestor.rb
213
235
  - lib/tapioca/sorbet_ext/fixed_hash_patch.rb
214
236
  - lib/tapioca/sorbet_ext/generic_name_patch.rb
215
237
  - lib/tapioca/sorbet_ext/name_patch.rb
216
- - lib/tapioca/trackers.rb
217
- - lib/tapioca/trackers/autoload.rb
218
- - lib/tapioca/trackers/constant_definition.rb
219
- - lib/tapioca/trackers/mixin.rb
238
+ - lib/tapioca/static/requires_compiler.rb
239
+ - lib/tapioca/static/symbol_loader.rb
240
+ - lib/tapioca/static/symbol_table_parser.rb
220
241
  - lib/tapioca/version.rb
221
242
  homepage: https://github.com/Shopify/tapioca
222
243
  licenses: