func()

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
}