sorbet-runtime 0.4.4667 → 0.5.6189

Sign up to get free protection for your applications and to get access to all the features.
Files changed (70) hide show
  1. checksums.yaml +5 -5
  2. data/lib/sorbet-runtime.rb +15 -3
  3. data/lib/types/_types.rb +26 -17
  4. data/lib/types/boolean.rb +1 -1
  5. data/lib/types/compatibility_patches.rb +65 -10
  6. data/lib/types/configuration.rb +93 -7
  7. data/lib/types/enum.rb +371 -0
  8. data/lib/types/generic.rb +2 -2
  9. data/lib/types/interface_wrapper.rb +4 -4
  10. data/lib/types/non_forcing_constants.rb +61 -0
  11. data/lib/types/private/abstract/data.rb +2 -2
  12. data/lib/types/private/abstract/declare.rb +3 -0
  13. data/lib/types/private/abstract/validate.rb +7 -7
  14. data/lib/types/private/casts.rb +27 -0
  15. data/lib/types/private/class_utils.rb +8 -5
  16. data/lib/types/private/methods/_methods.rb +80 -28
  17. data/lib/types/private/methods/call_validation.rb +5 -47
  18. data/lib/types/private/methods/decl_builder.rb +14 -56
  19. data/lib/types/private/methods/modes.rb +5 -7
  20. data/lib/types/private/methods/signature.rb +32 -18
  21. data/lib/types/private/methods/signature_validation.rb +29 -35
  22. data/lib/types/private/retry.rb +10 -0
  23. data/lib/types/private/sealed.rb +21 -1
  24. data/lib/types/private/types/type_alias.rb +31 -0
  25. data/lib/types/private/types/void.rb +4 -3
  26. data/lib/types/profile.rb +5 -1
  27. data/lib/types/props/_props.rb +3 -7
  28. data/lib/types/props/constructor.rb +29 -9
  29. data/lib/types/props/custom_type.rb +51 -27
  30. data/lib/types/props/decorator.rb +248 -405
  31. data/lib/types/props/generated_code_validation.rb +268 -0
  32. data/lib/types/props/has_lazily_specialized_methods.rb +92 -0
  33. data/lib/types/props/optional.rb +37 -41
  34. data/lib/types/props/plugin.rb +23 -1
  35. data/lib/types/props/pretty_printable.rb +3 -3
  36. data/lib/types/props/private/apply_default.rb +170 -0
  37. data/lib/types/props/private/deserializer_generator.rb +165 -0
  38. data/lib/types/props/private/parser.rb +32 -0
  39. data/lib/types/props/private/serde_transform.rb +186 -0
  40. data/lib/types/props/private/serializer_generator.rb +77 -0
  41. data/lib/types/props/private/setter_factory.rb +139 -0
  42. data/lib/types/props/serializable.rb +137 -192
  43. data/lib/types/props/type_validation.rb +19 -6
  44. data/lib/types/props/utils.rb +3 -7
  45. data/lib/types/props/weak_constructor.rb +51 -14
  46. data/lib/types/sig.rb +6 -6
  47. data/lib/types/types/attached_class.rb +37 -0
  48. data/lib/types/types/base.rb +26 -2
  49. data/lib/types/types/fixed_array.rb +28 -2
  50. data/lib/types/types/fixed_hash.rb +11 -10
  51. data/lib/types/types/intersection.rb +6 -0
  52. data/lib/types/types/noreturn.rb +4 -0
  53. data/lib/types/types/self_type.rb +4 -0
  54. data/lib/types/types/simple.rb +22 -1
  55. data/lib/types/types/t_enum.rb +38 -0
  56. data/lib/types/types/type_parameter.rb +1 -1
  57. data/lib/types/types/type_variable.rb +1 -1
  58. data/lib/types/types/typed_array.rb +7 -2
  59. data/lib/types/types/typed_enumerable.rb +28 -17
  60. data/lib/types/types/typed_enumerator.rb +7 -2
  61. data/lib/types/types/typed_hash.rb +8 -3
  62. data/lib/types/types/typed_range.rb +7 -2
  63. data/lib/types/types/typed_set.rb +7 -2
  64. data/lib/types/types/union.rb +37 -5
  65. data/lib/types/types/untyped.rb +4 -0
  66. data/lib/types/utils.rb +43 -11
  67. metadata +103 -11
  68. data/lib/types/private/error_handler.rb +0 -0
  69. data/lib/types/runtime_profiled.rb +0 -24
  70. data/lib/types/types/opus_enum.rb +0 -33
