sorbet-runtime 0.5.5337 → 0.5.5351
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 +4 -4
- data/lib/types/enum.rb +18 -3
- metadata +30 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 7c936c7c56f3d2744cc9eadef4a09fda763da10f7aade1bc9ea14f79d6fc06ee
|
|
4
|
+
data.tar.gz: 895909d805985f223b55e51c7eb747c72a8b22e3edd1368bb1c499e7bdd1762c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 5190c974d7f15eae95dd0b334d7cf9ef829d341d76e5594467afa3d0a1da3016782425a205ab11292631dfba47e8c11fff3141799668008f2b9d27238740260d
|
|
7
|
+
data.tar.gz: 401e1dfbf1daa4d71785377ef574343b367a2f84939c6944fa07c7f265935864fae5af3569c51e364efb07209d15d91a9d49162a0385b0b4b2f472a0ec5bc4a6
|
data/lib/types/enum.rb
CHANGED
|
@@ -261,6 +261,7 @@ class T::Enum
|
|
|
261
261
|
serialized_val = serialized_val.frozen? ? serialized_val : serialized_val.dup.freeze
|
|
262
262
|
@serialized_val = T.let(serialized_val, T.nilable(SerializedVal))
|
|
263
263
|
@const_name = T.let(nil, T.nilable(Symbol))
|
|
264
|
+
self.class._register_instance(self)
|
|
264
265
|
end
|
|
265
266
|
|
|
266
267
|
sig {returns(NilClass).checked(:never)}
|
|
@@ -298,6 +299,13 @@ class T::Enum
|
|
|
298
299
|
@fully_initialized ||= false
|
|
299
300
|
end
|
|
300
301
|
|
|
302
|
+
# Maintains the order in which values are defined
|
|
303
|
+
sig {params(instance: T.untyped).void}
|
|
304
|
+
def self._register_instance(instance)
|
|
305
|
+
@values ||= []
|
|
306
|
+
@values << T.cast(instance, T.attached_class)
|
|
307
|
+
end
|
|
308
|
+
|
|
301
309
|
# Entrypoint for allowing people to register new enum values.
|
|
302
310
|
# All enum values must be defined within this block.
|
|
303
311
|
sig {params(blk: T.proc.void).void}
|
|
@@ -308,13 +316,14 @@ class T::Enum
|
|
|
308
316
|
|
|
309
317
|
@started_initializing = true
|
|
310
318
|
|
|
319
|
+
@values = T.let(nil, T.nilable(T::Array[T.attached_class]))
|
|
320
|
+
|
|
311
321
|
yield
|
|
312
322
|
|
|
313
|
-
@values = T.let(nil, T.nilable(T::Array[T.attached_class]))
|
|
314
323
|
@mapping = T.let(nil, T.nilable(T::Hash[SerializedVal, T.attached_class]))
|
|
324
|
+
@mapping = {}
|
|
315
325
|
|
|
316
326
|
# Freeze the Enum class and bind the constant names into each of the instances.
|
|
317
|
-
@mapping = {}
|
|
318
327
|
self.constants(false).each do |const_name|
|
|
319
328
|
instance = self.const_get(const_name, false)
|
|
320
329
|
if !instance.is_a?(self)
|
|
@@ -329,8 +338,14 @@ class T::Enum
|
|
|
329
338
|
end
|
|
330
339
|
@mapping[serialized] = instance
|
|
331
340
|
end
|
|
332
|
-
@values
|
|
341
|
+
@values.freeze
|
|
333
342
|
@mapping.freeze
|
|
343
|
+
|
|
344
|
+
orphaned_instances = T.must(@values) - @mapping.values
|
|
345
|
+
if !orphaned_instances.empty?
|
|
346
|
+
raise "Enum values must be assigned to constants: #{orphaned_instances.map {|v| v.instance_variable_get('@serialized_val')}}"
|
|
347
|
+
end
|
|
348
|
+
|
|
334
349
|
@fully_initialized = true
|
|
335
350
|
end
|
|
336
351
|
|
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.5351
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Stripe
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2020-02-
|
|
11
|
+
date: 2020-02-07 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: minitest
|
|
@@ -66,6 +66,34 @@ dependencies:
|
|
|
66
66
|
- - "~>"
|
|
67
67
|
- !ruby/object:Gem::Version
|
|
68
68
|
version: 1.1.5
|
|
69
|
+
- !ruby/object:Gem::Dependency
|
|
70
|
+
name: pry
|
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
|
72
|
+
requirements:
|
|
73
|
+
- - ">="
|
|
74
|
+
- !ruby/object:Gem::Version
|
|
75
|
+
version: '0'
|
|
76
|
+
type: :development
|
|
77
|
+
prerelease: false
|
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
+
requirements:
|
|
80
|
+
- - ">="
|
|
81
|
+
- !ruby/object:Gem::Version
|
|
82
|
+
version: '0'
|
|
83
|
+
- !ruby/object:Gem::Dependency
|
|
84
|
+
name: pry-byebug
|
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
|
86
|
+
requirements:
|
|
87
|
+
- - ">="
|
|
88
|
+
- !ruby/object:Gem::Version
|
|
89
|
+
version: '0'
|
|
90
|
+
type: :development
|
|
91
|
+
prerelease: false
|
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
93
|
+
requirements:
|
|
94
|
+
- - ">="
|
|
95
|
+
- !ruby/object:Gem::Version
|
|
96
|
+
version: '0'
|
|
69
97
|
description: Sorbet's runtime type checking component
|
|
70
98
|
email:
|
|
71
99
|
executables: []
|