sorbet-runtime 0.5.5390 → 0.5.5391

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
  SHA256:
3
- metadata.gz: 5f61e42f854cb513f79864caba36bcf2e8e3dbf8cfffda8d17233e410ef67c20
4
- data.tar.gz: fc06307b8c5f290c14ea8dd10a45448d9006397ca968c541387ee6afebfbef8f
3
+ metadata.gz: e5bde0c41c5f150c9ffffdbd9932cf1e8eb1968c349ef8b5698462c30e2c8130
4
+ data.tar.gz: e0b3af80d1fa7e9fe41ffd127d840c6bbab035e2b520ca9efa8095252e73762f
5
5
  SHA512:
6
- metadata.gz: 15e799375879976e7ad4b9fc8a669dba68d33b2bbedb64b39e6233b90c86d416254d45031f43048edd81631a99ef221c6029082af8d2871652a088be7d43dbb2
7
- data.tar.gz: 8a8d7c807f27ac90766831e2a3b414167b99eb5e59a9b6fd4ddbd1cfb5a4caa14f931dc9e70d15c6e3e99cf9184d6aad5270dd94c8acb4b6541bff87ecdc1a96
6
+ metadata.gz: dfb809867db3ba5bb29f457b7bcba08ef9ab6130ed55855947df6dc7cf35741be95b1ebba221b031e4a70c3f8ad2209daf14bf915c6112a1378c111d2a4ee6f9
7
+ data.tar.gz: 480080a01f4be2b63b1c711fb1db44f56db5572353ca8853b5f50c0a2c235b89a506209ea2b81c6f48dd2f4003e55e13bd54685faac831426dd90d5f034ee154
@@ -31,29 +31,64 @@ module T::Props
31
31
  T::Utils::Nilable.get_underlying_type_object(rules.fetch(:type_object))
32
32
  end
33
33
  accessor_key = rules.fetch(:accessor_key)
34
- raise_error = ->(val) {raise_pretty_error(klass, prop, non_nil_type, val)}
35
34
 
36
35
  # It seems like a bug that this affects the behavior of setters, but
37
36
  # some existing code relies on this behavior
38
37
  has_explicit_nil_default = rules.key?(:default) && rules.fetch(:default).nil?
39
38
 
39
+ # Use separate methods in order to ensure that we only close over necessary
40
+ # variables
40
41
  if !T::Props::Utils.need_nil_write_check?(rules) || has_explicit_nil_default
41
- proc do |val|
42
- if val.nil?
43
- instance_variable_set(accessor_key, nil)
44
- elsif non_nil_type.valid?(val)
45
- instance_variable_set(accessor_key, val)
46
- else
47
- raise_error.call(val)
48
- end
49
- end
42
+ nilable_proc(prop, accessor_key, non_nil_type)
50
43
  else
51
- proc do |val|
52
- if non_nil_type.valid?(val)
53
- instance_variable_set(accessor_key, val)
54
- else
55
- raise_error.call(val)
56
- end
44
+ non_nil_proc(prop, accessor_key, non_nil_type)
45
+ end
46
+ end
47
+
48
+ sig do
49
+ params(
50
+ prop: Symbol,
51
+ accessor_key: Symbol,
52
+ non_nil_type: T.any(T::Types::Base, T.all(T::Props::CustomType, Module)),
53
+ )
54
+ .returns(SetterProc)
55
+ end
56
+ private_class_method def self.non_nil_proc(prop, accessor_key, non_nil_type)
57
+ proc do |val|
58
+ if non_nil_type.valid?(val)
59
+ instance_variable_set(accessor_key, val)
60
+ else
61
+ T::Props::Private::SetterFactory.raise_pretty_error(
62
+ T.unsafe(self.class),
63
+ prop,
64
+ non_nil_type,
65
+ val,
66
+ )
67
+ end
68
+ end
69
+ end
70
+
71
+ sig do
72
+ params(
73
+ prop: Symbol,
74
+ accessor_key: Symbol,
75
+ non_nil_type: T.any(T::Types::Base, T.all(T::Props::CustomType, Module)),
76
+ )
77
+ .returns(SetterProc)
78
+ end
79
+ private_class_method def self.nilable_proc(prop, accessor_key, non_nil_type)
80
+ proc do |val|
81
+ if val.nil?
82
+ instance_variable_set(accessor_key, nil)
83
+ elsif non_nil_type.valid?(val)
84
+ instance_variable_set(accessor_key, val)
85
+ else
86
+ T::Props::Private::SetterFactory.raise_pretty_error(
87
+ T.unsafe(self.class),
88
+ prop,
89
+ non_nil_type,
90
+ val,
91
+ )
57
92
  end
58
93
  end
59
94
  end
@@ -67,7 +102,7 @@ module T::Props
67
102
  )
68
103
  .void
69
104
  end
70
- private_class_method def self.raise_pretty_error(klass, prop, type, val)
105
+ def self.raise_pretty_error(klass, prop, type, val)
71
106
  base_message = "Can't set #{klass.name}.#{prop} to #{val.inspect} (instance of #{val.class}) - need a #{type}"
72
107
 
73
108
  pretty_message = "Parameter '#{prop}': #{base_message}\n"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sorbet-runtime
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.5390
4
+ version: 0.5.5391
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stripe
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-02-22 00:00:00.000000000 Z
11
+ date: 2020-02-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest