sorbet-runtime 0.6.13096 → 0.6.13108

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: 34b5d048a0afe5810a766f32ab8933cac822e4065115b128ac2de9846ad72864
4
- data.tar.gz: 1c6d56107a07fd6651bcf68cb57d8b2b7aff224778ea49847e95502e9bc36d3e
3
+ metadata.gz: 1f864008a9dd46c7a2672092e8948aa7c7acd2fff3a19a793ce1be7f1bd34901
4
+ data.tar.gz: ce573a04cbe7d9be771529eb9c44d5f97587cb904e86e577551de2a88b863eb0
5
5
  SHA512:
6
- metadata.gz: 38c9fd586cdd4de997c3b8dd6b5416a94ca4547398a032066bb7cb09e76bb023c3a1b45047e1796bb13d3bd98db1e5b2634d0630e81101aa42f03a396a59e03d
7
- data.tar.gz: 90d6aa98343668001f79b8bc8037800331f0d05ea630c4fa3926956a5023f460fc5b3c8870e95089528bfa7fee5a7b83474cc5192748e664777340313291f9b7
6
+ metadata.gz: f96462604677d89c93b462ad911a2c7c8db327f5143107f5897622eb5d259a5eab5b1146035885562840ffec906f30cb02e902fed1e91901dc67a96040bccfcc
7
+ data.tar.gz: 2d43ab6c0b04083c34c14b3f76bd6fb79263fb76c529ae384ff53f7ee7b86cfb6cff3e7ce813730d4c2d8ae3aaad0c49a1a24b21a00f1b45988890bef051ed43
@@ -74,18 +74,18 @@ module T::Private::Methods::CallValidation
74
74
  ok_for_fast_path = has_fixed_arity && can_skip_block_type && !method_sig.bind && method_sig.arg_types.length < 5 && is_allowed_to_have_fast_path
75
75
 
76
76
  all_args_are_simple = ok_for_fast_path && method_sig.arg_types.all? { |_name, type| type.is_a?(T::Types::Simple) }
77
- simple_method = all_args_are_simple && method_sig.return_type.is_a?(T::Types::Simple)
78
- simple_procedure = all_args_are_simple && method_sig.return_type.is_a?(T::Private::Types::Void)
77
+ simple_method = all_args_are_simple && method_sig.effective_return_type.is_a?(T::Types::Simple)
78
+ simple_procedure = all_args_are_simple && method_sig.effective_return_type.is_a?(T::Private::Types::Void)
79
79
 
80
80
  # All the types for which valid? unconditionally returns `true`
81
81
  return_is_ignorable =
82
- method_sig.return_type.equal?(T::Types::Untyped::Private::INSTANCE) ||
83
- method_sig.return_type.equal?(T::Types::Anything::Private::INSTANCE) ||
84
- method_sig.return_type.equal?(T::Types::AttachedClassType::Private::INSTANCE) ||
85
- method_sig.return_type.equal?(T::Types::SelfType::Private::INSTANCE) ||
86
- method_sig.return_type.is_a?(T::Types::TypeParameter) ||
87
- method_sig.return_type.is_a?(T::Types::TypeVariable) ||
88
- (method_sig.return_type.is_a?(T::Types::Simple) && method_sig.return_type.raw_type.equal?(BasicObject))
82
+ method_sig.effective_return_type.equal?(T::Types::Untyped::Private::INSTANCE) ||
83
+ method_sig.effective_return_type.equal?(T::Types::Anything::Private::INSTANCE) ||
84
+ method_sig.effective_return_type.equal?(T::Types::AttachedClassType::Private::INSTANCE) ||
85
+ method_sig.effective_return_type.equal?(T::Types::SelfType::Private::INSTANCE) ||
86
+ method_sig.effective_return_type.is_a?(T::Types::TypeParameter) ||
87
+ method_sig.effective_return_type.is_a?(T::Types::TypeVariable) ||
88
+ (method_sig.effective_return_type.is_a?(T::Types::Simple) && method_sig.effective_return_type.raw_type.equal?(BasicObject))
89
89
 
90
90
  returns_anything_method = all_args_are_simple && return_is_ignorable
91
91
 
@@ -97,7 +97,7 @@ module T::Private::Methods::CallValidation
97
97
  create_validator_method_skip_return_fast(mod, original_method, method_sig, original_visibility)
