sorbet-runtime 0.5.12164 → 0.5.12167

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.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/lib/types/_types.rb +1 -1
  3. data/lib/types/boolean.rb +1 -1
  4. data/lib/types/configuration.rb +4 -4
  5. data/lib/types/enum.rb +35 -35
  6. data/lib/types/non_forcing_constants.rb +1 -1
  7. data/lib/types/private/methods/_methods.rb +3 -3
  8. data/lib/types/private/methods/call_validation.rb +2 -2
  9. data/lib/types/private/methods/signature.rb +8 -8
  10. data/lib/types/private/methods/signature_validation.rb +1 -1
  11. data/lib/types/private/mixins/mixins.rb +1 -1
  12. data/lib/types/private/runtime_levels.rb +1 -1
  13. data/lib/types/private/sealed.rb +4 -4
  14. data/lib/types/props/_props.rb +2 -2
  15. data/lib/types/props/constructor.rb +1 -1
  16. data/lib/types/props/custom_type.rb +5 -5
  17. data/lib/types/props/decorator.rb +23 -23
  18. data/lib/types/props/generated_code_validation.rb +4 -4
  19. data/lib/types/props/has_lazily_specialized_methods.rb +12 -12
  20. data/lib/types/props/optional.rb +2 -2
  21. data/lib/types/props/pretty_printable.rb +3 -3
  22. data/lib/types/props/private/apply_default.rb +15 -15
  23. data/lib/types/props/private/deserializer_generator.rb +1 -1
  24. data/lib/types/props/private/serde_transform.rb +8 -8
  25. data/lib/types/props/private/serializer_generator.rb +1 -1
  26. data/lib/types/props/private/setter_factory.rb +4 -4
  27. data/lib/types/props/serializable.rb +10 -10
  28. data/lib/types/props/type_validation.rb +5 -5
  29. data/lib/types/props/utils.rb +1 -1
  30. data/lib/types/props/weak_constructor.rb +3 -3
  31. data/lib/types/sig.rb +2 -2
  32. data/lib/types/struct.rb +2 -2
  33. data/lib/types/types/base.rb +6 -6
  34. data/lib/types/types/fixed_array.rb +1 -1
  35. data/lib/types/types/fixed_hash.rb +6 -6
  36. data/lib/types/types/intersection.rb +2 -2
  37. data/lib/types/types/union.rb +7 -7
  38. metadata +2 -2
@@ -10,17 +10,17 @@
10
10
  class T::Props::Decorator
11
11
  extend T::Sig
12
12
 
13
- Rules = T.type_alias {T::Hash[Symbol, T.untyped]}
14
- DecoratedInstance = T.type_alias {Object} # Would be T::Props, but that produces circular reference errors in some circumstances
15
- PropType = T.type_alias {T::Types::Base}
16
- PropTypeOrClass = T.type_alias {T.any(PropType, Module)}
13
+ Rules = T.type_alias { T::Hash[Symbol, T.untyped] }
14
+ DecoratedInstance = T.type_alias { Object } # Would be T::Props, but that produces circular reference errors in some circumstances
15
+ PropType = T.type_alias { T::Types::Base }
16
+ PropTypeOrClass = T.type_alias { T.any(PropType, Module) }
17
17
 
18
18
  class NoRulesError < StandardError; end
19
19
 
20
20
  EMPTY_PROPS = T.let({}.freeze, T::Hash[Symbol, Rules], checked: false)
21
21
  private_constant :EMPTY_PROPS
22
22
 
23
- sig {params(klass: T.untyped).void.checked(:never)}
23
+ sig { params(klass: T.untyped).void.checked(:never) }
24
24
  def initialize(klass)
25
25
  @class = T.let(klass, T.all(Module, T::Props::ClassMethods))
26
26
  @class.plugins.each do |mod|
@@ -30,22 +30,22 @@ class T::Props::Decorator
30
30
  end
31
31
 
32
32
  # checked(:never) - O(prop accesses)
33
- sig {returns(T::Hash[Symbol, Rules]).checked(:never)}
33
+ sig { returns(T::Hash[Symbol, Rules]).checked(:never) }
34
34
  attr_reader :props
35
35
 
36
- sig {returns(T::Array[Symbol])}
36
+ sig { returns(T::Array[Symbol]) }
37
37
  def all_props
38
38
  props.keys
39
39
  end
40
40
 
41
41
  # checked(:never) - O(prop accesses)
42
- sig {params(prop: T.any(Symbol, String)).returns(Rules).checked(:never)}
42
+ sig { params(prop: T.any(Symbol, String)).returns(Rules).checked(:never) }
43
43
  def prop_rules(prop)
44
44
  props[prop.to_sym] || raise("No such prop: #{prop.inspect}")
45
45
  end
46
46
 
47
47
  # checked(:never) - Rules hash is expensive to check
48
- sig {params(prop: Symbol, rules: Rules).void.checked(:never)}
48
+ sig { params(prop: Symbol, rules: Rules).void.checked(:never) }
49
49
  def add_prop_definition(prop, rules)
50
50
  override = rules.delete(:override)
51
51
 
@@ -79,16 +79,16 @@ class T::Props::Decorator
79
79
  extra
80
80
  setter_validate
81
81
  _tnilable
82
- ].to_h {|k| [k, true]}.freeze, T::Hash[Symbol, T::Boolean], checked: false)
82
+ ].to_h { |k| [k, true] }.freeze, T::Hash[Symbol, T::Boolean], checked: false)
83
83
  private_constant :VALID_RULE_KEYS
84
84
 
85
- sig {params(key: Symbol).returns(T::Boolean).checked(:never)}
85
+ sig { params(key: Symbol).returns(T::Boolean).checked(:never) }
86
86
  def valid_rule_key?(key)
87
87
  !!VALID_RULE_KEYS[key]
88
88
  end
89
89
 
90
90
  # checked(:never) - O(prop accesses)
91
- sig {returns(T.all(Module, T::Props::ClassMethods)).checked(:never)}
91
+ sig { returns(T.all(Module, T::Props::ClassMethods)).checked(:never) }
92
92
  def decorated_class
93
93
  @class
94
94
  end
@@ -98,7 +98,7 @@ class T::Props::Decorator
98
98
  # Use this to validate that a value will validate for a given prop. Useful for knowing whether a value can be set on a model without setting it.
99
99
  #
100
100
  # checked(:never) - potentially O(prop accesses) depending on usage pattern
101
- sig {params(prop: Symbol, val: T.untyped).void.checked(:never)}
101
+ sig { params(prop: Symbol, val: T.untyped).void.checked(:never) }
102
102
  def validate_prop_value(prop, val)
103
103
  prop_rules(prop).fetch(:value_validate_proc).call(val)
104
104
  end
@@ -202,7 +202,7 @@ class T::Props::Decorator
202
202
  end
203
203
 
204
204
  # TODO: we should really be checking all the methods on `cls`, not just Object
205
- BANNED_METHOD_NAMES = T.let(Object.instance_methods.each_with_object({}) {|x, acc| acc[x] = true}.freeze, T::Hash[Symbol, TrueClass], checked: false)
205
+ BANNED_METHOD_NAMES = T.let(Object.instance_methods.each_with_object({}) { |x, acc| acc[x] = true }.freeze, T::Hash[Symbol, TrueClass], checked: false)
206
206
 
207
207
  # checked(:never) - Rules hash is expensive to check
208
208
  sig do
@@ -223,7 +223,7 @@ class T::Props::Decorator
223
223
  "to 'sensitivity:' (in prop #{@class.name}.#{name})")
224
224
  end
225
225
 
226
- if rules.keys.any? {|k| !valid_rule_key?(k)}
226
+ if rules.keys.any? { |k| !valid_rule_key?(k) }
227
227
  raise ArgumentError.new("At least one invalid prop arg supplied in #{self}: #{rules.keys.inspect}")
228
228
  end
229
229
 
@@ -247,7 +247,7 @@ class T::Props::Decorator
247
247
  SAFE_NAME = T.let(/\A[A-Za-z_][A-Za-z0-9_-]*\z/.freeze, Regexp, checked: false)
248
248
 
249
249
  # Used to validate both prop names and serialized forms
250
- sig {params(name: T.any(Symbol, String)).void.checked(:never)}
250
+ sig { params(name: T.any(Symbol, String)).void.checked(:never) }
251
251
  private def validate_prop_name(name)
252
252
  if !name.match?(SAFE_NAME)
253
253
  raise ArgumentError.new("Invalid prop name in #{@class.name}: #{name}")
@@ -255,7 +255,7 @@ class T::Props::Decorator
255
255
  end
256
256
 
257
257
  # This converts the type from a T::Type to a regular old ruby class.
258
- sig {params(type: T::Types::Base).returns(Module).checked(:never)}
258
+ sig { params(type: T::Types::Base).returns(Module).checked(:never) }
259
259
  private def convert_type_to_class(type)
260
260
  case type
261
261
  when T::Types::TypedArray, T::Types::FixedArray
@@ -392,7 +392,7 @@ class T::Props::Decorator
392
392
  end
393
393
 
394
394
  # checked(:never) - Rules hash is expensive to check
395
- sig {params(name: Symbol, rules: Rules).void.checked(:never)}
395
+ sig { params(name: Symbol, rules: Rules).void.checked(:never) }
396
396
  private def define_getter_and_setter(name, rules)
397
397
  T::Configuration.without_ruby_warnings do
398
398
  if !rules[:immutable]
@@ -440,7 +440,7 @@ class T::Props::Decorator
440
440
  end
441
441
 
442
442
  # checked(:never) - Rules hash is expensive to check
