sorbet-runtime 0.5.9542 → 0.5.9553

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/types/props/decorator.rb +19 -1
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 05be982509e317b254ad35e213cf6a9e0c1ff18b257ef0761587c067c3a6db96
4
- data.tar.gz: 683282ca3d466ee2b8b81c63c60206de17bb7455297456e0e33c7b03d953cd39
3
+ metadata.gz: c1b6f18726c84faa9de3b53ad9df01ae5d2ae62dd78d93387bc11c262c4d6570
4
+ data.tar.gz: 66f4b1d50ff078127761f03a3f7a8d1e6eeb1c9c5ea5849e1898fe0b72a0037a
5
5
  SHA512:
6
- metadata.gz: a5ad32ba78c48be474babcddbc804202e9b1c8b16c0f10562aad3cd5fda15461b82d34c70e1463c02f43d5d4e8b5107298e72f0c9f1911f25e8c8b5653f64bff
7
- data.tar.gz: e8fa16603d94f33f7cd10ee6ac42c54894a5a8737202bc86faa7faff85c2e5e441108e54a37295980e9e1aa9f1a16d7679d3439bc2a378afe0c63cf159cc18ee
6
+ metadata.gz: 18e67fbebd61d4f0db1c2337fe6802a55163ebb42f5041de1f7ee1ccc4d841d659b875a1593c32b3674ede6a3f1def09ad3b436c55b2381a1d65856814a04197
7
+ data.tar.gz: e9c66da71668aa973a740bf8af8a5c2bc8ba1e098ecb36e76d460e8c8041cf7b855b5b130609e33c7116e600c1c83d5cf2a0cc4ea5da5416a0fe9fdd0b40de3d
@@ -277,6 +277,24 @@ class T::Props::Decorator
277
277
  end
278
278
  end
279
279
 
280
+ # Returns `true` when the type of the prop is nilable, or the field is typed
281
+ # as `T.untyped`, a `:default` is present in the rules hash, and its value is
282
+ # `nil`. The latter case is a workaround for explicitly not supporting the use
283
+ # of `T.nilable(T.untyped)`.
284
+ #
285
+ # checked(:never) - Rules hash is expensive to check
286
+ sig do
287
+ params(
288
+ cls: PropTypeOrClass,
289
+ rules: Rules,
290
+ )
291
+ .void
292
+ .checked(:never)
293
+ end
294
+ private def prop_nilable?(cls, rules)
295
+ T::Utils::Nilable.is_union_with_nilclass(cls) || (cls == T.untyped && rules.key?(:default) && rules[:default].nil?)
296
+ end
297
+
280
298
  # checked(:never) - Rules hash is expensive to check
281
299
  sig do
282
300
  params(
@@ -290,7 +308,7 @@ class T::Props::Decorator
290
308
  def prop_defined(name, cls, rules={})
291
309
  cls = T::Utils.resolve_alias(cls)
292
310
 
293
- if T::Utils::Nilable.is_union_with_nilclass(cls)
311
+ if prop_nilable?(cls, rules)
294
312
  # :_tnilable is introduced internally for performance purpose so that clients do not need to call
295
313
  # T::Utils::Nilable.is_tnilable(cls) again.
296
314
  # It is strictly internal: clients should always use T::Props::Utils.required_prop?() or
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.9542
4
+ version: 0.5.9553
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stripe
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-01-22 00:00:00.000000000 Z
11
+ date: 2022-01-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest