in step.go [213:238]
func (s *Step) depends(other *Step) bool {
if s == nil || other == nil || s.w == nil || s.w != other.w {
return false
}
deps := s.w.Dependencies
steps := s.w.Steps
q := deps[s.name]
seen := map[string]bool{}
// Do a BFS search on s's dependencies, looking for the target dependency. Don't revisit visited dependencies.
for i := 0; i < len(q); i++ {
name := q[i]
if seen[name] {
continue
}
seen[name] = true
if steps[name] == other {
return true
}
for _, dep := range deps[name] {
q = append(q, dep)
}
}
return false
}