443
- sig {params(prop_name: Symbol, rules: Rules).void.checked(:never)}
443
+ sig { params(prop_name: Symbol, rules: Rules).void.checked(:never) }
444
444
  private def validate_not_missing_sensitivity(prop_name, rules)
445
445
  if rules[:sensitivity].nil?
446
446
  if rules[:redaction]
@@ -612,7 +612,7 @@ class T::Props::Decorator
612
612
  #
613
613
  # This gets called when a module or class that extends T::Props gets included, extended,
614
614
  # prepended, or inherited.
615
- sig {params(child: Module).void.checked(:never)}
615
+ sig { params(child: Module).void.checked(:never) }
616
616
  def model_inherited(child)
617
617
  child.extend(T::Props::ClassMethods)
618
618
  child = T.cast(child, T.all(Module, T::Props::ClassMethods))
@@ -656,19 +656,19 @@ class T::Props::Decorator
656
656
  end
657
657
  end
658
658
 
659
- sig {params(child: T.all(Module, T::Props::ClassMethods), prop: Symbol).returns(T::Boolean).checked(:never)}
659
+ sig { params(child: T.all(Module, T::Props::ClassMethods), prop: Symbol).returns(T::Boolean).checked(:never) }
660
660
  private def clobber_getter?(child, prop)
661
661
  !!(child.decorator.method(:prop_get).owner != method(:prop_get).owner &&
662
662
  child.instance_method(prop).source_location&.first == __FILE__)
663
663
  end
664
664
 
665
- sig {params(child: T.all(Module, T::Props::ClassMethods), prop: Symbol).returns(T::Boolean).checked(:never)}
665
+ sig { params(child: T.all(Module, T::Props::ClassMethods), prop: Symbol).returns(T::Boolean).checked(:never) }
666
666
  private def clobber_setter?(child, prop)
667
667
  !!(child.decorator.method(:prop_set).owner != method(:prop_set).owner &&
668
668
  child.instance_method("#{prop}=").source_location&.first == __FILE__)
669
669
  end
670
670
 
671
- sig {params(mod: Module).void.checked(:never)}
671
+ sig { params(mod: Module).void.checked(:never) }
672
672
  def plugin(mod)
673
673
  decorated_class.plugins << mod
674
674
  T::Props::Plugin::Private.apply_class_methods(mod, decorated_class)
@@ -159,7 +159,7 @@ module T::Props
159
159
  assert_equal(:resbody, rescue_body.type)
160
160
  exceptions, assignment, handler = rescue_body.children
161
161
  assert_equal(:array, exceptions.type)
162
- exceptions.children.each {|c| assert_equal(:const, c.type)}
162
+ exceptions.children.each { |c| assert_equal(:const, c.type) }
163
163
  assert_equal(:lvasgn, assignment.type)
164
164
  assert_equal([:e], assignment.children)
165
165
 
@@ -169,7 +169,7 @@ module T::Props
169
169
  receiver, method, *args = deserialization_error.children
170
170
  assert_equal(nil, receiver)
171
171
  assert_equal(:raise_deserialization_error, method)
172
- args.each {|a| validate_lack_of_side_effects(a, whitelisted_methods_for_deserialize)}
172
+ args.each { |a| validate_lack_of_side_effects(a, whitelisted_methods_for_deserialize) }
173
173
 
174
174
  validate_lack_of_side_effects(val_return, whitelisted_methods_for_deserialize)
175
175
  else
@@ -222,12 +222,12 @@ module T::Props
222
222
  # Primitives & self are ok
223
223
  when :lvar, :arg, :ivar
224
224
  # Reading local & instance variables & arguments is ok
225
- unless node.children.all? {|c| c.is_a?(Symbol)}
225
+ unless node.children.all? { |c| c.is_a?(Symbol) }
226
226
  raise ValidationError.new("Unexpected child for #{node.type}: #{node.inspect}")
227
227
  end
228
228
  when :args, :mlhs, :block, :begin, :if
229
229
  # Blocks etc are read-only if their contents are read-only
230
- node.children.each {|c| validate_lack_of_side_effects(c, whitelisted_methods_by_receiver_type) if c}
230
+ node.children.each { |c| validate_lack_of_side_effects(c, whitelisted_methods_by_receiver_type) if c }
231
231
  when :send
232
232
  # Sends are riskier so check a whitelist
233
233
  receiver, method, *args = node.children
@@ -30,12 +30,12 @@ module T::Props
30
30
  #
31
31
  # Note it does _not_ prevent explicit calls to `eagerly_define_lazy_methods!`
32
32
  # from working.
33
- sig {void}
33
+ sig { void }
34
34
  def self.disable_lazy_evaluation!
35
35
  @lazy_evaluation_disabled ||= true
36
36
  end
37
37
 
38
- sig {returns(T::Boolean)}
38
+ sig { returns(T::Boolean) }
39
39
  def self.lazy_evaluation_enabled?
40
40
  !defined?(@lazy_evaluation_disabled) || !@lazy_evaluation_disabled
