TargetContains improvements
Simplify Module.TargetContains Handle the case of a keyed instance address in ModuleInstance.TargetContains.
This commit is contained in:
parent
076c540076
commit
bf91bff2c8
|
@ -71,17 +71,7 @@ func (m Module) TargetContains(other Targetable) bool {
|
||||||
return true
|
return true
|
||||||
|
|
||||||
case ModuleInstance:
|
case ModuleInstance:
|
||||||
if len(to) < len(m) {
|
return m.TargetContains(to.Module())
|
||||||
return false
|
|
||||||
}
|
|
||||||
for i, ourStep := range m {
|
|
||||||
otherStep := to[i]
|
|
||||||
// This is where ModuleInstance differs from Module
|
|
||||||
if ourStep != otherStep.Name {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
|
|
||||||
case AbsResource:
|
case AbsResource:
|
||||||
return m.TargetContains(to.Module)
|
return m.TargetContains(to.Module)
|
||||||
|
|
|
@ -391,6 +391,16 @@ func (m ModuleInstance) TargetContains(other Targetable) bool {
|
||||||
// Other is contained if its steps match for the length of our own path.
|
// Other is contained if its steps match for the length of our own path.
|
||||||
for i, ourStep := range m {
|
for i, ourStep := range m {
|
||||||
otherStep := to[i]
|
otherStep := to[i]
|
||||||
|
|
||||||
|
// We can't contain an entire module if we have a specific instance
|
||||||
|
// key. The case of NoKey is OK because this address is either
|
||||||
|
// meant to address an unexpanded module, or a single instance of
|
||||||
|
// that module, and both of those are a covered in-full by the
|
||||||
|
// Module address.
|
||||||
|
if ourStep.InstanceKey != NoKey {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
if ourStep.Name != otherStep {
|
if ourStep.Name != otherStep {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue