sorbet-runtime 0.5.9542 → 0.5.9553

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.
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