sorbet-runtime 0.6.13621 → 0.6.13629

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: e220a94cf6f6774a19e1e2ef7e002a4791fe057d9d801a3c809911491947b855
4
- data.tar.gz: 3cf34f7d429e26e768a222a60a0e3be23ea5f911a17e19ae396544998c886647
3
+ metadata.gz: 8e3cf79d8e393326c2dabc56a8d2bcc8065850fa7dcdd2a8cd3be348415ae606
4
+ data.tar.gz: a03250782d9b3658d1deebfe8f57c45aaf244a2bf7747eb471467e3cb608e4d2
5
5
  SHA512:
6
- metadata.gz: 05d4b08638f1752b3386df3e0fff8e245b795082242900dff532e7f4bafa5c669511d47bd7700feb9b6c69f6c65e534523df1ef11bcc3af9c84e5df6bd58f4ba
7
- data.tar.gz: 6910ad7fb4a7650c11f79a9c0918ce6ecb4015ef42ee741b90c327d65f9852ddd53e6964c82d382c41fbcb1fbd9f0d41c748b2be0522302dd8b3f9e044d1ee25
6
+ metadata.gz: b0d3f2382f34feff42d420bbcd61ab049bf513878cbb9e775d0de0397ddb5ac2f6d9f19c52ad9a94c386018d13718e7911e139009facc426814635170dc38319
7
+ data.tar.gz: 26c433f90715400ad97aff7f231d9051f269d9bce5ff6e51561a9ecce432ab7c8c64aa353d0d244462fbbefdd6d23fa357549839122854cf39b2d9edf49a0d2d
@@ -7,9 +7,22 @@
7
7
  class T::Private::Methods::Signature
8
8
  attr_reader :method, :method_name, :arg_types, :kwarg_types, :block_type,
9
9
  :rest_type, :keyrest_type, :bind, :effective_return_type,
10
- :return_type, :mode, :req_arg_count, :req_kwarg_names,
11
- :check_level, :parameters, :on_failure, :override_allow_incompatible,
12
- :defined_raw
10
+ :return_type, :req_arg_count, :req_kwarg_names, :parameters, :on_failure
11
+
12
+ # @flags packs, from the low bits up: mode (3 bits), check_level (2 bits),
13
+ # override_allow_incompatible (2 bits), and defined_raw (1 bit).
14
+ FLAG_MODES = T::Private::Methods::Modes::MODES
15
+ FLAG_CHECK_LEVELS = T::Private::RuntimeLevels::LEVELS
16
+ FLAG_ALLOW_INCOMPATIBLE = [false, true, :visibility].freeze
17
+ MODE_MASK = 0b111
18
+ CHECK_LEVEL_SHIFT = 3
19
+ CHECK_LEVEL_MASK = 0b11
20
+ ALLOW_INCOMPATIBLE_SHIFT = 5
21
+ ALLOW_INCOMPATIBLE_MASK = 0b11
22
+ DEFINED_RAW_BIT = 1 << 7
23
+ private_constant :FLAG_MODES, :FLAG_CHECK_LEVELS, :FLAG_ALLOW_INCOMPATIBLE, :MODE_MASK,
24
+ :CHECK_LEVEL_SHIFT, :CHECK_LEVEL_MASK, :ALLOW_INCOMPATIBLE_SHIFT,
25
+ :ALLOW_INCOMPATIBLE_MASK, :DEFINED_RAW_BIT
13
26
 
14
27
  # T.unsafe: `UnboundMethod#parameters` lies and says `T::Array[[Symbol, Symbol]]`.
15
28
  # Sorbet can't lub tuple types, meaning that `T.any([Symbol], [Symbol,
@@ -59,12 +72,12 @@ class T::Private::Methods::Signature
59
72
  @return_type
60
73
  end
61
74
  @bind = NilClass.===(bind) ? bind : T::Utils.coerce(bind)
62
- @mode = mode
63
- @check_level = check_level
64
75
  @parameters = parameters
65
76
  @on_failure = on_failure
66
- @override_allow_incompatible = override_allow_incompatible
67
- @defined_raw = defined_raw
77
+ @flags = flag_index(FLAG_MODES, mode, 'mode') |
78
+ (flag_index(FLAG_CHECK_LEVELS, check_level, 'check_level') << CHECK_LEVEL_SHIFT) |
79
+ (flag_index(FLAG_ALLOW_INCOMPATIBLE, override_allow_incompatible, 'override_allow_incompatible') << ALLOW_INCOMPATIBLE_SHIFT) |
80
+ (defined_raw ? DEFINED_RAW_BIT : 0)
68
81
 
69
82
  # Use T.untyped in lieu of T.nilable to try to avoid unnecessary allocations.
70
83
  arg_types = nil
@@ -187,6 +200,22 @@ class T::Private::Methods::Signature
187
200
  parameter_name(:keyrest)
188
201
  end
189
202
 
203
+ def mode
204
+ FLAG_MODES.fetch(@flags & MODE_MASK)
205
+ end
206
+
207
+ def check_level
208
+ FLAG_CHECK_LEVELS.fetch((@flags >> CHECK_LEVEL_SHIFT) & CHECK_LEVEL_MASK)
209
+ end
210
+
211
+ def override_allow_incompatible
212
+ FLAG_ALLOW_INCOMPATIBLE.fetch((@flags >> ALLOW_INCOMPATIBLE_SHIFT) & ALLOW_INCOMPATIBLE_MASK)
213
+ end
214
+
215
+ def defined_raw
216
+ @flags.anybits?(DEFINED_RAW_BIT)
217
+ end
218
+
190
219
  def arg_count
191
220
  @arg_types.length
192
221
  end
@@ -291,6 +320,10 @@ class T::Private::Methods::Signature
291
320
  @parameters.assoc(kind)&.[](1)
292
321
  end
293
322
 
323
+ private def flag_index(values, value, field)
324
+ values.index(value) || raise(ArgumentError.new("Invalid #{field} for `#{@method_name}`: #{value.inspect}"))
325
+ end
326
+
294
327
  EMPTY_LIST = [].freeze
295
328
  EMPTY_HASH = {}.freeze
296
329
  end
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.13621
4
+ version: 0.6.13629
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stripe