41
41
  end
@@ -43,17 +43,17 @@ module T::Props
43
43
  module DecoratorMethods
44
44
  extend T::Sig
45
45
 
46
- sig {returns(T::Hash[Symbol, T.proc.returns(String)]).checked(:never)}
46
+ sig { returns(T::Hash[Symbol, T.proc.returns(String)]).checked(:never) }
47
47
  private def lazily_defined_methods
48
48
  @lazily_defined_methods ||= {}
49
49
  end
50
50
 
51
- sig {returns(T::Hash[Symbol, T.untyped]).checked(:never)}
51
+ sig { returns(T::Hash[Symbol, T.untyped]).checked(:never) }
52
52
  private def lazily_defined_vm_methods
53
53
  @lazily_defined_vm_methods ||= {}
54
54
  end
55
55
 
56
- sig {params(name: Symbol).void}
56
+ sig { params(name: Symbol).void }
57
57
  private def eval_lazily_defined_method!(name)
58
58
  if !HasLazilySpecializedMethods.lazy_evaluation_enabled?
59
59
  raise SourceEvaluationDisabled.new
@@ -68,7 +68,7 @@ module T::Props
68
68
  cls.send(:private, name)
69
69
  end
70
70
 
71
- sig {params(name: Symbol).void}
71
+ sig { params(name: Symbol).void }
72
72
  private def eval_lazily_defined_vm_method!(name)
73
73
  if !HasLazilySpecializedMethods.lazy_evaluation_enabled?
74
74
  raise SourceEvaluationDisabled.new
@@ -80,7 +80,7 @@ module T::Props
80
80
  cls.send(:private, name)
81
81
  end
82
82
 
83
- sig {params(name: Symbol, blk: T.proc.returns(String)).void}
83
+ sig { params(name: Symbol, blk: T.proc.returns(String)).void }
84
84
  private def enqueue_lazy_method_definition!(name, &blk)
85
85
  lazily_defined_methods[name] = blk
86
86
 
@@ -100,7 +100,7 @@ module T::Props
100
100
  cls.send(:private, name)
101
101
  end
102
102
 
103
- sig {params(name: Symbol, blk: T.untyped).void}
103
+ sig { params(name: Symbol, blk: T.untyped).void }
104
104
  private def enqueue_lazy_vm_method_definition!(name, &blk)
105
105
  lazily_defined_vm_methods[name] = blk
106
106
 
@@ -115,7 +115,7 @@ module T::Props
115
115
  cls.send(:private, name)
116
116
  end
117
117
 
118
- sig {void}
118
+ sig { void }
119
119
  def eagerly_define_lazy_methods!
120
120
  return if lazily_defined_methods.empty?
121
121
 
@@ -125,18 +125,18 @@ module T::Props
125
125
 
126
126
  cls = decorated_class
127
127
  cls.class_eval(source)
128
- lazily_defined_methods.each_key {|name| cls.send(:private, name)}
128
+ lazily_defined_methods.each_key { |name| cls.send(:private, name) }
129
129
  lazily_defined_methods.clear
130
130
  end
131
131
 
132
- sig {void}
132
+ sig { void }
133
133
  def eagerly_define_lazy_vm_methods!
134
134
  return if lazily_defined_vm_methods.empty?
135
135
 
136
136
  lazily_defined_vm_methods.values.map(&:call)
137
137
 
138
138
  cls = decorated_class
139
- lazily_defined_vm_methods.each_key {|name| cls.send(:private, name)}
139
+ lazily_defined_vm_methods.each_key { |name| cls.send(:private, name) }
140
140
  lazily_defined_vm_methods.clear
141
141
  end
142
142
  end
@@ -43,11 +43,11 @@ module T::Props::Optional::DecoratorMethods
43
43
  end
44
44
 
45
45
  # checked(:never) - O(runtime object construction)
46
- sig {returns(T::Hash[Symbol, T::Props::Private::ApplyDefault]).checked(:never)}
46
+ sig { returns(T::Hash[Symbol, T::Props::Private::ApplyDefault]).checked(:never) }
47
47
  attr_reader :props_with_defaults
48
48
 
49
49
  # checked(:never) - O(runtime object construction)
50
- sig {returns(T::Hash[Symbol, T::Props::Private::SetterFactory::SetterProc]).checked(:never)}
50
+ sig { returns(T::Hash[Symbol, T::Props::Private::SetterFactory::SetterProc]).checked(:never) }
51
51
  attr_reader :props_without_defaults
52
52
 
53
53
  def add_prop_definition(prop, rules)
@@ -49,21 +49,21 @@ module T::Props::PrettyPrintable
49
49
  module DecoratorMethods
50
50
  extend T::Sig
51
51
 
52
- sig {params(key: Symbol).returns(T::Boolean).checked(:never)}
52
+ sig { params(key: Symbol).returns(T::Boolean).checked(:never) }
53
53
  def valid_rule_key?(key)
