in dag_walker.go [22:58]
func (d dagWalker) Enter(node hclsyntax.Node) hcl.Diagnostics {
diag := hcl.Diagnostics{}
if expr, ok := node.(hclsyntax.Expression); ok {
traversals := expr.Variables()
for _, traversal := range traversals {
for i, traverser := range traversal {
name := name(traverser)
refIter, ok := refIters[name]
if !ok {
continue
}
for _, src := range refIter(traversal, i) {
dest := d.startAddress
dests, err := d.dag.GetChildren(src)
if err != nil {
continue
}
if src == dest {
continue
}
if _, edgeExist := dests[dest]; !edgeExist {
err := d.dag.addEdge(src, dest)
if err != nil {
diag = diag.Append(&hcl.Diagnostic{
Severity: hcl.DiagError,
Summary: "cannot add edge",
Detail: err.Error(),
})
}
}
}
}
}
}
return diag
}