@@ -17,7 +17,7 @@ module T::Types
17
17
  end
18
18
 
19
19
  def name
20
- "T.type_parameter(#{@name})"
20
+ "T.type_parameter(:#{@name})"
21
21
  end
22
22
  end
23
23
  end
@@ -7,7 +7,7 @@ module T::Types
7
7
  class TypeVariable < Base
8
8
  attr_reader :variance
9
9
 
10
- VALID_VARIANCES = [:in, :out, :invariant]
10
+ VALID_VARIANCES = %i[in out invariant].freeze
11
11
 
12
12
  def initialize(variance)
13
13
  if !VALID_VARIANCES.include?(variance)
@@ -13,11 +13,16 @@ module T::Types
13
13
  end
14
14
 
15
15
  # @override Base
16
- def valid?(obj)
16
+ def recursively_valid?(obj)
17
17
  obj.is_a?(Array) && super
18
18
  end
19
19
 
20
- def new(*args) # rubocop:disable PrisonGuard/BanBuiltinMethodOverride
20
+ # @override Base
21
+ def valid?(obj)
22
+ obj.is_a?(Array)
23
+ end
24
+
25
+ def new(*args)
21
26
  Array.new(*T.unsafe(args))
22
27
  end
23
28
 
@@ -23,16 +23,21 @@ module T::Types
23
23
 
24
24
  # @override Base
25
25
  def valid?(obj)
26
+ obj.is_a?(Enumerable)
27
+ end
28
+
29
+ # @override Base
30
+ def recursively_valid?(obj)
26
31
  return false unless obj.is_a?(Enumerable)
27
32
  case obj
28
33
  when Array
29
34
  begin
30
35
  it = 0
31
36
  while it < obj.count
32
- return false unless @type.valid?(obj[it])
37
+ return false unless @type.recursively_valid?(obj[it])
33
38
  it += 1
34
39
  end
35
- return true
40
+ true
36
41
  end
37
42
  when Hash
38
43
  return false unless @type.is_a?(FixedArray)
@@ -42,26 +47,25 @@ module T::Types
42
47
  value_type = types[1]
43
48
  obj.each_pair do |key, val|
44
49
  # Some objects (I'm looking at you Rack::Utils::HeaderHash) don't
45
- # iterate over a [key, value] array, so we can't juse use the @type.valid?(v)
46
- return false if !key_type.valid?(key) || !value_type.valid?(val)
50
+ # iterate over a [key, value] array, so we can't juse use the @type.recursively_valid?(v)
51
+ return false if !key_type.recursively_valid?(key) || !value_type.recursively_valid?(val)
47
52
  end
48
- return true
49
- when Enumerator::Lazy
50
- # Users don't want these walked
51
- return true
53
+ true
52
54
  when Enumerator
53
- obj.each do |elem|
54
- return false unless @type.valid?(elem)
55
- end
56
- return true
55
+ # Enumerators can be unbounded: see `[:foo, :bar].cycle`
56
+ true
57
57
  when Range
58
- @type.valid?(obj.first) && @type.valid?(obj.last)
58
+ # A nil beginning or a nil end does not provide any type information. That is, nil in a range represents
59
+ # boundlessness, it does not express a type. For example `(nil...nil)` is not a T::Range[NilClass], its a range
60
+ # of unknown types (T::Range[T.untyped]).
61
+ # Similarly, `(nil...1)` is not a `T::Range[T.nilable(Integer)]`, it's a boundless range of Integer.
62
+ (obj.begin.nil? || @type.recursively_valid?(obj.begin)) && (obj.end.nil? || @type.recursively_valid?(obj.end))
59
63
  when Set
60
64
  obj.each do |item|
61
- return false unless @type.valid?(item)
65
+ return false unless @type.recursively_valid?(item)
62
66
  end
63
67
 
64
- return true
68
+ true
65
69
  else
66
70
  # We don't check the enumerable since it isn't guaranteed to be
67
71
  # rewindable (e.g. STDIN) and it may be expensive to enumerate
@@ -129,7 +133,13 @@ module T::Types
129
133
  inferred_val = type_from_instances(obj.values)
130
134
  T::Hash[inferred_key, inferred_val]
131
135
  when Range
132
- T::Range[type_from_instances([obj.first, obj.last])]
136
+ # We can't get any information from `NilClass` in ranges (since nil is used to represent boundlessness).
137
+ typeable_objects = [obj.begin, obj.end].compact
138
+ if typeable_objects.empty?
139
+ T::Range[T.untyped]
140
+ else
141
+ T::Range[type_from_instances(typeable_objects)]
142
+ end
133
143
  when Enumerator
