sorbet-runtime 0.4.4539 → 0.4.4540

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
  SHA1:
3
- metadata.gz: 254560c262844687d19ed9bdf4455b07bc6b8abc
4
- data.tar.gz: daaac8e190d0ebee171bc0740bc8d4c4bbf195ff
3
+ metadata.gz: e535aeae3d09b4eef7e8983cbf09bee31b71f7f8
4
+ data.tar.gz: c7587b913aaa915a93ea5c7be6d794c8aa4b0767
5
5
  SHA512:
6
- metadata.gz: a69d1e173000c4df7d8aadf2e9d4707b9ac1471867be6b51198fd960a75d7d42ff07500ecac213d33f69f7f4b7197283cec1c997fb8e51e10eba57e086a3e9d9
7
- data.tar.gz: 43b4b3dde7b42ca788c99645e7a07c2f16cde98a3cb8bf6cce4dcbfaecf54c72f40c90202ea89e6aed394275374313a47d06b5820a048f29a923a83ce4d0d8cc
6
+ metadata.gz: ce2ed81c05e056e5acb111546ac2a20ca3abdcbe956e5cba1ec620b639ab71d90cfd331f0ace0ffa009d0b987df3b2550964821c9a66404b0830a42af31d4404
7
+ data.tar.gz: d798d11d8dc4b6123afe2e043f0b1ce468a6cc660e50c1a5dfab75a40e5104c0f785d18a63e1cbaac0562848d599349730171fba1a8dfd0c545751a4382c2b36
@@ -217,25 +217,41 @@ module T
217
217
 
218
218
  module Array
219
219
  def self.[](type)
220
- T::Types::TypedArray.new(type)
220
+ if type.is_a?(T::Types::Untyped)
221
+ T::Types::TypedArray::Untyped.new
222
+ else
223
+ T::Types::TypedArray.new(type)
224
+ end
221
225
  end
222
226
  end
223
227
 
224
228
  module Hash
225
229
  def self.[](keys, values)
226
- T::Types::TypedHash.new(keys: keys, values: values)
230
+ if keys.is_a?(T::Types::Untyped) && values.is_a?(T::Types::Untyped)
231
+ T::Types::TypedHash::Untyped.new
232
+ else
233
+ T::Types::TypedHash.new(keys: keys, values: values)
234
+ end
227
235
  end
228
236
  end
229
237
 
230
238
  module Enumerable
231
239
  def self.[](type)
232
- T::Types::TypedEnumerable.new(type)
240
+ if type.is_a?(T::Types::Untyped)
241
+ T::Types::TypedEnumerable::Untyped.new
242
+ else
243
+ T::Types::TypedEnumerable.new(type)
244
+ end
233
245
  end
234
246
  end
235
247
 
236
248
  module Enumerator
237
249
  def self.[](type)
238
- T::Types::TypedEnumerator.new(type)
250
+ if type.is_a?(T::Types::Untyped)
251
+ T::Types::TypedEnumerator::Untyped.new
252
+ else
253
+ T::Types::TypedEnumerator.new(type)
254
+ end
239
255
  end
240
256
  end
241
257
 
@@ -247,7 +263,11 @@ module T
247
263
 
248
264
  module Set
249
265
  def self.[](type)
250
- T::Types::TypedSet.new(type)
266
+ if type.is_a?(T::Types::Untyped)
267
+ T::Types::TypedSet::Untyped.new
268
+ else
269
+ T::Types::TypedSet.new(type)
270
+ end
251
271
  end
252
272
  end
253
273
 
@@ -8,6 +8,10 @@ module T::Types
8
8
  "T::Array[#{@type.name}]"
9
9
  end
10
10
 
11
+ def underlying_class
12
+ Array
13
+ end
14
+
11
15
  # @override Base
12
16
  def valid?(obj)
13
17
  obj.is_a?(Array) && super
@@ -16,5 +20,15 @@ module T::Types
16
20
  def new(*args) # rubocop:disable PrisonGuard/BanBuiltinMethodOverride
17
21
  Array.new(*T.unsafe(args))
18
22
  end
23
+
24
+ class Untyped < TypedArray
25
+ def initialize
26
+ super(T.untyped)
27
+ end
28
+
29
+ def valid?(obj)
30
+ obj.is_a?(Array)
31
+ end
32
+ end
19
33
  end
20
34
  end