98
98
  elsif simple_procedure
99
99
  create_validator_procedure_fast(mod, original_method, method_sig, original_visibility)
100
- elsif ok_for_fast_path && method_sig.return_type.is_a?(T::Private::Types::Void)
100
+ elsif ok_for_fast_path && method_sig.effective_return_type.is_a?(T::Private::Types::Void)
101
101
  create_validator_procedure_medium(mod, original_method, method_sig, original_visibility)
102
102
  elsif ok_for_fast_path && return_is_ignorable
103
103
  create_validator_method_skip_return_medium(mod, original_method, method_sig, original_visibility)
@@ -180,17 +180,17 @@ module T::Private::Methods::CallValidation
180
180
 
181
181
  # The only type that is allowed to change the return value is `.void`.
182
182
  # It ignores what you returned and changes it to be a private singleton.
183
- if method_sig.return_type.is_a?(T::Private::Types::Void)
183
+ if method_sig.effective_return_type.is_a?(T::Private::Types::Void)
184
184
  T::Private::Types::Void::VOID
185
185
  else
186
- message = method_sig.return_type.error_message_for_obj(return_value)
186
+ message = method_sig.effective_return_type.error_message_for_obj(return_value)
187
187
  if message
188
188
  CallValidation.report_error(
189
189
  method_sig,
190
190
  message,
191
191
  'Return value',
192
192
  nil,
193
- method_sig.return_type,
193
+ method_sig.effective_return_type,
194
194
  return_value,
195
195
  )
196
196
  end
@@ -283,17 +283,17 @@ module T::Private::Methods::CallValidation
283
283
 
284
284
  # The only type that is allowed to change the return value is `.void`.
285
285
  # It ignores what you returned and changes it to be a private singleton.
286
- if method_sig.return_type.is_a?(T::Private::Types::Void)
286
+ if method_sig.effective_return_type.is_a?(T::Private::Types::Void)
287
287
  T::Private::Types::Void::VOID
288
288
  else
289
- message = method_sig.return_type.error_message_for_obj(return_value)
289
+ message = method_sig.effective_return_type.error_message_for_obj(return_value)
290
290
  if message
291
291
  CallValidation.report_error(
292
292
  method_sig,
293
293
  message,
294
294
  'Return value',
295
295
  nil,
296
- method_sig.return_type,
296
+ method_sig.effective_return_type,
297
297
  return_value,
298
298
  )
299
299
  end
@@ -7,28 +7,28 @@
7
7
 
8
8
  module T::Private::Methods::CallValidation
9
9
  def self.create_validator_method_fast(mod, original_method, method_sig, original_visibility)
10
- if method_sig.return_type.is_a?(T::Private::Types::Void)
10
+ if method_sig.effective_return_type.is_a?(T::Private::Types::Void)
11
11
  raise 'Should have used create_validator_procedure_fast'
12
12
  end
13
13
  # trampoline to reduce stack frame size
14
14
  arg_types = method_sig.arg_types
15
15
  case arg_types.length
16
16
  when 0
17
- create_validator_method_fast0(mod, original_method, method_sig, original_visibility, method_sig.return_type.raw_type)
17
+ create_validator_method_fast0(mod, original_method, method_sig, original_visibility, method_sig.effective_return_type.raw_type)
18
18
  when 1
