sorbet-runtime 0.6.13506 → 0.6.13507

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: df5f7298f64f92c805d47bdacd092853bba015bdf2a7d038034a7443122e868d
4
- data.tar.gz: 53ca5629b45b53e98813c110b88d1d6cdfe3b9d473255b578dcc21587238c0ca
3
+ metadata.gz: 4eb8dead2f995b4ddd01ae006eeebf8e634c5b7f30b121995c38c43c1a88aeac
4
+ data.tar.gz: 5df93e5b8be311fb7cfd52d7587439d6d52ee00704b5819d566e93af88385396
5
5
  SHA512:
6
- metadata.gz: f12f615dbf929ff3e05f1c3f680bc2044fa3bbc31ec138cba53e16252e0a020120b0a90545b144f08d79730219af4bb8a84f3896ff1ebc7b3d53c07756a811c5
7
- data.tar.gz: 39767ebbde0d36695dfaf1eeb57a8bfecca41243a5b3292f1c2c6472aedd836db5c020890f5350dd0cbab68ff62160889526dff5d9a2dc90001e00cf404e2f3a
6
+ metadata.gz: ab174f57c44b549acb2d47431e0609f29afc0535b2490d8d5cef56f21c2840c00a5ee36288bc5bc6d94f4913bc35277d260059beb7da74ee415ec87296b6de45
7
+ data.tar.gz: 97079b47fdc95608f7f81edc16bf090513b1da88503ab1663074303b2c8bbe050241bbad9a04412e90472e72fcdebc820be4e5ed825105b1baa18beb924fa8dd
@@ -10,6 +10,11 @@ class T::Private::Types::NotTyped < T::Types::Base
10
10
  nil
11
11
  end
12
12
 
13
+ # overrides Base
14
+ def build_lazy_fields
15
+ nil
16
+ end
17
+
13
18
  # overrides Base
14
19
  def name
15
20
  "<NOT-TYPED>"
@@ -13,6 +13,11 @@ class T::Private::Types::StringHolder < T::Types::Base
13
13
  nil
14
14
  end
15
15
 
16
+ # overrides Base
17
+ def build_lazy_fields
18
+ nil
19
+ end
20
+
16
21
  # overrides Base
17
22
  def name
18
23
  string
@@ -25,6 +25,13 @@ module T::Private::Types
25
25
  nil
26
26
  end
27
27
 
28
+ # overrides Base
29
+ def build_lazy_fields
30
+ # Not the aliased type too: an alias can refer to itself.
31
+ effective_aliased_type
32
+ nil
33
+ end
34
+
28
35
  def aliased_type
29
36
  @aliased_type ||= T::Utils.coerce(@callable.call)
30
37
  end
@@ -22,6 +22,11 @@ module T::Private::Types
22
22
  nil
23
23
  end
24
24
 
25
+ # overrides Base
26
+ def build_lazy_fields
27
+ nil
28
+ end
29
+
25
30
  # overrides Base
26
31
  def name
27
32
  "<VOID>"
@@ -10,6 +10,11 @@ module T::Types
10
10
  nil
11
11
  end
12
12
 
13
+ # overrides Base
14
+ def build_lazy_fields
15
+ nil
16
+ end
17
+
13
18
  # overrides Base
14
19
  def name
15
20
  "T.anything"
@@ -14,6 +14,11 @@ module T::Types
14
14
  nil
15
15
  end
16
16
 
17
+ # overrides Base
18
+ def build_lazy_fields
19
+ nil
20
+ end
21
+
17
22
  # overrides Base
18
23
  def name
19
24
  "T.attached_class"
@@ -39,6 +39,17 @@ module T::Types
39
39
  raise NotImplementedError
40
40
  end
41
41
 
42
+ # Force every lazily-initialized field of this type and its inner types to be built.
43
+ # It's unusual to call this directly; you probably want to call it indirectly via `T::Utils.build_all_types`.
44
+ define_method(:build_lazy_fields) do
45
+ raise NotImplementedError
46
+ end
47
+
48
+ # A frozen type can't take the write, so skip it.
49
+ private def build_inner_lazy_fields(inner)
50
+ inner.build_lazy_fields unless inner.frozen?
51
+ end
52
+
42
53
  # Equality is based on name, so be sure the name reflects all relevant state when implementing.
43
54
  define_method(:name) do
44
55
  raise NotImplementedError
@@ -14,6 +14,11 @@ module T::Types
14
14
  nil
15
15
  end
16
16
 
17
+ # overrides Base
18
+ def build_lazy_fields
19
+ nil
20
+ end
21
+
17
22
  # overrides Base
18
23
  def name
19
24
  "T.class_of(#{@type})"
@@ -22,6 +22,12 @@ module T::Types
22
22
  nil
23
23
  end
24
24
 
25
+ # overrides Base
26
+ def build_lazy_fields
27
+ name
28
+ nil
29
+ end
30
+
25
31
  # overrides Base
26
32
  def valid?(obj)
27
33
  @values.member?(obj)
@@ -19,6 +19,12 @@ module T::Types
19
19
  nil
20
20
  end
21
21
 
22
+ # overrides Base
23
+ def build_lazy_fields
24
+ types.each { |type| build_inner_lazy_fields(type) }
25
+ nil
26
+ end
27
+
22
28
  # overrides Base
23
29
  def name
24
30
  "[#{types.join(', ')}]"
@@ -18,6 +18,12 @@ module T::Types
18
18
  nil
19
19
  end
20
20
 
21
+ # overrides Base
22
+ def build_lazy_fields
23
+ types.each_value { |type| build_inner_lazy_fields(type) }
24
+ nil
25
+ end
26
+
21
27
  # overrides Base
