mirror of
https://github.com/Homebrew/brew.git
synced 2025-07-14 16:09:03 +08:00
Remove casts
This commit is contained in:
parent
ced4a3a91f
commit
70641dcb58
@ -12,9 +12,7 @@ module Tapioca
|
|||||||
ConstantType = type_member { { fixed: Module } }
|
ConstantType = type_member { { fixed: Module } }
|
||||||
|
|
||||||
sig { override.returns(T::Enumerable[Module]) }
|
sig { override.returns(T::Enumerable[Module]) }
|
||||||
def self.gather_constants
|
def self.gather_constants = Homebrew::Tapioca::Utils.named_objects_with_module(Attrable)
|
||||||
ObjectSpace.each_object(Attrable).map { |obj| obj.name.nil? ? obj.attached_object : obj }
|
|
||||||
end
|
|
||||||
|
|
||||||
sig { override.void }
|
sig { override.void }
|
||||||
def decorate
|
def decorate
|
||||||
|
@ -17,22 +17,12 @@ module Tapioca
|
|||||||
|
|
||||||
sig { override.returns(T::Enumerable[Module]) }
|
sig { override.returns(T::Enumerable[Module]) }
|
||||||
def self.gather_constants
|
def self.gather_constants
|
||||||
objects = T.cast(ObjectSpace.each_object(Forwardable), T::Enumerator[Module])
|
Homebrew::Tapioca::Utils.named_objects_with_module(Forwardable).reject do |obj|
|
||||||
objects.map { |obj| named_object(obj) }.uniq.reject do |obj|
|
|
||||||
# Avoid duplicate stubs for forwardables that are defined in vendored gems
|
# Avoid duplicate stubs for forwardables that are defined in vendored gems
|
||||||
Object.const_source_location(T.must(obj.name))&.first&.include?("vendor/bundle/ruby")
|
Object.const_source_location(T.must(obj.name))&.first&.include?("vendor/bundle/ruby")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
sig { params(obj: Module).returns(Module) }
|
|
||||||
def self.named_object(obj)
|
|
||||||
if obj.is_a?(Class) && obj.name.nil?
|
|
||||||
T.cast(obj.attached_object, Module)
|
|
||||||
else
|
|
||||||
obj
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
sig { override.void }
|
sig { override.void }
|
||||||
def decorate
|
def decorate
|
||||||
root.create_path(constant) do |klass|
|
root.create_path(constant) do |klass|
|
||||||
|
@ -4,6 +4,17 @@
|
|||||||
module Homebrew
|
module Homebrew
|
||||||
module Tapioca
|
module Tapioca
|
||||||
module Utils
|
module Utils
|
||||||
|
sig { params(klass: T::Class[T.anything]).returns(Module) }
|
||||||
|
def self.named_object_for(klass)
|
||||||
|
return klass if klass.name
|
||||||
|
|
||||||
|
attached_object = klass.attached_object
|
||||||
|
case attached_object
|
||||||
|
when Module then attached_object
|
||||||
|
else raise "Unsupported attached object for: #{klass}"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
# @param class_methods [Boolean] whether to get class methods or instance methods
|
# @param class_methods [Boolean] whether to get class methods or instance methods
|
||||||
# @return the `module` methods that are defined in the given file
|
# @return the `module` methods that are defined in the given file
|
||||||
sig {
|
sig {
|
||||||
@ -18,6 +29,17 @@ module Homebrew
|
|||||||
end
|
end
|
||||||
methods.select { _1.source_location&.first&.end_with?(file_name) }
|
methods.select { _1.source_location&.first&.end_with?(file_name) }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
sig { params(mod: Module).returns(T::Array[Module]) }
|
||||||
|
def self.named_objects_with_module(mod)
|
||||||
|
ObjectSpace.each_object(mod).map do |obj|
|
||||||
|
case obj
|
||||||
|
when Class then named_object_for(obj)
|
||||||
|
when Module then obj
|
||||||
|
else raise "Unsupported object: #{obj}"
|
||||||
|
end
|
||||||
|
end.uniq
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user