54
54
  super || key == :inspect
55
55
  end
56
56
 
57
57
  # Overridable method to specify how the first part of a `pretty_print`d object's class should look like
58
58
  # NOTE: This is just to support Stripe's `PrettyPrintableModel` case, and not recommended to be overridden
59
- sig {params(instance: T::Props::PrettyPrintable).returns(String)}
59
+ sig { params(instance: T::Props::PrettyPrintable).returns(String) }
60
60
  def inspect_class_with_decoration(instance)
61
61
  T.unsafe(instance).class.to_s
62
62
  end
63
63
 
64
64
  # Overridable method to add anything that is not a prop
65
65
  # NOTE: This is to support cases like Serializable's `@_extra_props`, and Stripe's `PrettyPrintableModel#@_deleted`
66
- sig {params(instance: T::Props::PrettyPrintable, pp: T.any(PrettyPrint, PP::SingleLine)).void}
66
+ sig { params(instance: T::Props::PrettyPrintable, pp: T.any(PrettyPrint, PP::SingleLine)).void }
67
67
  def pretty_print_extra(instance, pp); end
68
68
  end
69
69
  end
@@ -9,28 +9,28 @@ module T::Props
9
9
  abstract!
10
10
 
11
11
  # checked(:never) - O(object construction x prop count)
12
- sig {returns(SetterFactory::SetterProc).checked(:never)}
12
+ sig { returns(SetterFactory::SetterProc).checked(:never) }
13
13
  attr_reader :setter_proc
14
14
 
15
15
  # checked(:never) - We do this with `T.let` instead
16
- sig {params(accessor_key: Symbol, setter_proc: SetterFactory::SetterProc).void.checked(:never)}
16
+ sig { params(accessor_key: Symbol, setter_proc: SetterFactory::SetterProc).void.checked(:never) }
17
17
  def initialize(accessor_key, setter_proc)
18
18
  @accessor_key = T.let(accessor_key, Symbol)
19
19
  @setter_proc = T.let(setter_proc, SetterFactory::SetterProc)
20
20
  end
21
21
 
22
22
  # checked(:never) - O(object construction x prop count)
23
- sig {abstract.returns(T.untyped).checked(:never)}
23
+ sig { abstract.returns(T.untyped).checked(:never) }
24
24
  def default; end
25
25
 
26
26
  # checked(:never) - O(object construction x prop count)
27
- sig {abstract.params(instance: T.all(T::Props::Optional, Object)).void.checked(:never)}
27
+ sig { abstract.params(instance: T.all(T::Props::Optional, Object)).void.checked(:never) }
28
28
  def set_default(instance); end
29
29
 
30
30
  NO_CLONE_TYPES = T.let([TrueClass, FalseClass, NilClass, Symbol, Numeric, T::Enum].freeze, T::Array[Module])
31
31
 
32
32
  # checked(:never) - Rules hash is expensive to check
33
- sig {params(cls: Module, rules: T::Hash[Symbol, T.untyped]).returns(T.nilable(ApplyDefault)).checked(:never)}
33
+ sig { params(cls: Module, rules: T::Hash[Symbol, T.untyped]).returns(T.nilable(ApplyDefault)).checked(:never) }
34
34
  def self.for(cls, rules)
35
35
  accessor_key = rules.fetch(:accessor_key)
36
36
  setter = rules.fetch(:setter_proc)
@@ -67,7 +67,7 @@ module T::Props
67
67
  abstract!
68
68
 
69
69
  # checked(:never) - We do this with `T.let` instead
70
- sig {params(default: BasicObject, accessor_key: Symbol, setter_proc: SetterFactory::SetterProc).void.checked(:never)}
70
+ sig { params(default: BasicObject, accessor_key: Symbol, setter_proc: SetterFactory::SetterProc).void.checked(:never) }
71
71
  def initialize(default, accessor_key, setter_proc)
72
72
  # FIXME: Ideally we'd check here that the default is actually a valid
73
73
  # value for this field, but existing code relies on the fact that we don't.
@@ -80,7 +80,7 @@ module T::Props
80
80
  end
81
81
 
82
82
  # checked(:never) - O(object construction x prop count)
83
- sig {override.params(instance: T.all(T::Props::Optional, Object)).void.checked(:never)}
83
+ sig { override.params(instance: T.all(T::Props::Optional, Object)).void.checked(:never) }
84
84
  def set_default(instance)
85
85
  instance.instance_variable_set(@accessor_key, default)
86
86
  end
@@ -88,13 +88,13 @@ module T::Props
88
88
 
89
89
  class ApplyPrimitiveDefault < ApplyFixedDefault
90
90
  # checked(:never) - O(object construction x prop count)
91
- sig {override.returns(T.untyped).checked(:never)}
91
+ sig { override.returns(T.untyped).checked(:never) }
92
92
  attr_reader :default
93
93
  end
94
94
 
95
95
  class ApplyComplexDefault < ApplyFixedDefault
96
96
  # checked(:never) - O(object construction x prop count)
97
- sig {override.returns(T.untyped).checked(:never)}
97
+ sig { override.returns(T.untyped).checked(:never) }
98
98
  def default
99
99
  T::Props::Utils.deep_clone_object(@default)
100
100
  end
@@ -105,13 +105,13 @@ module T::Props
105
105
  # `some_empty_array.dup`
106
106
  class ApplyEmptyArrayDefault < ApplyDefault
107
107
  # checked(:never) - O(object construction x prop count)
108
- sig {override.params(instance: T.all(T::Props::Optional, Object)).void.checked(:never)}
108
+ sig { override.params(instance: T.all(T::Props::Optional, Object)).void.checked(:never) }
109
109
  def set_default(instance)
110
110
  instance.instance_variable_set(@accessor_key, [])
111
111
  end
112
112
 
113
113
  # checked(:never) - O(object construction x prop count)
114
- sig {override.returns(T::Array[T.untyped]).checked(:never)}
114
+ sig { override.returns(T::Array[T.untyped]).checked(:never) }
115
115
  def default
116
116
  []
117
117
  end
@@ -122,13 +122,13 @@ module T::Props
122
122
  # `some_empty_hash.dup`
123
123
  class ApplyEmptyHashDefault < ApplyDefault
124
124
  # checked(:never) - O(object construction x prop count)
125
- sig {override.params(instance: T.all(T::Props::Optional, Object)).void.checked(:never)}
125
+ sig { override.params(instance: T.all(T::Props::Optional, Object)).void.checked(:never) }
126
126
  def set_default(instance)
127
127
  instance.instance_variable_set(@accessor_key, {})
128
128
  end
129
129
 
130
130
  # checked(:never) - O(object construction x prop count)
131
- sig {override.returns(T::Hash[T.untyped, T.untyped]).checked(:never)}
131
+ sig { override.returns(T::Hash[T.untyped, T.untyped]).checked(:never) }
132
132
  def default
133
133
  {}
134
134
  end
@@ -153,7 +153,7 @@ module T::Props
153
153
  end
154
154
 
155
155
  # checked(:never) - O(object construction x prop count)
156
- sig {override.params(instance: T.all(T::Props::Optional, Object)).void.checked(:never)}
156
+ sig { override.params(instance: T.all(T::Props::Optional, Object)).void.checked(:never) }
157
157
  def set_default(instance)
158
158
  # Use the actual setter to validate the factory returns a legitimate
159
159
  # value every time
@@ -161,7 +161,7 @@ module T::Props
161
161
  end
162
162
 
163
163
  # checked(:never) - O(object construction x prop count)
164
- sig {override.returns(T.untyped).checked(:never)}
164
+ sig { override.returns(T.untyped).checked(:never) }
165
165
  def default
166
166
  @class.class_exec(&@factory)
167
167
  end
@@ -29,7 +29,7 @@ module T::Props
29
29
  .checked(:never)
30
30
  end
31
31
  def self.generate(props, defaults)
32
- stored_props = props.reject {|_, rules| rules[:dont_store]}
32
+ stored_props = props.reject { |_, rules| rules[:dont_store] }
33
33
  parts = stored_props.map do |prop, rules|
34
34
  # All of these strings should already be validated (directly or
35
35
  # indirectly) in `validate_prop_name`, so we don't bother with a nice
@@ -10,7 +10,7 @@ module T::Props
10
10
  private_constant :Serialize
11
11
  class Deserialize; end
12
12
  private_constant :Deserialize
13
- ModeType = T.type_alias {T.any(Serialize, Deserialize)}
13
+ ModeType = T.type_alias { T.any(Serialize, Deserialize) }
14
14
  private_constant :ModeType
15
15
 
16
16
  module Mode
@@ -63,7 +63,7 @@ module T::Props
63
63
  end
64
64
  when T::Types::Simple
65
65
  raw = type.raw_type
66
- if NO_TRANSFORM_TYPES.any? {|cls| raw <= cls}
66
+ if NO_TRANSFORM_TYPES.any? { |cls| raw <= cls }
67
67
  nil
68
68
  elsif raw <= Float
69
69
  case mode
@@ -99,7 +99,7 @@ module T::Props
99
99
  else
100
100
  "#{varname}.nil? ? nil : #{inner}"
101
101
  end
102
- elsif type.types.all? {|t| generate(t, mode, varname).nil?}
102
+ elsif type.types.all? { |t| generate(t, mode, varname).nil? }
103
103
  # Handle, e.g., T::Boolean
104
104
  nil
105
105
  else
@@ -122,8 +122,8 @@ module T::Props
122
122
  # NB: This deliberately does include `nil`, which means we know we
123
123
  # don't need to do any transforming.
124
124
  inner_known = type.types
