sorbet-runtime 0.6.13616 → 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: 53d7992bc3b757a09cec54c0adaf659670b8e2f13d1429a42c9af6289575a75b
4
- data.tar.gz: 59f61eb250810f11570be0509ca0c06a1642d1898b0f260891735ce435e97d2f
3
+ metadata.gz: 8e3cf79d8e393326c2dabc56a8d2bcc8065850fa7dcdd2a8cd3be348415ae606
4
+ data.tar.gz: a03250782d9b3658d1deebfe8f57c45aaf244a2bf7747eb471467e3cb608e4d2
5
5
  SHA512:
6
- metadata.gz: 9236e351b585061fd58490a603d75d19ca1f43a6e742a3abd57a648214a5b050d4d4408409004c150bbbfb87e8af9afbba11633067aa253c739acc39d718f727
7
- data.tar.gz: f69a44eda94a3646b1d0422bf15d9bc2cf92da478c3f0a1615ac986a16a10371470621813d65c6d3222ce7382e7b55c7b6aead62916ee99f1c11dc422536ddad
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
@@ -9,13 +9,13 @@ module T::Types
9
9
  attr_reader :values
10
10
 
11
11
  def initialize(values)
12
- case values
13
- when Hash
14
- @values = values
15
- else
16
- require "set" unless defined?(Set)
17
- @values = values.to_set
18
- end
12
+ @values =
13
+ case values
14
+ when Hash
15
+ values
16
+ else
17
+ values.to_set
18
+ end
19
19
  end
20
20
 
21
21
  def build_type
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.13616
4
+ version: 0.6.13629
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stripe