22
28
  def name
23
29
  serialize_hash(types)
@@ -25,6 +25,12 @@ module T::Types
25
25
  nil
26
26
  end
27
27
 
28
+ # overrides Base
29
+ def build_lazy_fields
30
+ types.each { |type| build_inner_lazy_fields(type) }
31
+ nil
32
+ end
33
+
28
34
  # overrides Base
29
35
  def name
30
36
  "T.all(#{types.map(&:name).compact.sort.join(', ')})"
@@ -10,6 +10,11 @@ module T::Types
10
10
  nil
11
11
  end
12
12
 
13
+ # overrides Base
14
+ def build_lazy_fields
15
+ nil
16
+ end
17
+
13
18
  # overrides Base
14
19
  def name
15
20
  "T.noreturn"
@@ -29,6 +29,13 @@ module T::Types
29
29
  nil
30
30
  end
31
31
 
32
+ # overrides Base
33
+ def build_lazy_fields
34
+ arg_types.each_value { |type| build_inner_lazy_fields(type) }
35
+ build_inner_lazy_fields(returns)
36
+ nil
37
+ end
38
+
32
39
  # overrides Base
33
40
  def name
34
41
  args = []
@@ -12,6 +12,11 @@ module T::Types
12
12
  nil
13
13
  end
14
14
 
15
+ # overrides Base
16
+ def build_lazy_fields
17
+ nil
18
+ end
19
+
15
20
  # overrides Base
16
21
  def name
17
22
  "T.self_type"
@@ -17,6 +17,14 @@ module T::Types
17
17
  nil
18
18
  end
19
19
 
20
+ # overrides Base
21
+ def build_lazy_fields
22
+ name
23
+ # NilClass can't be paired with itself in a SimplePairUnion.
24
+ to_nilable.types unless @raw_type.equal?(NilClass)
25
+ nil
26
+ end
27
+
20
28
  # overrides Base
21
29
  def name
22
30
  # Memoize to mitigate pathological performance with anonymous modules (https://bugs.ruby-lang.org/issues/11119)
@@ -14,6 +14,11 @@ module T::Types
14
14
  nil
15
15
  end
16
16
 
17
+ # overrides Base
18
+ def build_lazy_fields
19
+ nil
20
+ end
21
+
17
22
  # overrides Base
18
23
  def name
19
24
  # Strips the #<...> off, just leaving the ...
@@ -24,6 +24,11 @@ module T::Types
24
24
  nil
25
25
  end
26
26
 
27
+ # overrides Base
28
+ def build_lazy_fields
29
+ nil
30
+ end
31
+
27
32
  def self.make(name)
28
33
  cached = Private.cached_entry(name)
29
34
  return cached if cached
@@ -23,6 +23,11 @@ module T::Types
23
23
  nil
24
24
  end
25
25
 
26
+ # overrides Base
27
+ def build_lazy_fields
28
+ nil
29
+ end
30
+
26
31
  def valid?(obj)
27
32
  true
28
33
  end
@@ -16,6 +16,12 @@ module T::Types
16
16
  nil
17
17
  end
18
18
 
19
+ # overrides Base
20
+ def build_lazy_fields
21
+ build_inner_lazy_fields(type)
22
+ nil
23
+ end
24
+
19
25
  # overrides Base
20
26
  def name
21
27
  "T::Class[#{type.name}]"
@@ -19,6 +19,12 @@ module T::Types
19
19
  nil
20
20
  end
21
21
 
22
+ # overrides Base
23
+ def build_lazy_fields
24
+ build_inner_lazy_fields(type)
25
+ nil
26
+ end
27
+
22
28
  def underlying_class
23
29
  Enumerable
24
30
  end
@@ -16,6 +16,12 @@ module T::Types
16
16
  nil
17
17
  end
18
18
 
19
+ # overrides Base
20
+ def build_lazy_fields
21
+ build_inner_lazy_fields(type)
22
+ nil
23
+ end
24
+
19
25
  # overrides Base
20
26
  def name
21
27
  "T::Module[#{type.name}]"
@@ -42,6 +42,12 @@ module T::Types
42
42
  nil
43
43
  end
44
44
 
45
+ # overrides Base
46
+ def build_lazy_fields
47
+ types.each { |type| build_inner_lazy_fields(type) }
48
+ nil
49
+ end
50
+
45
51
  # overrides Base
46
52
  def name
47
53
  # Use the attr_reader here so we can override it in SimplePairUnion
@@ -11,6 +11,11 @@ module T::Types
11
11
  nil
12
12
  end
13
13
 
14
+ # overrides Base
15
+ def build_lazy_fields
16
+ nil
17
+ end
18
+
14
19
  # overrides Base
15
20
  def name
16
21
  "T.untyped"
data/lib/types/utils.rb CHANGED
@@ -178,6 +178,19 @@ module T::Utils
178
178
  nil
179
179
  end
180
180
 
181
+ # Force every type object in the process to build its lazily-initialized
182
+ # fields (see `T::Types::Base#build_lazy_fields`).
183
+ #
184
+ # Call this before forking workers so that first use of a type in a worker
185
+ # doesn't write onto a type object shared with the parent via copy-on-write.
186
+ def self.build_all_types
187
+ require 'objspace'
188
+ ObjectSpace.each_object(T::Types::Base) do |type|
189
+ type.build_lazy_fields unless type.frozen?
190
+ end
191
+ nil
192
+ end
193
+
181
194
  def self.lift_enum(enum)
182
195
  unless enum.is_a?(T::Types::Enum)
183
196
  raise ArgumentError.new("#{enum.inspect} is not a T.deprecated_enum")
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.6.13506
4
+ version: 0.6.13507
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stripe