134
144
  T::Enumerator[type_from_instances(obj)]
135
145
  when Set
@@ -139,7 +149,8 @@ module T::Types
139
149
  # enumerating the object is a destructive operation and might hang.
140
150
  obj.class
141
151
  else
142
- self.class.new(type_from_instances(obj))
152
+ # This is a specialized enumerable type, just return the class.
153
+ Object.instance_method(:class).bind(obj).call
143
154
  end
144
155
  end
145
156
 
@@ -15,11 +15,16 @@ module T::Types
15
15
  end
16
16
 
17
17
  # @override Base
18
- def valid?(obj)
18
+ def recursively_valid?(obj)
19
19
  obj.is_a?(Enumerator) && super
20
20
  end
21
21
 
22
- def new(*args, &blk) # rubocop:disable PrisonGuard/BanBuiltinMethodOverride
22
+ # @override Base
23
+ def valid?(obj)
24
+ obj.is_a?(Enumerator)
25
+ end
26
+
27
+ def new(*args, &blk)
23
28
  T.unsafe(Enumerator).new(*args, &blk)
24
29
  end
25
30
 
@@ -22,12 +22,17 @@ module T::Types
22
22
  end
23
23
 
24
24
  # @override Base
25
- def valid?(obj)
25
+ def recursively_valid?(obj)
26
26
  obj.is_a?(Hash) && super
27
27
  end
28
28
 
29
- def new(*args, &blk) # rubocop:disable PrisonGuard/BanBuiltinMethodOverride
30
- Hash.new(*T.unsafe(args), &blk) # rubocop:disable PrisonGuard/RestrictHashDefaults
29
+ # @override Base
30
+ def valid?(obj)
31
+ obj.is_a?(Hash)
32
+ end
33
+
34
+ def new(*args, &blk)
35
+ Hash.new(*T.unsafe(args), &blk)
31
36
  end
32
37
 
33
38
  class Untyped < TypedHash
@@ -15,11 +15,16 @@ module T::Types
15
15
  end
16
16
 
17
17
  # @override Base
18
- def valid?(obj)
18
+ def recursively_valid?(obj)
19
19
  obj.is_a?(Range) && super
20
20
  end
21
21
 
22
- def new(*args) # rubocop:disable PrisonGuard/BanBuiltinMethodOverride
22
+ # @override Base
23
+ def valid?(obj)
24
+ obj.is_a?(Range)
25
+ end
26
+
27
+ def new(*args)
23
28
  T.unsafe(Range).new(*args)
24
29
  end
25
30
  end
@@ -15,11 +15,16 @@ module T::Types
15
15
  end
16
16
 
17
17
  # @override Base
18
- def valid?(obj)
18
+ def recursively_valid?(obj)
19
19
  obj.is_a?(Set) && super
20
20
  end
21
21
 
22
- def new(*args) # rubocop:disable PrisonGuard/BanBuiltinMethodOverride
22
+ # @override Base
23
+ def valid?(obj)
24
+ obj.is_a?(Set)
25
+ end
26
+
27
+ def new(*args)
23
28
  Set.new(*T.unsafe(args))
24
29
  end
25
30
 
@@ -8,6 +8,7 @@ module T::Types
8
8
 
9
9
  def initialize(types)
10
10
  @types = types.flat_map do |type|
11
+ type = T::Utils.resolve_alias(type)
11
12
  if type.is_a?(Union)
12
13
  # Simplify nested unions (mostly so `name` returns a nicer value)
13
14
  type.types
@@ -42,12 +43,13 @@ module T::Types
42
43
  end
43
44
 
44
45
  # @override Base
45
- def valid?(obj)
46
- @types.each do |type|
47
- return true if type.valid?(obj)
48
- end
46
+ def recursively_valid?(obj)
47
+ @types.any? {|type| type.recursively_valid?(obj)}
48
+ end
49
49
 
50
- false
50
+ # @override Base
51
+ def valid?(obj)
52
+ @types.any? {|type| type.valid?(obj)}
51
53
  end
52
54
 
53
55
  # @override Base
@@ -55,5 +57,35 @@ module T::Types
55
57
  raise "This should never be reached if you're going through `subtype_of?` (and you should be)"
56
58
  end
57
59
 
60
+ module Private
61
+ module Pool
62
+ EMPTY_ARRAY = [].freeze
63
+ private_constant :EMPTY_ARRAY
64
+
65
+ # @param type_a [T::Types::Base]
66
+ # @param type_b [T::Types::Base]
67
+ # @param types [Array] optional array of additional T::Types::Base instances
68
+ def self.union_of_types(type_a, type_b, types=EMPTY_ARRAY)
69
+ if types.empty?
70
+ # We aren't guaranteed to detect a simple `T.nilable(<Module>)` type here
71
+ # in cases where there are duplicate types, nested unions, etc.
72
+ #
73
+ # That's ok, because this is an optimization which isn't necessary for
74
+ # correctness.
75
+ if type_b == T::Utils::Nilable::NIL_TYPE && type_a.is_a?(T::Types::Simple)
76
+ type_a.to_nilable
77
+ elsif type_a == T::Utils::Nilable::NIL_TYPE && type_b.is_a?(T::Types::Simple)
78
+ type_b.to_nilable
79
+ else
80
+ Union.new([type_a, type_b])
81
+ end
82
+ else
83
+ # This can't be a `T.nilable(<Module>)` case unless there are duplicates,
84
+ # which is possible but unexpected.
85
+ Union.new([type_a, type_b] + types)
86
+ end
87
+ end
88
+ end
89
+ end
58
90
  end
59
91
  end
@@ -21,5 +21,9 @@ module T::Types
21
21
  private def subtype_of_single?(other)
22
22
  true
23
23
  end
24
+
25
+ module Private
26
+ INSTANCE = Untyped.new.freeze
27
+ end
24
28
  end
25
29
  end
@@ -4,7 +4,9 @@
4
4
  module T::Utils
5
5
  # Used to convert from a type specification to a `T::Types::Base`.
6
6
  def self.coerce(val)
7
- if val.is_a?(T::Types::Base)
7
+ if val.is_a?(T::Private::Types::TypeAlias)
8
+ val.aliased_type
9
+ elsif val.is_a?(T::Types::Base)
8
10
  val
9
11
  elsif val == ::Array
10
12
  T::Array[T.untyped]
@@ -19,15 +21,18 @@ module T::Utils
19
21
  elsif val == ::Range
20
22
  T::Range[T.untyped]
21
23
  elsif val.is_a?(Module)
22
- T::Types::Simple.new(val) # rubocop:disable PrisonGuard/UseOpusTypesShortcut
24
+ T::Types::Simple::Private::Pool.type_for_module(val)
23
25
  elsif val.is_a?(::Array)
24
- T::Types::FixedArray.new(val) # rubocop:disable PrisonGuard/UseOpusTypesShortcut
26
+ T::Types::FixedArray.new(val)
25
27
  elsif val.is_a?(::Hash)
26
- T::Types::FixedHash.new(val) # rubocop:disable PrisonGuard/UseOpusTypesShortcut
28
+ T::Types::FixedHash.new(val)
27
29
  elsif val.is_a?(T::Private::Methods::DeclBuilder)
28
30
  T::Private::Methods.finalize_proc(val.decl)
29
- elsif defined?(::Opus) && defined?(::Opus::Enum) && val.is_a?(::Opus::Enum)
30
- T::Types::OpusEnum.new(val) # rubocop:disable PrisonGuard/UseOpusTypesShortcut
31
+ elsif val.is_a?(::T::Enum)
32
+ T::Types::TEnum.new(val)
33
+ elsif val.is_a?(::String)
34
+ raise "Invalid String literal for type constraint. Must be an #{T::Types::Base}, a " \
35
+ "class/module, or an array. Got a String with value `#{val}`."
31
36
  else
32
37
  raise "Invalid value for type constraint. Must be an #{T::Types::Base}, a " \
33
38
  "class/module, or an array. Got a `#{val.class}`."
@@ -76,12 +81,22 @@ module T::Utils
76
81
  T::Private::Methods.run_all_sig_blocks
77
82
  end
78
83
 
84
+ # Return the underlying type for a type alias. Otherwise returns type.
85
+ def self.resolve_alias(type)
86
+ case type
87
+ when T::Private::Types::TypeAlias
88
+ type.aliased_type
89
+ else
90
+ type
91
+ end
92
+ end
93
+
79
94
  # Give a type which is a subclass of T::Types::Base, determines if the type is a simple nilable type (union of NilClass and something else).
80
95
  # If so, returns the T::Types::Base of the something else. Otherwise, returns nil.
81
96
  def self.unwrap_nilable(type)
