sorbet-runtime 0.5.6519 → 0.5.6526

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c3fe0af926fcf94b5f81c92f0d2694e139b8526e4d4bc3f2580936f9de75955e
4
- data.tar.gz: 8c12da788d0205e26f7dc6304b3cb3998cf7893304c6ae0b5b944cc27c302695
3
+ metadata.gz: bcf6b44867d5f3f87b122dd573971f86c2fd432d57a65252a5e97441ba1f9b5f
4
+ data.tar.gz: 206aeb29cb58e9179f9a3dc25d9d1284afa5a484429fe21b876869604f48e89e
5
5
  SHA512:
6
- metadata.gz: 2d50937028847ce7a1a3b98dda9fd432f9f097cf7239963f3eab052e6368966d403d36425477b4a000ea8c591e0232814a994043e201574f3019d9853bdd8160
7
- data.tar.gz: f4e3fbfe7ac2ad4bdeade413f9f62a5e180b04bdd99d398f4d34efeb019df2dbde531a6ebd669f1b01af480c04c52844f700ff82d8f18ac1d0ccb7dd01b6dee3
6
+ metadata.gz: e9f6a4b2023aaddcfab4c433e5afad9f27bcd501f6be90b69cd62d387aaf43a97392f9285d441dd9bda14f8da19b70261678f9e5adc58fabdacbfe5b8d74d46e
7
+ data.tar.gz: 213904531eb8b6181a5d1274b6f9b4f1d6d5b12e779b1714fb71c58d901c90b436f4a77c09f11f2226cd46d76e9c0b22f40aad7a136e4810dc6883778230ad3d
data/lib/types/generic.rb CHANGED
@@ -2,7 +2,6 @@
2
2
  # typed: true
3
3
 
4
4
  # Use as a mixin with extend (`extend T::Generic`).
5
- # Docs at https://hackpad.corp.stripe.com/Type-Validation-in-pay-server-1JaoTHir5Mo.
6
5
  module T::Generic
7
6
  include T::Helpers
8
7
  include Kernel
@@ -34,9 +34,40 @@ module T::Props
34
34
  # Use separate methods in order to ensure that we only close over necessary
35
35
  # variables
36
36
  if !T::Props::Utils.need_nil_write_check?(rules) || has_explicit_nil_default
37
- nilable_proc(prop, accessor_key, non_nil_type, klass, validate)
37
+ if validate.nil? && non_nil_type.is_a?(T::Types::Simple)
38
+ simple_nilable_proc(prop, accessor_key, non_nil_type.raw_type, klass)
39
+ else
40
+ nilable_proc(prop, accessor_key, non_nil_type, klass, validate)
41
+ end
38
42
  else
39
- non_nil_proc(prop, accessor_key, non_nil_type, klass, validate)
43
+ if validate.nil? && non_nil_type.is_a?(T::Types::Simple)
44
+ simple_non_nil_proc(prop, accessor_key, non_nil_type.raw_type, klass)
45
+ else
46
+ non_nil_proc(prop, accessor_key, non_nil_type, klass, validate)
47
+ end
48
+ end
49
+ end
50
+
51
+ sig do
52
+ params(
53
+ prop: Symbol,
54
+ accessor_key: Symbol,
55
+ non_nil_type: Module,
56
+ klass: T.all(Module, T::Props::ClassMethods),
57
+ )
58
+ .returns(SetterProc)
59
+ end
60
+ private_class_method def self.simple_non_nil_proc(prop, accessor_key, non_nil_type, klass)
61
+ proc do |val|
62
+ unless val.is_a?(non_nil_type)
63
+ T::Props::Private::SetterFactory.raise_pretty_error(
64
+ klass,
65
+ prop,
66
+ T::Utils.coerce(non_nil_type),
67
+ val,
68
+ )
69
+ end
70
+ instance_variable_set(accessor_key, val)
40
71
  end
41
72
  end
42
73
 
@@ -71,6 +102,33 @@ module T::Props
71
102
  end
72
103
  end
73
104
 
105
+ sig do
106
+ params(
107
+ prop: Symbol,
108
+ accessor_key: Symbol,
109
+ non_nil_type: Module,
110
+ klass: T.all(Module, T::Props::ClassMethods),
111
+ )
112
+ .returns(SetterProc)
113
+ end
114
+ private_class_method def self.simple_nilable_proc(prop, accessor_key, non_nil_type, klass)
115
+ proc do |val|
116
+ if val.nil?
117
+ instance_variable_set(accessor_key, nil)
118
+ elsif val.is_a?(non_nil_type)
119
+ instance_variable_set(accessor_key, val)
120
+ else
121
+ T::Props::Private::SetterFactory.raise_pretty_error(
122
+ klass,
123
+ prop,
124
+ T::Utils.coerce(non_nil_type),
125
+ val,
126
+ )
127
+ instance_variable_set(accessor_key, val)
128
+ end
129
+ end
130
+ end
131
+
74
132
  sig do
75
133
  params(
76
134
  prop: Symbol,
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.6519
4
+ version: 0.5.6526
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stripe
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-07-24 00:00:00.000000000 Z
11
+ date: 2021-07-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest