sorbet-runtime 0.4.4432 → 0.4.4433

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: 6744804eae6b958101222c2aae22da2d28359ac1
4
- data.tar.gz: a894a131db846cfadd6c9f8af031aea16797a26f
3
+ metadata.gz: 806ef6364f091901907ddc865da6bd63decebb6f
4
+ data.tar.gz: e0d3d1f61afacc778ad00ee195b5c46375690f62
5
5
  SHA512:
6
- metadata.gz: 21e1fdff93dd91f81c96214eec01b67764cf7789b7543e83095e0534376cb22dd049ad8e87f6362b0482886d063c50a06193779c7f78be0e7a7e7161215fbf05
7
- data.tar.gz: 6447af620de974c90e6410644f8ba2e1adbdaef113e2f0bebc42c90ea8ede2f8528f0de33219b5a80c1cdd3cf4d6142a2498b76d352829a1085d3d05f019eac1
6
+ metadata.gz: 8329ace77948ad758ce392d51b9d0103039d4a2a5d73b302e904542410e27f796c6cf16f596e1373d8c6c1048a44333a13a5157fe36d59f4a763b06460db7f6a
7
+ data.tar.gz: 2cc760a30cdd7b2218c2ce61f6e8a6e174ea60274881e1e22db16329c2a6537a8cfb41ca469283c0a3a6fffcd3c2082252e068bbe7d24cc664ea606d3171f972
@@ -333,6 +333,26 @@ module T::Configuration
333
333
  @scalar_types || @default_scalar_types
334
334
  end
335
335
 
336
+ # Temporarily disable ruby warnings while executing the given block. This is
337
+ # useful when doing something that would normally cause a warning to be
338
+ # emitted in Ruby verbose mode ($VERBOSE = true).
339
+ #
340
+ # @yield
341
+ #
342
+ def self.without_ruby_warnings
343
+ if $VERBOSE
344
+ begin
345
+ original_verbose = $VERBOSE
346
+ $VERBOSE = false
347
+ yield
348
+ ensure
349
+ $VERBOSE = original_verbose
350
+ end
351
+ else
352
+ yield
353
+ end
354
+ end
355
+
336
356
 
337
357
  private_class_method def self.validate_lambda_given!(value)
338
358
  if !value.nil? && !value.respond_to?(:call)
@@ -28,6 +28,9 @@ module T::Private::Abstract::Declare
28
28
  raise "You must call `abstract!` *before* defining an initialize method"
29
29
  end
30
30
 
31
+ # Don't need to silence warnings via without_ruby_warnings when calling
32
+ # define_method because of the guard above
33
+
31
34
  mod.send(:define_method, :initialize) do |*args, &blk|
32
35
  if self.class == mod
33
36
  raise "#{mod} is declared as abstract; it cannot be instantiated"
@@ -32,7 +32,9 @@ module T::Private::ClassUtils
32
32
 
33
33
  if @overwritten
34
34
  # The original method was overwritten. Overwrite again to restore it.
35
- @mod.send(:define_method, @old_method.name, @old_method) # rubocop:disable PrisonGuard/UsePublicSend
35
+ T::Configuration.without_ruby_warnings do
36
+ @mod.send(:define_method, @old_method.name, @old_method) # rubocop:disable PrisonGuard/UsePublicSend
37
+ end
36
38
  else
37
39
  # The original method was in an ancestor. Restore it by removing the overriding method.
38
40
  @mod.send(:remove_method, @old_method.name) # rubocop:disable PrisonGuard/UsePublicSend
@@ -93,8 +95,10 @@ module T::Private::ClassUtils
93
95
  end
94
96
 
95
97
  overwritten = original_owner == mod
96
- mod.send(:define_method, name, &blk) # rubocop:disable PrisonGuard/UsePublicSend
97
- mod.send(original_visibility, name) # rubocop:disable PrisonGuard/UsePublicSend
98
+ T::Configuration.without_ruby_warnings do
99
+ mod.send(:define_method, name, &blk) # rubocop:disable PrisonGuard/UsePublicSend
100
+ mod.send(original_visibility, name) # rubocop:disable PrisonGuard/UsePublicSend
101
+ end
98
102
  new_method = mod.instance_method(name)
99
103
 
100
104
  ReplacedMethod.new(mod, original_method, new_method, overwritten, original_visibility)
@@ -35,9 +35,11 @@ module T::Private::Methods::CallValidation
35
35
  elsif method_sig.check_level == :always || (method_sig.check_level == :tests && T::Private::RuntimeLevels.check_tests?)
36
36
  create_validator_method(mod, original_method, method_sig, original_visibility)
37
37
  else
38
- # get all the shims out of the way and put back the original method
39
- mod.send(:define_method, method_sig.method_name, original_method)
40
- mod.send(original_visibility, method_sig.method_name)
38
+ T::Configuration.without_ruby_warnings do
39
+ # get all the shims out of the way and put back the original method
40
+ mod.send(:define_method, method_sig.method_name, original_method)
41
+ mod.send(original_visibility, method_sig.method_name)
42
+ end
41
43
  end
42
44
  # Return the newly created method (or the original one if we didn't replace it)
43
45
  mod.instance_method(method_sig.method_name)
@@ -167,12 +169,14 @@ module T::Private::Methods::CallValidation
167
169
  has_simple_method_types = all_args_are_simple && method_sig.return_type.is_a?(T::Types::Simple)
168
170
  has_simple_procedure_types = all_args_are_simple && method_sig.return_type.is_a?(T::Private::Types::Void)
169
171
 
170
- if has_fixed_arity && has_simple_method_types && method_sig.arg_types.length < 5 && is_allowed_to_have_fast_path
171
- create_validator_method_fast(mod, original_method, method_sig)
172
- elsif has_fixed_arity && has_simple_procedure_types && method_sig.arg_types.length < 5 && is_allowed_to_have_fast_path
173
- create_validator_procedure_fast(mod, original_method, method_sig)
174
- else
175
- create_validator_slow(mod, original_method, method_sig)
172
+ T::Configuration.without_ruby_warnings do
173
+ if has_fixed_arity && has_simple_method_types && method_sig.arg_types.length < 5 && is_allowed_to_have_fast_path
174
+ create_validator_method_fast(mod, original_method, method_sig)
175
+ elsif has_fixed_arity && has_simple_procedure_types && method_sig.arg_types.length < 5 && is_allowed_to_have_fast_path
176
+ create_validator_procedure_fast(mod, original_method, method_sig)
177
+ else
178
+ create_validator_slow(mod, original_method, method_sig)
179
+ end
176
180
  end
177
181
  mod.send(original_visibility, method_sig.method_name)
178
182
  end
@@ -485,18 +485,20 @@ class T::Props::Decorator
485
485
 
486
486
  sig {params(name: Symbol, rules: Rules).void}
487
487
  private def define_getter_and_setter(name, rules)
488
- if rules[:immutable]
489
- @class.send(:define_method, "#{name}=") do |_x|
490
- raise T::Props::ImmutableProp.new("#{self.class}##{name} cannot be modified after creation.")
491
- end
492
- else
493
- @class.send(:define_method, "#{name}=") do |x|
494
- self.class.decorator.prop_set(self, name, x, rules)
488
+ T::Configuration.without_ruby_warnings do
489
+ if rules[:immutable]
490
+ @class.send(:define_method, "#{name}=") do |_x|
491
+ raise T::Props::ImmutableProp.new("#{self.class}##{name} cannot be modified after creation.")
492
+ end
493
+ else
494
+ @class.send(:define_method, "#{name}=") do |x|
495
+ self.class.decorator.prop_set(self, name, x, rules)
496
+ end
495
497
  end
496
- end
497
498
 
498
- @class.send(:define_method, name) do
499
- self.class.decorator.prop_get(self, name, rules)
499
+ @class.send(:define_method, name) do
500
+ self.class.decorator.prop_get(self, name, rules)
501
+ end
500
502
  end
501
503
  end
502
504
 
data/lib/types/sig.rb CHANGED
@@ -9,10 +9,15 @@ module T::Sig
9
9
  # as T::Sig#sig. Only use it in cases where you can't use T::Sig#sig.
10
10
  def self.sig(&blk); end # rubocop:disable PrisonGuard/BanBuiltinMethodOverride
11
11
 
12
+ original_verbose = $VERBOSE
13
+ $VERBOSE = false
14
+
12
15
  # At runtime, does nothing, but statically it is treated exactly the same
13
16
  # as T::Sig#sig. Only use it in cases where you can't use T::Sig#sig.
14
17
  T::Sig::WithoutRuntime.sig {params(blk: T.proc.bind(T::Private::Methods::DeclBuilder).void).void}
15
18
  def self.sig(&blk); end # rubocop:disable PrisonGuard/BanBuiltinMethodOverride, Lint/DuplicateMethods
19
+
20
+ $VERBOSE = original_verbose
16
21
  end
17
22
 
18
23
  # Declares a method with type signatures and/or
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.4432
4
+ version: 0.4.4433
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stripe