19
- create_validator_method_fast1(mod, original_method, method_sig, original_visibility, method_sig.return_type.raw_type,
19
+ create_validator_method_fast1(mod, original_method, method_sig, original_visibility, method_sig.effective_return_type.raw_type,
20
20
  arg_types[0][1].raw_type)
21
21
  when 2
22
- create_validator_method_fast2(mod, original_method, method_sig, original_visibility, method_sig.return_type.raw_type,
22
+ create_validator_method_fast2(mod, original_method, method_sig, original_visibility, method_sig.effective_return_type.raw_type,
23
23
  arg_types[0][1].raw_type,
24
24
  arg_types[1][1].raw_type)
25
25
  when 3
26
- create_validator_method_fast3(mod, original_method, method_sig, original_visibility, method_sig.return_type.raw_type,
26
+ create_validator_method_fast3(mod, original_method, method_sig, original_visibility, method_sig.effective_return_type.raw_type,
27
27
  arg_types[0][1].raw_type,
28
28
  arg_types[1][1].raw_type,
29
29
  arg_types[2][1].raw_type)
30
30
  when 4
31
- create_validator_method_fast4(mod, original_method, method_sig, original_visibility, method_sig.return_type.raw_type,
31
+ create_validator_method_fast4(mod, original_method, method_sig, original_visibility, method_sig.effective_return_type.raw_type,
32
32
  arg_types[0][1].raw_type,
33
33
  arg_types[1][1].raw_type,
34
34
  arg_types[2][1].raw_type,
@@ -58,14 +58,14 @@ module T::Private::Methods::CallValidation
58
58
 
59
59
  return_value = original_method.bind_call(self, &blk)
60
60
  unless return_value.is_a?(return_type)
61
- message = method_sig.return_type.error_message_for_obj(return_value)
61
+ message = method_sig.effective_return_type.error_message_for_obj(return_value)
62
62
  if message
63
63
  CallValidation.report_error(
64
64
  method_sig,
65
65
  message,
66
66
  'Return value',
67
67
  nil,
68
- method_sig.return_type,
68
+ method_sig.effective_return_type,
69
69
  return_value,
70
70
  caller_offset: -1
71
71
  )
@@ -107,14 +107,14 @@ module T::Private::Methods::CallValidation
107
107
 
108
108
  return_value = original_method.bind_call(self, arg0, &blk)
109
109
  unless return_value.is_a?(return_type)
110
- message = method_sig.return_type.error_message_for_obj(return_value)
110
+ message = method_sig.effective_return_type.error_message_for_obj(return_value)
111
111
  if message
112
112
  CallValidation.report_error(
113
113
  method_sig,
114
114
  message,
115
115
  'Return value',
116
116
  nil,
117
- method_sig.return_type,
117
+ method_sig.effective_return_type,
118
118
  return_value,
119
119
  caller_offset: -1
120
120
  )
@@ -168,14 +168,14 @@ module T::Private::Methods::CallValidation
168
168
 
169
169
  return_value = original_method.bind_call(self, arg0, arg1, &blk)
170
170
  unless return_value.is_a?(return_type)
171
- message = method_sig.return_type.error_message_for_obj(return_value)
171
+ message = method_sig.effective_return_type.error_message_for_obj(return_value)
172
172
  if message
173
173
  CallValidation.report_error(
174
174
  method_sig,
175
175
  message,
176
176
  'Return value',
177
177
  nil,
178
- method_sig.return_type,
178
+ method_sig.effective_return_type,
179
179
  return_value,
180
180
  caller_offset: -1
181
181
  )
@@ -241,14 +241,14 @@ module T::Private::Methods::CallValidation
241
241
 
242
242
  return_value = original_method.bind_call(self, arg0, arg1, arg2, &blk)
243
243
  unless return_value.is_a?(return_type)
244
- message = method_sig.return_type.error_message_for_obj(return_value)
244
+ message = method_sig.effective_return_type.error_message_for_obj(return_value)
245
245
  if message
246
246
  CallValidation.report_error(
247
247
  method_sig,
248
248
  message,
249
249
  'Return value',
250
250
  nil,
251
- method_sig.return_type,
251
+ method_sig.effective_return_type,
252
252
  return_value,
253
253
  caller_offset: -1
254
254
  )
@@ -326,14 +326,14 @@ module T::Private::Methods::CallValidation
326
326
 
327
327
  return_value = original_method.bind_call(self, arg0, arg1, arg2, arg3, &blk)
328
328
  unless return_value.is_a?(return_type)
329
- message = method_sig.return_type.error_message_for_obj(return_value)
329
+ message = method_sig.effective_return_type.error_message_for_obj(return_value)
330
330
  if message
331
331
  CallValidation.report_error(
332
332
  method_sig,
333
333
  message,
334
334
  'Return value',
335
335
  nil,
336
- method_sig.return_type,
336
+ method_sig.effective_return_type,
337
337
  return_value,
338
338
  caller_offset: -1
339
339
  )
@@ -867,28 +867,28 @@ module T::Private::Methods::CallValidation
867
867
  end
868
868
 
869
869
  def self.create_validator_method_medium(mod, original_method, method_sig, original_visibility)
870
- if method_sig.return_type.is_a?(T::Private::Types::Void)
870
+ if method_sig.effective_return_type.is_a?(T::Private::Types::Void)
871
871
  raise 'Should have used create_validator_procedure_medium'
872
872
  end
873
873
  # trampoline to reduce stack frame size
874
874
  arg_types = method_sig.arg_types
875
875
  case arg_types.length
876
876
  when 0
877
- create_validator_method_medium0(mod, original_method, method_sig, original_visibility, method_sig.return_type)
877
+ create_validator_method_medium0(mod, original_method, method_sig, original_visibility, method_sig.effective_return_type)
878
878
  when 1
879
- create_validator_method_medium1(mod, original_method, method_sig, original_visibility, method_sig.return_type,
879
+ create_validator_method_medium1(mod, original_method, method_sig, original_visibility, method_sig.effective_return_type,
880
880
  arg_types[0][1])
881
881
  when 2
882
- create_validator_method_medium2(mod, original_method, method_sig, original_visibility, method_sig.return_type,
882
+ create_validator_method_medium2(mod, original_method, method_sig, original_visibility, method_sig.effective_return_type,
883
883
  arg_types[0][1],
884
884
  arg_types[1][1])
885
885
  when 3
886
- create_validator_method_medium3(mod, original_method, method_sig, original_visibility, method_sig.return_type,
886
+ create_validator_method_medium3(mod, original_method, method_sig, original_visibility, method_sig.effective_return_type,
887
887
  arg_types[0][1],
888
888
  arg_types[1][1],
889
889
  arg_types[2][1])
890
890
  when 4
891
- create_validator_method_medium4(mod, original_method, method_sig, original_visibility, method_sig.return_type,
891
+ create_validator_method_medium4(mod, original_method, method_sig, original_visibility, method_sig.effective_return_type,
892
892
  arg_types[0][1],
893
893
  arg_types[1][1],
894
894
  arg_types[2][1],
@@ -918,14 +918,14 @@ module T::Private::Methods::CallValidation
918
918
 
919
919
  return_value = original_method.bind_call(self, &blk)
920
920
  unless return_type.valid?(return_value)
921
- message = method_sig.return_type.error_message_for_obj(return_value)
921
+ message = method_sig.effective_return_type.error_message_for_obj(return_value)
922
922
  if message
923
923
  CallValidation.report_error(
924
924
  method_sig,
925
925
  message,
926
926
  'Return value',
927
927
  nil,
928
- method_sig.return_type,
928
+ method_sig.effective_return_type,
929
929
  return_value,
930
930
  caller_offset: -1
931
931
  )
@@ -967,14 +967,14 @@ module T::Private::Methods::CallValidation
967
967
 
968
968
  return_value = original_method.bind_call(self, arg0, &blk)
969
969
  unless return_type.valid?(return_value)
970
- message = method_sig.return_type.error_message_for_obj(return_value)
970
+ message = method_sig.effective_return_type.error_message_for_obj(return_value)
971
971
  if message
972
972
  CallValidation.report_error(
973
973
  method_sig,
974
974
  message,
975
975
  'Return value',
976
976
  nil,
977
- method_sig.return_type,
977
+ method_sig.effective_return_type,
978
978
  return_value,
979
979
  caller_offset: -1
980
980
  )
@@ -1028,14 +1028,14 @@ module T::Private::Methods::CallValidation
1028
1028
 
1029
1029
  return_value = original_method.bind_call(self, arg0, arg1, &blk)
1030
1030
  unless return_type.valid?(return_value)
1031
- message = method_sig.return_type.error_message_for_obj(return_value)
1031
+ message = method_sig.effective_return_type.error_message_for_obj(return_value)
1032
1032
  if message
1033
1033
  CallValidation.report_error(
1034
1034
  method_sig,
1035
1035
  message,
1036
1036
  'Return value',
1037
1037
  nil,
1038
- method_sig.return_type,
1038
+ method_sig.effective_return_type,
1039
1039
  return_value,
1040
1040
  caller_offset: -1
1041
1041
  )
@@ -1101,14 +1101,14 @@ module T::Private::Methods::CallValidation
1101
1101
 
1102
1102
  return_value = original_method.bind_call(self, arg0, arg1, arg2, &blk)
1103
1103
  unless return_type.valid?(return_value)
1104
- message = method_sig.return_type.error_message_for_obj(return_value)
1104
+ message = method_sig.effective_return_type.error_message_for_obj(return_value)
1105
1105
  if message
1106
1106
  CallValidation.report_error(
1107
1107
  method_sig,
1108
1108
  message,
1109
1109
  'Return value',
1110
1110
  nil,
1111
- method_sig.return_type,
1111
+ method_sig.effective_return_type,
1112
1112
  return_value,
1113
1113
  caller_offset: -1
1114
1114
  )
@@ -1186,14 +1186,14 @@ module T::Private::Methods::CallValidation
1186
1186
 
1187
1187
  return_value = original_method.bind_call(self, arg0, arg1, arg2, arg3, &blk)
1188
1188
  unless return_type.valid?(return_value)
1189
- message = method_sig.return_type.error_message_for_obj(return_value)
1189
+ message = method_sig.effective_return_type.error_message_for_obj(return_value)
1190
1190
  if message
1191
1191
  CallValidation.report_error(
1192
1192
  method_sig,
1193
1193
  message,
1194
1194
  'Return value',
1195
1195
  nil,
1196
- method_sig.return_type,
1196
+ method_sig.effective_return_type,
1197
1197
  return_value,
1198
1198
  caller_offset: -1
1199
1199
  )
@@ -232,9 +232,6 @@ module T::Private::Methods
232
232
  end
233
233
  decl.checked = default_checked_level
234
234
  end
235
- if decl.checked == :tests && decl.returns.is_a?(T::Private::Types::Void)
236
- decl.returns = T::Types::Anything::Private::INSTANCE
237
- end
238
235
  if decl.on_failure.equal?(ARG_NOT_PROVIDED)
239
236
  decl.on_failure = nil
240
237
  end
@@ -3,7 +3,7 @@
3
3
 
4
4
  class T::Private::Methods::Signature
5
5
  attr_reader :method, :method_name, :arg_types, :kwarg_types, :block_type, :block_name,
6
- :rest_type, :rest_name, :keyrest_type, :keyrest_name, :bind,
6
+ :rest_type, :rest_name, :keyrest_type, :keyrest_name, :bind, :effective_return_type,
7
7
  :return_type, :mode, :req_arg_count, :req_kwarg_names, :has_rest, :has_keyrest,
8
8
  :check_level, :parameters, :on_failure, :override_allow_incompatible,
9
9
  :defined_raw
@@ -46,6 +46,11 @@ class T::Private::Methods::Signature
46
46
  @keyrest_type = nil
47
47
  @keyrest_name = nil
48
48
  @return_type = T::Utils.coerce(raw_return_type)
49
+ @effective_return_type = if check_level == :tests && @return_type.is_a?(T::Private::Types::Void)
50
+ T::Types::Anything::Private::INSTANCE
51
+ else
52
+ @return_type
53
+ end
49
54
  @bind = bind ? T::Utils.coerce(bind) : bind
50
55
  @mode = mode
51
56
  @check_level = check_level
@@ -262,17 +262,17 @@ module T::Private::Methods::SignatureValidation
262
262
  end
263
263
 
264
264
  # return types must be covariant
265
- super_signature_return_type = super_signature.return_type
265
+ super_signature_return_type = super_signature.effective_return_type
266
266
 
267
267
  if super_signature_return_type == T::Private::Types::Void::Private::INSTANCE
268
268
  # Treat `.void` as `T.anything` (see corresponding comment in definition_valitor for more)
269
269
  super_signature_return_type = T::Types::Anything::Private::INSTANCE
270
270
  end
271
271
 
272
- if !signature.return_type.subtype_of?(super_signature_return_type)
272
+ if !signature.effective_return_type.subtype_of?(super_signature_return_type)
273
273
  raise "Incompatible return type in signature for #{mode_noun} of method `#{signature.method_name}`:\n" \
274
- "* Base: `#{super_signature.return_type}` (in #{method_loc_str(super_signature.method)})\n" \
275
- "* #{mode_noun.capitalize}: `#{signature.return_type}` (in #{method_loc_str(signature.method)})\n" \
274
+ "* Base: `#{super_signature.effective_return_type}` (in #{method_loc_str(super_signature.method)})\n" \
275
+ "* #{mode_noun.capitalize}: `#{signature.effective_return_type}` (in #{method_loc_str(signature.method)})\n" \
276
276
  "(The types must be covariant.)"
277
277
  end
278
278
  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.6.13096
4
+ version: 0.6.13108
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stripe
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-04-05 00:00:00.000000000 Z
11
+ date: 2026-04-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest