sorbet-runtime 0.5.5745 → 0.5.5772
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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c4330fb542b74c403f4ffe741dbf18462ff723a62aae0f6619b0ba68f809c728
|
4
|
+
data.tar.gz: 9c01c8ffa8239295e4efc9dc5076927491d5f0c79f854aa26958f2a6e6c1de87
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e20a1bba181928eeb770d972419cc1eb384c740679e7d82ee60246863b2ae19d34d4447fe83d93173cb5ff4cf8e81d2a7deb33093f5c3b9c1155e3b08267038a
|
7
|
+
data.tar.gz: eca4c25fcaa93949db7aacaca418f39d145814b6d79de2c89ebb4855209ea7ea396b830424d23644d83dbd3f1e4ee25c581c4290efac221ea4f08027ae687c90
|
@@ -260,7 +260,7 @@ module T::Props
|
|
260
260
|
# Method calls generated by SerdeTransform
|
261
261
|
private_class_method def self.whitelisted_methods_for_deserialize
|
262
262
|
@whitelisted_methods_for_deserialize ||= {
|
263
|
-
:lvar => %i{dup map transform_values transform_keys each_with_object nil? []=},
|
263
|
+
:lvar => %i{dup map transform_values transform_keys each_with_object nil? []= to_f},
|
264
264
|
:const => %i{deserialize from_hash deep_clone_object soft_assert_handler},
|
265
265
|
}
|
266
266
|
end
|
@@ -19,7 +19,7 @@ module T::Props
|
|
19
19
|
end
|
20
20
|
|
21
21
|
NO_TRANSFORM_TYPES = T.let(
|
22
|
-
[TrueClass, FalseClass, NilClass, Symbol, String
|
22
|
+
[TrueClass, FalseClass, NilClass, Symbol, String].freeze,
|
23
23
|
T::Array[Module],
|
24
24
|
)
|
25
25
|
private_constant :NO_TRANSFORM_TYPES
|
@@ -65,6 +65,14 @@ module T::Props
|
|
65
65
|
raw = type.raw_type
|
66
66
|
if NO_TRANSFORM_TYPES.any? {|cls| raw <= cls}
|
67
67
|
nil
|
68
|
+
elsif raw <= Float
|
69
|
+
case mode
|
70
|
+
when Deserialize then "#{varname}.to_f"
|
71
|
+
when Serialize then nil
|
72
|
+
else T.absurd(mode)
|
73
|
+
end
|
74
|
+
elsif raw <= Numeric
|
75
|
+
nil
|
68
76
|
elsif raw < T::Props::Serializable
|
69
77
|
handle_serializable_subtype(varname, raw, mode)
|
70
78
|
elsif raw.singleton_class < T::Props::CustomType
|
@@ -96,6 +104,13 @@ module T::Props
|
|
96
104
|
if type.types.all? {|t| generate(t, mode, varname).nil?}
|
97
105
|
nil
|
98
106
|
else
|
107
|
+
# We currently deep_clone_object if the type was T.any(Integer, Float).
|
108
|
+
# When we get better support for union types (maybe this specific
|
109
|
+
# union type, because it would be a replacement for
|
110
|
+
# Chalk::ODM::DeprecatedNumemric), we could opt to special case
|
111
|
+
# this union to have no specific serde transform (the only reason
|
112
|
+
# why Float has a special case is because round tripping through
|
113
|
+
# JSON might normalize Floats to Integers)
|
99
114
|
"T::Props::Utils.deep_clone_object(#{varname})"
|
100
115
|
end
|
101
116
|
end
|
@@ -50,7 +50,11 @@ module T::Types
|
|
50
50
|
# Enumerators can be unbounded: see `[:foo, :bar].cycle`
|
51
51
|
return true
|
52
52
|
when Range
|
53
|
-
|
53
|
+
# A nil beginning or a nil end does not provide any type information. That is, nil in a range represents
|
54
|
+
# boundlessness, it does not express a type. For example `(nil...nil)` is not a T::Range[NilClass], its a range
|
55
|
+
# of unknown types (T::Range[T.untyped]).
|
56
|
+
# Similarly, `(nil...1)` is not a `T::Range[T.nilable(Integer)]`, it's a boundless range of Integer.
|
57
|
+
(obj.begin.nil? || @type.valid?(obj.begin)) && (obj.end.nil? || @type.valid?(obj.end))
|
54
58
|
when Set
|
55
59
|
obj.each do |item|
|
56
60
|
return false unless @type.valid?(item)
|
@@ -124,7 +128,13 @@ module T::Types
|
|
124
128
|
inferred_val = type_from_instances(obj.values)
|
125
129
|
T::Hash[inferred_key, inferred_val]
|
126
130
|
when Range
|
127
|
-
|
131
|
+
# We can't get any information from `NilClass` in ranges (since nil is used to represent boundlessness).
|
132
|
+
typeable_objects = [obj.begin, obj.end].compact
|
133
|
+
if typeable_objects.empty?
|
134
|
+
T::Range[T.untyped]
|
135
|
+
else
|
136
|
+
T::Range[type_from_instances(typeable_objects)]
|
137
|
+
end
|
128
138
|
when Enumerator
|
129
139
|
T::Enumerator[type_from_instances(obj)]
|
130
140
|
when Set
|
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.5772
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stripe
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-06-
|
11
|
+
date: 2020-06-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: minitest
|