sorbet-runtime 0.5.10667 → 0.5.10676
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/types/types/fixed_array.rb +13 -0
- data/lib/types/types/fixed_hash.rb +22 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7af4dd278e99d924889ddfc3e61d864a109755a805bd516a0ec94b9af59226fd
|
4
|
+
data.tar.gz: f09610bc852ac70b0fed6e6934b63c981aec7302e78cc1ae918c09018de6d062
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6c3b30eeaa8b157178a64a1c479e372e767baa2932d4da6e78ae0322fdb1691b82d28628f17f3a5f976ce25326fa77e0b14eb5390d075c9dac47ac57db2f55a1
|
7
|
+
data.tar.gz: 4de95cdb730556c7401ab29b012b150e1a787cbe4e9fd65365f1d604f4c96d7375364eb31c5f85f2c84aa3ba5fba3a35056b8aebed270b138aec4c8945732c1e
|
@@ -59,6 +59,19 @@ module T::Types
|
|
59
59
|
@types.size == other.types.size && @types.zip(other.types).all? do |t1, t2|
|
60
60
|
t1.subtype_of?(t2)
|
61
61
|
end
|
62
|
+
when TypedArray
|
63
|
+
# warning: covariant arrays
|
64
|
+
|
65
|
+
value1, value2, *values_rest = types
|
66
|
+
value_type = if !value2.nil?
|
67
|
+
T::Types::Union::Private::Pool.union_of_types(value1, value2, values_rest)
|
68
|
+
elsif value1.nil?
|
69
|
+
T.untyped
|
70
|
+
else
|
71
|
+
value1
|
72
|
+
end
|
73
|
+
|
74
|
+
T::Types::TypedArray.new(value_type).subtype_of?(other)
|
62
75
|
else
|
63
76
|
false
|
64
77
|
end
|
@@ -38,6 +38,28 @@ module T::Types
|
|
38
38
|
when FixedHash
|
39
39
|
# Using `subtype_of?` here instead of == would be unsound
|
40
40
|
@types == other.types
|
41
|
+
when TypedHash
|
42
|
+
# warning: covariant hashes
|
43
|
+
|
44
|
+
key1, key2, *keys_rest = types.keys.map {|key| T::Utils.coerce(key.class)}
|
45
|
+
key_type = if !key2.nil?
|
46
|
+
T::Types::Union::Private::Pool.union_of_types(key1, key2, keys_rest)
|
47
|
+
elsif key1.nil?
|
48
|
+
T.untyped
|
49
|
+
else
|
50
|
+
key1
|
51
|
+
end
|
52
|
+
|
53
|
+
value1, value2, *values_rest = types.values
|
54
|
+
value_type = if !value2.nil?
|
55
|
+
T::Types::Union::Private::Pool.union_of_types(value1, value2, values_rest)
|
56
|
+
elsif value1.nil?
|
57
|
+
T.untyped
|
58
|
+
else
|
59
|
+
value1
|
60
|
+
end
|
61
|
+
|
62
|
+
T::Types::TypedHash.new(keys: key_type, values: value_type).subtype_of?(other)
|
41
63
|
else
|
42
64
|
false
|
43
65
|
end
|
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.
|
4
|
+
version: 0.5.10676
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stripe
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-02-
|
11
|
+
date: 2023-02-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: minitest
|