125
- .map {|t| generate(t, mode, varname)}
126
- .reject {|t| t == dynamic_fallback}
125
+ .map { |t| generate(t, mode, varname) }
126
+ .reject { |t| t == dynamic_fallback }
127
127
  .uniq
128
128
 
129
129
  if inner_known.size != 1
@@ -151,7 +151,7 @@ module T::Props
151
151
  end
152
152
  end
153
153
 
154
- sig {params(varname: String, type: Module, mode: ModeType).returns(String).checked(:never)}
154
+ sig { params(varname: String, type: Module, mode: ModeType).returns(String).checked(:never) }
155
155
  private_class_method def self.handle_serializable_subtype(varname, type, mode)
156
156
  case mode
157
157
  when Serialize
@@ -164,7 +164,7 @@ module T::Props
164
164
  end
165
165
  end
166
166
 
167
- sig {params(varname: String, type: Module, mode: ModeType).returns(String).checked(:never)}
167
+ sig { params(varname: String, type: Module, mode: ModeType).returns(String).checked(:never) }
168
168
  private_class_method def self.handle_custom_type(varname, type, mode)
169
169
  case mode
170
170
  when Serialize
@@ -177,7 +177,7 @@ module T::Props
177
177
  end
178
178
  end
179
179
 
180
- sig {params(type: Module).returns(T.nilable(String)).checked(:never)}
180
+ sig { params(type: Module).returns(T.nilable(String)).checked(:never) }
181
181
  private_class_method def self.module_name(type)
182
182
  T::Configuration.module_name_mangler.call(type)
183
183
  end
@@ -24,7 +24,7 @@ module T::Props
24
24
  .checked(:never)
25
25
  end
26
26
  def self.generate(props)
27
- stored_props = props.reject {|_, rules| rules[:dont_store]}
27
+ stored_props = props.reject { |_, rules| rules[:dont_store] }
28
28
  parts = stored_props.map do |prop, rules|
29
29
  # All of these strings should already be validated (directly or
30
30
  # indirectly) in `validate_prop_name`, so we don't bother with a nice
@@ -6,9 +6,9 @@ module T::Props
6
6
  module SetterFactory
7
7
  extend T::Sig
8
8
 
9
- SetterProc = T.type_alias {T.proc.params(val: T.untyped).void}
10
- ValueValidationProc = T.type_alias {T.proc.params(val: T.untyped).void}
11
- ValidateProc = T.type_alias {T.proc.params(prop: Symbol, value: T.untyped).void}
9
+ SetterProc = T.type_alias { T.proc.params(val: T.untyped).void }
10
+ ValueValidationProc = T.type_alias { T.proc.params(val: T.untyped).void }
11
+ ValidateProc = T.type_alias { T.proc.params(prop: Symbol, value: T.untyped).void }
12
12
 
13
13
  sig do
14
14
  params(
@@ -236,7 +236,7 @@ module T::Props
236
236
  base_message = "Can't set #{klass.name}.#{prop} to #{val.inspect} (instance of #{val.class}) - need a #{type}"
237
237
 
238
238
  pretty_message = "Parameter '#{prop}': #{base_message}\n"
239
- caller_loc = caller_locations.find {|l| !l.to_s.include?('sorbet-runtime/lib/types/props')}
239
+ caller_loc = caller_locations.find { |l| !l.to_s.include?('sorbet-runtime/lib/types/props') }
240
240
  if caller_loc
241
241
  pretty_message += "Caller: #{caller_loc.path}:#{caller_loc.lineno}\n"
242
242
  end
@@ -78,7 +78,7 @@ module T::Props::Serializable
78
78
 
79
79
  if hash.size > hash_keys_matching_props
80
80
  serialized_forms = self.class.decorator.prop_by_serialized_forms
81
- extra = hash.reject {|k, _| serialized_forms.key?(k)}
81
+ extra = hash.reject { |k, _| serialized_forms.key?(k) }
82
82
 
83
83
  # `extra` could still be empty here if the input matches a `dont_store` prop;
84
84
  # historically, we just ignore those
@@ -111,7 +111,7 @@ module T::Props::Serializable
111
111
  new_obj[k.to_s] = recursive_stringify_keys(v)
112
112
  end
113
113
  elsif obj.is_a?(Array)
114
- new_obj = obj.map {|v| recursive_stringify_keys(v)}
114
+ new_obj = obj.map { |v| recursive_stringify_keys(v) }
115
115
  else
116
116
  new_obj = obj
117
117
  end
@@ -126,7 +126,7 @@ module T::Props::Serializable
126
126
  if old_extra != new_extra
127
127
  difference =
128
128
  if old_extra
129
- new_extra.reject {|k, v| old_extra[k] == v}
129
+ new_extra.reject { |k, v| old_extra[k] == v }
130
130
  else
131
131
  new_extra
132
132
  end
@@ -195,7 +195,7 @@ module T::Props::Serializable::DecoratorMethods
195
195
  end
196
196
 
197
197
  def required_props
198
- @class.props.select {|_, v| T::Props::Utils.required_prop?(v)}.keys
198
+ @class.props.select { |_, v| T::Props::Utils.required_prop?(v) }.keys
199
199
  end
200
200
 
201
201
  def prop_dont_store?(prop)
@@ -228,11 +228,11 @@ module T::Props::Serializable::DecoratorMethods
228
228
  res = super
229
229
  prop_by_serialized_forms[serialized_form] = prop
230
230
  if T::Configuration.use_vm_prop_serde?
231
- enqueue_lazy_vm_method_definition!(:__t_props_generated_serialize) {generate_serialize2}
232
- enqueue_lazy_vm_method_definition!(:__t_props_generated_deserialize) {generate_deserialize2}
231
+ enqueue_lazy_vm_method_definition!(:__t_props_generated_serialize) { generate_serialize2 }
232
+ enqueue_lazy_vm_method_definition!(:__t_props_generated_deserialize) { generate_deserialize2 }
233
233
  else
234
- enqueue_lazy_method_definition!(:__t_props_generated_serialize) {generate_serialize_source}
235
- enqueue_lazy_method_definition!(:__t_props_generated_deserialize) {generate_deserialize_source}
234
+ enqueue_lazy_method_definition!(:__t_props_generated_serialize) { generate_serialize_source }
235
+ enqueue_lazy_method_definition!(:__t_props_generated_deserialize) { generate_deserialize_source }
236
236
  end
237
237
  res
238
238
  end
@@ -263,7 +263,7 @@ module T::Props::Serializable::DecoratorMethods
263
263
  def message_with_generated_source_context(error, generated_method, generate_source_method)
264
264
  generated_method = generated_method.to_s
265
265
  if error.backtrace_locations
266
- line_loc = error.backtrace_locations.find {|l| l.base_label == generated_method}
266
+ line_loc = error.backtrace_locations.find { |l| l.base_label == generated_method }
267
267
  return unless line_loc
268
268
 
269
269
  line_num = line_loc.lineno
@@ -275,7 +275,7 @@ module T::Props::Serializable::DecoratorMethods
275
275
  # in `__t_props_generated_serialize'"
276
276
  "in `#{generated_method}'"
277
277
  end
278
- line_label = error.backtrace.find {|l| l.end_with?(label)}
278
+ line_label = error.backtrace.find { |l| l.end_with?(label) }
279
279
  return unless line_label
280
280
 
281
281
  line_num = if line_label.start_with?("(eval)")
@@ -11,7 +11,7 @@ module T::Props::TypeValidation
11
11
  module DecoratorMethods
12
12
  extend T::Sig
13
13
 
14
- sig {params(key: Symbol).returns(T::Boolean).checked(:never)}
14
+ sig { params(key: Symbol).returns(T::Boolean).checked(:never) }
15
15
  def valid_rule_key?(key)
16
16
  super || key == :DEPRECATED_underspecified_type
17
17
  end
@@ -58,19 +58,19 @@ module T::Props::TypeValidation
58
58
  # If the type is fully valid, returns nil.
59
59
  #
60
60
  # checked(:never) - called potentially many times recursively
61
- sig {params(type: T::Types::Base).returns(T.nilable(T::Types::Base)).checked(:never)}
61
+ sig { params(type: T::Types::Base).returns(T.nilable(T::Types::Base)).checked(:never) }
62
62
  private def find_invalid_subtype(type)
63
63
  case type
64
64
  when T::Types::TypedEnumerable
65
65
  find_invalid_subtype(type.type)
66
66
  when T::Types::FixedHash
67
- type.types.values.map {|subtype| find_invalid_subtype(subtype)}.compact.first
67
+ type.types.values.map { |subtype| find_invalid_subtype(subtype) }.compact.first
68
68
  when T::Types::Union, T::Types::FixedArray
69
69
  # `T.any` is valid if all of the members are valid
70
- type.types.map {|subtype| find_invalid_subtype(subtype)}.compact.first
70
+ type.types.map { |subtype| find_invalid_subtype(subtype) }.compact.first
71
71
  when T::Types::Intersection
72
72
  # `T.all` is valid if at least one of the members is valid
73
- invalid = type.types.map {|subtype| find_invalid_subtype(subtype)}.compact
73
+ invalid = type.types.map { |subtype| find_invalid_subtype(subtype) }.compact
74
74
  if invalid.length == type.types.length
75
75
  invalid.first
76
76
  else
@@ -13,7 +13,7 @@ module T::Props::Utils
13
13
  when Symbol, NilClass, Numeric
14
14
  what
15
15
  when Array
16
- what.map {|v| deep_clone_object(v, freeze: freeze)}
16
+ what.map { |v| deep_clone_object(v, freeze: freeze) }
17
17
  when Hash
18
18
  h = what.class.new
19
19
  what.each do |k, v|