sorbet-runtime 0.4.4494 → 0.4.4496

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fc2f18425d1a978318e882adfde65b3131f6f5b4
4
- data.tar.gz: b27069b61f58c3fe2ce0676d89157d15963224c8
3
+ metadata.gz: 4659ace7366df65951a7dc57622b64c6af229a70
4
+ data.tar.gz: 5a357b77dbe4d7c79499d0fbb12250e0f3cfa47c
5
5
  SHA512:
6
- metadata.gz: de7d056146ff86b29d97bf085e45e8026a65d69557792b90cd2374ba0ce20efadf3a72ec37e4808dd94863c600172de4b4bf8aa28264d59b0ce8b1ae40b28847
7
- data.tar.gz: 7c3313b0aae49098b99ca494aef69615132e93edf3637eb565d7858af369759373678927a5cf9d9a93e3c66287a9b64c485b1be740f853ee00b7394797562ee1
6
+ metadata.gz: a46f6ffc23d36431df3123d90d0223c6c3d078c90855e71597595f728d392d99b29d7b7fa0d706dc5646feaf338c92a500a5a263b7e1c5b7df1114151a97328b
7
+ data.tar.gz: cbfd072976127bc6b258903f921906d54df75b235a8fd2180a4a86e06c16bdcec8c26d943569ab137d72a0b6d8099874d03b57d97ac384b5ce5971faac0449e0
@@ -96,9 +96,11 @@ module T::Private::ClassUtils
96
96
 
97
97
  overwritten = original_owner == mod
98
98
  T::Configuration.without_ruby_warnings do
99
+ T::Private::DeclState.current.skip_on_method_added = true
99
100
  mod.send(:define_method, name, &blk) # rubocop:disable PrisonGuard/UsePublicSend
100
- mod.send(original_visibility, name) # rubocop:disable PrisonGuard/UsePublicSend
101
+ T::Private::DeclState.current.skip_on_method_added = false
101
102
  end
103
+ mod.send(original_visibility, name) # rubocop:disable PrisonGuard/UsePublicSend
102
104
  new_method = mod.instance_method(name)
103
105
 
104
106
  ReplacedMethod.new(mod, original_method, new_method, overwritten, original_visibility)
@@ -11,6 +11,7 @@ class T::Private::DeclState
11
11
  end
12
12
 
13
13
  attr_accessor :active_declaration
14
+ attr_accessor :skip_on_method_added
14
15
 
15
16
  def reset!
16
17
  self.active_declaration = nil
@@ -171,13 +171,24 @@ module T::Private::Methods
171
171
 
172
172
  # Only public because it needs to get called below inside the replace_method blocks below.
173
173
  def self._on_method_added(hook_mod, method_name, is_singleton_method: false)
174
+ if T::Private::DeclState.current.skip_on_method_added
175
+ return
176
+ end
177
+
174
178
  current_declaration = T::Private::DeclState.current.active_declaration
175
179
  mod = is_singleton_method ? hook_mod.singleton_class : hook_mod
176
- original_method = mod.instance_method(method_name)
177
180
 
178
- return if current_declaration.nil?
181
+ if T::Private::Final.final_module?(mod) && (current_declaration.nil? || !current_declaration.final)
182
+ raise "`#{mod.name}` was declared as final but its method `#{method_name}` was not declared as final"
183
+ end
184
+ _check_final_ancestors(mod, mod.ancestors, [method_name])
185
+
186
+ if current_declaration.nil?
187
+ return
188
+ end
179
189
  T::Private::DeclState.current.reset!
180
190
 
191
+ original_method = mod.instance_method(method_name)
181
192
  sig_block = lambda do
182
193
  T::Private::Methods.run_sig(hook_mod, method_name, original_method, current_declaration)
183
194
  end
@@ -187,7 +198,6 @@ module T::Private::Methods
187
198
  # This wrapper is very slow, so it will subsequently re-wrap with a much faster wrapper
188
199
  # (or unwrap back to the original method).
189
200
  new_method = nil
190
- # this prevents us from running the final checks twice for every method def.
191
201
  T::Private::ClassUtils.replace_method(mod, method_name) do |*args, &blk|
192
202
  if !T::Private::Methods.has_sig_block_for_method(new_method)
193
203
  # This should only happen if the user used alias_method to grab a handle
@@ -420,8 +430,6 @@ module T::Private::Methods
420
430
 
421
431
  private_class_method def self.install_singleton_method_added_hook(singleton_klass)
422
432
  attached = nil
423
- # this prevents the final checks from triggering about singleton_method_added not being a final method even if the
424
- # module is final.
425
433
  original_singleton_method = T::Private::ClassUtils.replace_method(singleton_klass, :singleton_method_added) do |name|
426
434
  attached = self
427
435
  T::Private::Methods._on_method_added(self, name, is_singleton_method: true)
@@ -170,6 +170,7 @@ module T::Private::Methods::CallValidation
170
170
  has_simple_procedure_types = all_args_are_simple && method_sig.return_type.is_a?(T::Private::Types::Void)
171
171
 
172
172
  T::Configuration.without_ruby_warnings do
173
+ T::Private::DeclState.current.skip_on_method_added = true
173
174
  if has_fixed_arity && has_simple_method_types && method_sig.arg_types.length < 5 && is_allowed_to_have_fast_path
174
175
  create_validator_method_fast(mod, original_method, method_sig)
175
176
  elsif has_fixed_arity && has_simple_procedure_types && method_sig.arg_types.length < 5 && is_allowed_to_have_fast_path
@@ -177,6 +178,7 @@ module T::Private::Methods::CallValidation
177
178
  else
178
179
  create_validator_slow(mod, original_method, method_sig)
179
180
  end
181
+ T::Private::DeclState.current.skip_on_method_added = false
180
182
  end
181
183
  mod.send(original_visibility, method_sig.method_name)
182
184
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sorbet-runtime
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.4494
4
+ version: 0.4.4496
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stripe