@@ -12,6 +12,10 @@ module T::Types
12
12
  @type = T::Utils.coerce(type)
13
13
  end
14
14
 
15
+ def underlying_class
16
+ Enumerable
17
+ end
18
+
15
19
  # @override Base
16
20
  def name
17
21
  "T::Enumerable[#{@type.name}]"
@@ -68,7 +72,8 @@ module T::Types
68
72
 
69
73
  # @override Base
70
74
  private def subtype_of_single?(other)
71
- if self.class <= other.class
75
+ if other.class <= TypedEnumerable &&
76
+ underlying_class <= other.underlying_class
72
77
  # Enumerables are covariant because they are read only
73
78
  #
74
79
  # Properly speaking, many Enumerable subtypes (e.g. Set)
@@ -137,5 +142,15 @@ module T::Types
137
142
  self.class.new(type_from_instances(obj))
138
143
  end
139
144
  end
145
+
146
+ class Untyped < TypedEnumerable
147
+ def initialize
148
+ super(T.untyped)
149
+ end
150
+
151
+ def valid?(obj)
152
+ obj.is_a?(Enumerable)
153
+ end
154
+ end
140
155
  end
141
156
  end
@@ -5,6 +5,10 @@ module T::Types
5
5
  class TypedEnumerator < TypedEnumerable
6
6
  attr_reader :type
7
7
 
8
+ def underlying_class
9
+ Enumerator
10
+ end
11
+
8
12
  # @override Base
9
13
  def name
10
14
  "T::Enumerator[#{@type.name}]"
@@ -18,5 +22,15 @@ module T::Types
18
22
  def new(*args, &blk) # rubocop:disable PrisonGuard/BanBuiltinMethodOverride
19
23
  T.unsafe(Enumerator).new(*args, &blk)
20
24
  end
25
+
26
+ class Untyped < TypedEnumerator
27
+ def initialize
28
+ super(T.untyped)
29
+ end
30
+
31
+ def valid?(obj)
32
+ obj.is_a?(Enumerator)
33
+ end
34
+ end
21
35
  end
22
36
  end
@@ -6,7 +6,11 @@ module T::Types
6
6
  # Technically we don't need these, but they are a nice api
7
7
  attr_reader :keys, :values
8
8
 
9
- def initialize(keys:, values:)
9
+ def underlying_class
10
+ Hash
11
+ end
12
+
13
+ def initialize(keys:, values:)
10
14
  @keys = T::Utils.coerce(keys)
11
15
  @values = T::Utils.coerce(values)
12
16
  @type = T::Utils.coerce([keys, values])
@@ -25,5 +29,15 @@ module T::Types
25
29
  def new(*args, &blk) # rubocop:disable PrisonGuard/BanBuiltinMethodOverride
26
30
  Hash.new(*T.unsafe(args), &blk) # rubocop:disable PrisonGuard/RestrictHashDefaults
27
31
  end
32
+
33
+ class Untyped < TypedHash
34
+ def initialize
35
+ super(keys: T.untyped, values: T.untyped)
36
+ end
37
+
38
+ def valid?(obj)
39
+ obj.is_a?(Hash)
40
+ end
41
+ end
28
42
  end
29
43
  end
@@ -5,6 +5,10 @@ module T::Types
5
5
  class TypedRange < TypedEnumerable
6
6
  attr_reader :type
7
7
 
8
+ def underlying_class
9
+ Hash
10
+ end
11
+
8
12
  # @override Base
9
13
  def name
10
14
  "T::Range[#{@type.name}]"
@@ -5,6 +5,10 @@ module T::Types
5
5
  class TypedSet < TypedEnumerable
6
6
  attr_reader :type
7
7
 
8
+ def underlying_class
9
+ Hash
10
+ end
11
+
8
12
  # @override Base
9
13
  def name
10
14
  "T::Set[#{@type.name}]"
@@ -18,5 +22,15 @@ module T::Types
18
22
  def new(*args) # rubocop:disable PrisonGuard/BanBuiltinMethodOverride
19
23
  Set.new(*T.unsafe(args))
20
24
  end
25
+
26
+ class Untyped < TypedSet
27
+ def initialize
28
+ super(T.untyped)
29
+ end
30
+
31
+ def valid?(obj)
32
+ obj.is_a?(Set)
33
+ end
34
+ end
21
35
  end
22
36
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sorbet-runtime
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.4539
4
+ version: 0.4.4540
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stripe