Enable strict typing in TopologicalHash
This commit is contained in:
parent
1ca5299f40
commit
e49a69679d
@ -374,7 +374,7 @@ on_request: true)
|
||||
|
||||
graph = ::Utils::TopologicalHash.graph_package_dependencies(@cask)
|
||||
|
||||
raise CaskSelfReferencingDependencyError, @cask.token if graph[@cask].include?(@cask)
|
||||
raise CaskSelfReferencingDependencyError, @cask.token if graph.fetch(@cask).include?(@cask)
|
||||
|
||||
::Utils::TopologicalHash.graph_package_dependencies(primary_container.dependencies, graph)
|
||||
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
# typed: true # rubocop:todo Sorbet/StrictSigil
|
||||
# typed: strict
|
||||
# frozen_string_literal: true
|
||||
|
||||
require "tsort"
|
||||
@ -6,11 +6,18 @@ require "tsort"
|
||||
module Utils
|
||||
# Topologically sortable hash map.
|
||||
class TopologicalHash < Hash
|
||||
extend T::Generic
|
||||
include TSort
|
||||
|
||||
CaskOrFormula = T.type_alias { T.any(Cask::Cask, Formula) }
|
||||
|
||||
K = type_member { { fixed: CaskOrFormula } }
|
||||
V = type_member { { fixed: T::Array[CaskOrFormula] } }
|
||||
Elem = type_member(:out) { { fixed: [CaskOrFormula, T::Array[CaskOrFormula]] } }
|
||||
|
||||
sig {
|
||||
params(
|
||||
packages: T.any(Cask::Cask, Formula, T::Array[T.any(Cask::Cask, Formula)]),
|
||||
packages: T.any(CaskOrFormula, T::Array[CaskOrFormula]),
|
||||
accumulator: TopologicalHash,
|
||||
).returns(TopologicalHash)
|
||||
}
|
||||
@ -48,10 +55,12 @@ module Utils
|
||||
|
||||
private
|
||||
|
||||
sig { params(block: T.proc.params(arg0: K).void).void }
|
||||
def tsort_each_node(&block)
|
||||
each_key(&block)
|
||||
end
|
||||
|
||||
sig { params(node: K, block: T.proc.params(arg0: CaskOrFormula).void).returns(V) }
|
||||
def tsort_each_child(node, &block)
|
||||
fetch(node).each(&block)
|
||||
end
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user