Merge pull request #17080 from Homebrew/dependabot/bundler/Library/Homebrew/multi-59c509f7da
This commit is contained in:
commit
17d5ab381b
@ -122,15 +122,15 @@ GEM
|
||||
simplecov_json_formatter (0.1.4)
|
||||
simpleidn (0.2.1)
|
||||
unf (~> 0.1.4)
|
||||
sorbet (0.5.11340)
|
||||
sorbet-static (= 0.5.11340)
|
||||
sorbet-runtime (0.5.11340)
|
||||
sorbet-static (0.5.11340-aarch64-linux)
|
||||
sorbet-static (0.5.11340-universal-darwin)
|
||||
sorbet-static (0.5.11340-x86_64-linux)
|
||||
sorbet-static-and-runtime (0.5.11340)
|
||||
sorbet (= 0.5.11340)
|
||||
sorbet-runtime (= 0.5.11340)
|
||||
sorbet (0.5.11342)
|
||||
sorbet-static (= 0.5.11342)
|
||||
sorbet-runtime (0.5.11342)
|
||||
sorbet-static (0.5.11342-aarch64-linux)
|
||||
sorbet-static (0.5.11342-universal-darwin)
|
||||
sorbet-static (0.5.11342-x86_64-linux)
|
||||
sorbet-static-and-runtime (0.5.11342)
|
||||
sorbet (= 0.5.11342)
|
||||
sorbet-runtime (= 0.5.11342)
|
||||
spoom (1.3.0)
|
||||
erubi (>= 1.10.0)
|
||||
prism (>= 0.19.0)
|
||||
|
@ -65,7 +65,7 @@ $:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version
|
||||
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/racc-1.7.3/lib")
|
||||
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/parser-3.3.0.5/lib")
|
||||
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/rainbow-3.1.1/lib")
|
||||
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/sorbet-runtime-0.5.11340/lib")
|
||||
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/sorbet-runtime-0.5.11342/lib")
|
||||
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/parlour-8.1.0/lib")
|
||||
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/patchelf-1.5.0/lib")
|
||||
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/plist-3.7.1/lib")
|
||||
@ -100,9 +100,9 @@ $:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version
|
||||
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/simplecov_json_formatter-0.1.4/lib")
|
||||
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/simplecov-0.22.0/lib")
|
||||
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/simplecov-cobertura-2.1.0/lib")
|
||||
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/sorbet-static-0.5.11340-universal-darwin/lib")
|
||||
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/sorbet-0.5.11340/lib")
|
||||
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/sorbet-static-and-runtime-0.5.11340/lib")
|
||||
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/sorbet-static-0.5.11342-universal-darwin/lib")
|
||||
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/sorbet-0.5.11342/lib")
|
||||
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/sorbet-static-and-runtime-0.5.11342/lib")
|
||||
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/thor-1.3.1/lib")
|
||||
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/spoom-1.3.0/lib")
|
||||
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/extensions/arm64-darwin-20/#{Gem.extension_api_version}/stackprof-0.2.26")
|
||||
|
@ -536,6 +536,7 @@ module T::Configuration
|
||||
|
||||
@legacy_t_enum_migration_mode = false
|
||||
def self.enable_legacy_t_enum_migration_mode
|
||||
T::Enum.include(T::Enum::LegacyMigrationMode)
|
||||
@legacy_t_enum_migration_mode = true
|
||||
end
|
||||
def self.disable_legacy_t_enum_migration_mode
|
@ -185,79 +185,92 @@ class T::Enum
|
||||
end
|
||||
end
|
||||
|
||||
# NB: Do not call this method. This exists to allow for a safe migration path in places where enum
|
||||
# values are compared directly against string values.
|
||||
#
|
||||
# Ruby's string has a weird quirk where `'my_string' == obj` calls obj.==('my_string') if obj
|
||||
# responds to the `to_str` method. It does not actually call `to_str` however.
|
||||
#
|
||||
# See https://ruby-doc.org/core-2.4.0/String.html#method-i-3D-3D
|
||||
T::Sig::WithoutRuntime.sig {returns(String)}
|
||||
def to_str
|
||||
msg = 'Implicit conversion of Enum instances to strings is not allowed. Call #serialize instead.'
|
||||
if T::Configuration.legacy_t_enum_migration_mode?
|
||||
module LegacyMigrationMode
|
||||
include Kernel
|
||||
extend T::Helpers
|
||||
abstract!
|
||||
|
||||
if T.unsafe(false)
|
||||
# Declare to the type system that the `serialize` method for sure exists
|
||||
# on whatever we mix this into.
|
||||
T::Sig::WithoutRuntime.sig {abstract.returns(T.untyped)}
|
||||
def serialize; end
|
||||
end
|
||||
|
||||
# NB: Do not call this method. This exists to allow for a safe migration path in places where enum
|
||||
# values are compared directly against string values.
|
||||
#
|
||||
# Ruby's string has a weird quirk where `'my_string' == obj` calls obj.==('my_string') if obj
|
||||
# responds to the `to_str` method. It does not actually call `to_str` however.
|
||||
#
|
||||
# See https://ruby-doc.org/core-2.4.0/String.html#method-i-3D-3D
|
||||
T::Sig::WithoutRuntime.sig {returns(String)}
|
||||
def to_str
|
||||
msg = 'Implicit conversion of Enum instances to strings is not allowed. Call #serialize instead.'
|
||||
if T::Configuration.legacy_t_enum_migration_mode?
|
||||
T::Configuration.soft_assert_handler(
|
||||
msg,
|
||||
storytime: {
|
||||
class: self.class.name,
|
||||
caller_location: Kernel.caller_locations(1..1)&.[](0)&.then {"#{_1.path}:#{_1.lineno}"},
|
||||
},
|
||||
)
|
||||
serialize.to_s
|
||||
else
|
||||
Kernel.raise NoMethodError.new(msg)
|
||||
end
|
||||
end
|
||||
|
||||
# WithoutRuntime so that comparison_assertion_failed can assume a constant stack depth
|
||||
T::Sig::WithoutRuntime.sig {params(other: BasicObject).returns(T::Boolean)}
|
||||
def ==(other)
|
||||
case other
|
||||
when String
|
||||
if T::Configuration.legacy_t_enum_migration_mode?
|
||||
comparison_assertion_failed(:==, other)
|
||||
self.serialize == other
|
||||
else
|
||||
false
|
||||
end
|
||||
else
|
||||
super(other)
|
||||
end
|
||||
end
|
||||
|
||||
# WithoutRuntime so that comparison_assertion_failed can assume a constant stack depth
|
||||
T::Sig::WithoutRuntime.sig {params(other: BasicObject).returns(T::Boolean)}
|
||||
def ===(other)
|
||||
case other
|
||||
when String
|
||||
if T::Configuration.legacy_t_enum_migration_mode?
|
||||
comparison_assertion_failed(:===, other)
|
||||
self.serialize == other
|
||||
else
|
||||
false
|
||||
end
|
||||
else
|
||||
super(other)
|
||||
end
|
||||
end
|
||||
|
||||
# WithoutRuntime so that caller_locations can assume a constant stack depth
|
||||
# (Otherwise, the first call would be the method with the wrapping, which would have a different stack depth.)
|
||||
T::Sig::WithoutRuntime.sig {params(method: Symbol, other: T.untyped).void}
|
||||
private def comparison_assertion_failed(method, other)
|
||||
T::Configuration.soft_assert_handler(
|
||||
msg,
|
||||
'Enum to string comparison not allowed. Compare to the Enum instance directly instead. See go/enum-migration',
|
||||
storytime: {
|
||||
class: self.class.name,
|
||||
caller_location: caller_locations(1..1)&.[](0)&.then {"#{_1.path}:#{_1.lineno}"},
|
||||
},
|
||||
self: self.inspect,
|
||||
other: other,
|
||||
other_class: other.class.name,
|
||||
method: method,
|
||||
caller_location: Kernel.caller_locations(2..2)&.[](0)&.then {"#{_1.path}:#{_1.lineno}"},
|
||||
}
|
||||
)
|
||||
serialize.to_s
|
||||
else
|
||||
raise NoMethodError.new(msg)
|
||||
end
|
||||
end
|
||||
|
||||
# WithoutRuntime so that comparison_assertion_failed can assume a constant stack depth
|
||||
T::Sig::WithoutRuntime.sig {params(other: BasicObject).returns(T::Boolean)}
|
||||
def ==(other)
|
||||
case other
|
||||
when String
|
||||
if T::Configuration.legacy_t_enum_migration_mode?
|
||||
comparison_assertion_failed(:==, other)
|
||||
self.serialize == other
|
||||
else
|
||||
false
|
||||
end
|
||||
else
|
||||
super(other)
|
||||
end
|
||||
end
|
||||
|
||||
# WithoutRuntime so that comparison_assertion_failed can assume a constant stack depth
|
||||
T::Sig::WithoutRuntime.sig {params(other: BasicObject).returns(T::Boolean)}
|
||||
def ===(other)
|
||||
case other
|
||||
when String
|
||||
if T::Configuration.legacy_t_enum_migration_mode?
|
||||
comparison_assertion_failed(:===, other)
|
||||
self.serialize == other
|
||||
else
|
||||
false
|
||||
end
|
||||
else
|
||||
super(other)
|
||||
end
|
||||
end
|
||||
|
||||
# WithoutRuntime so that caller_locations can assume a constant stack depth
|
||||
# (Otherwise, the first call would be the method with the wrapping, which would have a different stack depth.)
|
||||
T::Sig::WithoutRuntime.sig {params(method: Symbol, other: T.untyped).void}
|
||||
private def comparison_assertion_failed(method, other)
|
||||
T::Configuration.soft_assert_handler(
|
||||
'Enum to string comparison not allowed. Compare to the Enum instance directly instead. See go/enum-migration',
|
||||
storytime: {
|
||||
class: self.class.name,
|
||||
self: self.inspect,
|
||||
other: other,
|
||||
other_class: other.class.name,
|
||||
method: method,
|
||||
caller_location: caller_locations(2..2)&.[](0)&.then {"#{_1.path}:#{_1.lineno}"},
|
||||
}
|
||||
)
|
||||
end
|
||||
|
||||
### Private implementation ###
|
||||
|
||||
sig {params(serialized_val: SerializedVal).void}
|
Loading…
x
Reference in New Issue
Block a user