82
97
  case type
83
98
  when T::Types::Union
84
- non_nil_types = type.types.reject {|t| t == T::Utils.coerce(NilClass)}
99
+ non_nil_types = type.types.reject {|t| t == Nilable::NIL_TYPE}
85
100
  if non_nil_types.length == 1
86
101
  non_nil_types.first
87
102
  else
@@ -94,10 +109,10 @@ module T::Utils
94
109
 
95
110
  # Returns the arity of a method, unwrapping the sig if needed
96
111
  def self.arity(method)
97
- arity = method.arity # rubocop:disable PrisonGuard/NoArity
112
+ arity = method.arity
98
113
  return arity if arity != -1 || method.is_a?(Proc)
99
114
  sig = T::Private::Methods.signature_for_method(method)
100
- sig ? sig.method.arity : arity # rubocop:disable PrisonGuard/NoArity
115
+ sig ? sig.method.arity : arity
101
116
  end
102
117
 
103
118
  # Elide the middle of a string as needed and replace it with an ellipsis.
@@ -136,15 +151,32 @@ module T::Utils
136
151
  "#{start_part}#{ellipsis}#{end_part}"
137
152
  end
138
153
 
154
+ def self.lift_enum(enum)
155
+ unless enum.is_a?(T::Types::Enum)
156
+ raise ArgumentError.new("#{enum.inspect} is not a T.enum")
157
+ end
158
+
159
+ classes = enum.values.map(&:class).uniq
160
+ if classes.empty?
161
+ T.untyped
162
+ elsif classes.length > 1
163
+ T::Types::Union.new(classes)
164
+ else
165
+ T::Types::Simple::Private::Pool.type_for_module(classes.first)
166
+ end
167
+ end
168
+
139
169
  module Nilable
140
170
  # :is_union_type, T::Boolean: whether the type is an T::Types::Union type
141
171
  # :non_nilable_type, Class: if it is an T.nilable type, the corresponding underlying type; otherwise, nil.
142
172
  TypeInfo = Struct.new(:is_union_type, :non_nilable_type)
143
173
 
174
+ NIL_TYPE = T::Utils.coerce(NilClass)
175
+
144
176
  def self.get_type_info(prop_type)
145
177
  if prop_type.is_a?(T::Types::Union)
146
178
  non_nilable_type = T::Utils.unwrap_nilable(prop_type)
147
- if non_nilable_type && non_nilable_type.is_a?(T::Types::Simple)
179
+ if non_nilable_type&.is_a?(T::Types::Simple)
148
180
  non_nilable_type = non_nilable_type.raw_type
149
181
  end
150
182
  TypeInfo.new(true, non_nilable_type)
@@ -176,7 +208,7 @@ module T::Utils
176
208
  def self.is_union_with_nilclass(prop_type)
177
209
  case prop_type
178
210
  when T::Types::Union
179
- prop_type.types.any? {|t| t == T::Utils.coerce(NilClass)}
211
+ prop_type.types.include?(NIL_TYPE)
180
212
  else
181
213
  false
182
214
  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.4.4667
4
+ version: 0.5.6189
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stripe
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-08-20 00:00:00.000000000 Z
11
+ date: 2020-12-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest
@@ -52,6 +52,34 @@ dependencies:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rubocop
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 0.90.0
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 0.90.0
69
+ - !ruby/object:Gem::Dependency
70
+ name: rubocop-performance
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 1.8.0
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 1.8.0
55
83
  - !ruby/object:Gem::Dependency
56
84
  name: concurrent-ruby
57
85
  requirement: !ruby/object:Gem::Requirement
@@ -66,6 +94,62 @@ dependencies:
66
94
  - - "~>"
67
95
  - !ruby/object:Gem::Version
68
96
  version: 1.1.5
97
+ - !ruby/object:Gem::Dependency
98
+ name: pry
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: pry-byebug
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: parser
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: 2.7.1
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: 2.7.1
139
+ - !ruby/object:Gem::Dependency
140
+ name: subprocess
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: 1.5.3
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: 1.5.3
69
153
  description: Sorbet's runtime type checking component
70
154
  email:
71
155
  executables: []
@@ -78,9 +162,11 @@ files:
78
162
  - lib/types/boolean.rb
79
163
  - lib/types/compatibility_patches.rb
80
164
  - lib/types/configuration.rb
165
+ - lib/types/enum.rb
81
166
  - lib/types/generic.rb
82
167
  - lib/types/helpers.rb
83
168
  - lib/types/interface_wrapper.rb
169
+ - lib/types/non_forcing_constants.rb
84
170
  - lib/types/private/abstract/data.rb
85
171
  - lib/types/private/abstract/declare.rb
86
172
  - lib/types/private/abstract/hooks.rb
@@ -88,7 +174,6 @@ files:
88
174
  - lib/types/private/casts.rb
89
175
  - lib/types/private/class_utils.rb
90
176
  - lib/types/private/decl_state.rb
91
- - lib/types/private/error_handler.rb
92
177
  - lib/types/private/final.rb
93
178
  - lib/types/private/methods/_methods.rb
94
179
  - lib/types/private/methods/call_validation.rb
@@ -97,10 +182,12 @@ files:
97
182
  - lib/types/private/methods/signature.rb
98
183
  - lib/types/private/methods/signature_validation.rb
99
184
  - lib/types/private/mixins/mixins.rb
185
+ - lib/types/private/retry.rb
100
186
  - lib/types/private/runtime_levels.rb
101
187
  - lib/types/private/sealed.rb
102
188
  - lib/types/private/types/not_typed.rb
103
189
  - lib/types/private/types/string_holder.rb
190
+ - lib/types/private/types/type_alias.rb
104
191
  - lib/types/private/types/void.rb
105
192
  - lib/types/profile.rb
106
193
  - lib/types/props/_props.rb
@@ -108,16 +195,24 @@ files:
108
195
  - lib/types/props/custom_type.rb
109
196
  - lib/types/props/decorator.rb
110
197
  - lib/types/props/errors.rb
198
+ - lib/types/props/generated_code_validation.rb
199
+ - lib/types/props/has_lazily_specialized_methods.rb
111
200
  - lib/types/props/optional.rb
112
201
  - lib/types/props/plugin.rb
113
202
  - lib/types/props/pretty_printable.rb
203
+ - lib/types/props/private/apply_default.rb
204
+ - lib/types/props/private/deserializer_generator.rb
205
+ - lib/types/props/private/parser.rb
206
+ - lib/types/props/private/serde_transform.rb
207
+ - lib/types/props/private/serializer_generator.rb
208
+ - lib/types/props/private/setter_factory.rb
114
209
  - lib/types/props/serializable.rb
115
210
  - lib/types/props/type_validation.rb
116
211
  - lib/types/props/utils.rb
117
212
  - lib/types/props/weak_constructor.rb
118
- - lib/types/runtime_profiled.rb
119
213
  - lib/types/sig.rb
120
214
  - lib/types/struct.rb
215
+ - lib/types/types/attached_class.rb
121
216
  - lib/types/types/base.rb
122
217
  - lib/types/types/class_of.rb
123
218
  - lib/types/types/enum.rb
@@ -125,10 +220,10 @@ files:
125
220
  - lib/types/types/fixed_hash.rb
126
221
  - lib/types/types/intersection.rb
127
222
  - lib/types/types/noreturn.rb
128
- - lib/types/types/opus_enum.rb
129
223
  - lib/types/types/proc.rb
130
224
  - lib/types/types/self_type.rb
131
225
  - lib/types/types/simple.rb
226
+ - lib/types/types/t_enum.rb
132
227
  - lib/types/types/type_member.rb
133
228
  - lib/types/types/type_parameter.rb
134
229
  - lib/types/types/type_template.rb
@@ -145,7 +240,8 @@ files:
145
240
  homepage: https://sorbet.run
146
241
  licenses:
147
242
  - Apache-2.0
148
- metadata: {}
243
+ metadata:
244
+ source_code_uri: https://github.com/sorbet/sorbet
149
245
  post_install_message:
150
246
  rdoc_options: []
151
247
  require_paths:
@@ -155,17 +251,13 @@ required_ruby_version: !ruby/object:Gem::Requirement
155
251
  - - ">="
156
252
  - !ruby/object:Gem::Version
157
253
  version: 2.3.0
158
- - - "<"
159
- - !ruby/object:Gem::Version
160
- version: 2.7.0.preview1
161
254
  required_rubygems_version: !ruby/object:Gem::Requirement
162
255
  requirements:
163
256
  - - ">="
164
257
  - !ruby/object:Gem::Version
165
258
  version: '0'
166
259
  requirements: []
167
- rubyforge_project:
168
- rubygems_version: 2.6.14
260
+ rubygems_version: 3.0.3
169
261
  signing_key:
170
262
  specification_version: 4
171
263
  summary: Sorbet runtime