sorbet-runtime 0.5.10818 → 0.5.10821

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ddfd9761a4a88233877d8cbfe25d3e5bd257c1e4ea7497c255bec6c7d5897e3a
4
- data.tar.gz: 38ed467519b492e37c20b4c8a8c051731deec8b2fc561508fbe1506a8c4aae15
3
+ metadata.gz: dfcdb76f9a4e54f46ef08810a43d8ca559424d56ac63730edaab5e038066557d
4
+ data.tar.gz: f2ce020987d48dd63749cd055cfe0f4de986ef0c5cb7e426db0a29087b8ff288
5
5
  SHA512:
6
- metadata.gz: 9eeaf99c28f740abab40b839a0c70185891e2c0565d095b762664000ad0ed34effab6ce909c5b7e9c87ac37e7b8f7acb72c3ec62f4e79ef619981b0cfd581cfd
7
- data.tar.gz: f2f55b4b4c85c23e31914c5b73692adebf64330ae8c0ca4ce3cab2190cea328f0cece749884e2a5a6aba8d7dd92636a8bf2e9fec6f7ab8cd7005330cd8ab7839
6
+ metadata.gz: c3feb72864dd0cf97dfe67f4dbc311d91ab28cc0c3564f0f24127c5cacc6971e9b25110015fe5cb1c309fb6ead68f9414363d14b9cd5ce1b6dd92b7f43a9e475
7
+ data.tar.gz: 92ce344f56cf89dd177f5ac4b8055c5e50aef0312fee0e0cb34afc65ff43f1381eb17bc3b644a6d9c5618c5d87092886266c4d29d40cfa299a59fbb23efc3dd5
@@ -85,6 +85,7 @@ require_relative 'types/boolean'
85
85
 
86
86
  # Depends on types/utils
87
87
  require_relative 'types/types/typed_array'
88
+ require_relative 'types/types/typed_class'
88
89
 
89
90
  # Props dependencies
90
91
  require_relative 'types/private/abstract/data'
data/lib/types/_types.rb CHANGED
@@ -355,4 +355,16 @@ module T
355
355
  end
356
356
  end
357
357
  end
358
+
359
+ module Class
360
+ def self.[](type)
361
+ if type.is_a?(T::Types::Untyped)
362
+ T::Types::TypedClass::Untyped::Private::INSTANCE
363
+ elsif type.is_a?(T::Types::Anything)
364
+ T::Types::TypedClass::Anything::Private::INSTANCE
365
+ else
366
+ T::Types::TypedClass::Private::Pool.type_for_module(type)
367
+ end
368
+ end
369
+ end
358
370
  end
@@ -27,6 +27,8 @@ module T::Types
27
27
  @type <= other.type
28
28
  when Simple
29
29
  @type.is_a?(other.raw_type)
30
+ when TypedClass
31
+ true
30
32
  else
31
33
  false
32
34
  end
@@ -0,0 +1,85 @@
1
+ # frozen_string_literal: true
2
+ # typed: true
3
+
4
+ module T::Types
5
+ class TypedClass < T::Types::Base
6
+ attr_reader :type
7
+
8
+ def initialize(type)
9
+ @type = T::Utils.coerce(type)
10
+ end
11
+
12
+ # overrides Base
13
+ def name
14
+ "T::Class[#{@type.name}]"
15
+ end
16
+
17
+ def underlying_class
18
+ Class
19
+ end
20
+
21
+ # overrides Base
22
+ def valid?(obj)
23
+ Class.===(obj)
24
+ end
25
+
26
+ # overrides Base
27
+ private def subtype_of_single?(type)
28
+ case type
29
+ when TypedClass
30
+ # treat like generics are erased
31
+ true
32
+ when Simple
33
+ Class <= type.raw_type
34
+ else
35
+ false
36
+ end
37
+ end
38
+
39
+ module Private
40
+ module Pool
41
+ CACHE_FROZEN_OBJECTS =
42
+ begin
43
+ ObjectSpace::WeakMap.new[1] = 1
44
+ true # Ruby 2.7 and newer
45
+ rescue ArgumentError
46
+ false # Ruby 2.6 and older
47
+ end
48
+
49
+ @cache = ObjectSpace::WeakMap.new
50
+
51
+ def self.type_for_module(mod)
52
+ cached = @cache[mod]
53
+ return cached if cached
54
+
55
+ type = TypedClass.new(mod)
56
+
57
+ if CACHE_FROZEN_OBJECTS || (!mod.frozen? && !type.frozen?)
58
+ @cache[mod] = type
59
+ end
60
+ type
61
+ end
62
+ end
63
+ end
64
+
65
+ class Untyped < TypedClass
66
+ def initialize
67
+ super(T.untyped)
68
+ end
69
+
70
+ module Private
71
+ INSTANCE = Untyped.new.freeze
72
+ end
73
+ end
74
+
75
+ class Anything < TypedClass
76
+ def initialize
77
+ super(T.anything)
78
+ end
79
+
80
+ module Private
81
+ INSTANCE = Anything.new.freeze
82
+ end
83
+ end
84
+ end
85
+ 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.10818
4
+ version: 0.5.10821
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stripe
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-05-11 00:00:00.000000000 Z
11
+ date: 2023-05-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest
@@ -233,6 +233,7 @@ files:
233
233
  - lib/types/types/type_template.rb
234
234
  - lib/types/types/type_variable.rb
235
235
  - lib/types/types/typed_array.rb
236
+ - lib/types/types/typed_class.rb
236
237
  - lib/types/types/typed_enumerable.rb
237
238
  - lib/types/types/typed_enumerator.rb
238
239
  - lib/types/types/typed_enumerator_chain.rb