1package hclsyntax 2 3import ( 4 "github.com/hashicorp/hcl2/hcl" 5) 6 7// Node is the abstract type that every AST node implements. 8// 9// This is a closed interface, so it cannot be implemented from outside of 10// this package. 11type Node interface { 12 // This is the mechanism by which the public-facing walk functions 13 // are implemented. Implementations should call the given function 14 // for each child node and then replace that node with its return value. 15 // The return value might just be the same node, for non-transforming 16 // walks. 17 walkChildNodes(w internalWalkFunc) 18 19 Range() hcl.Range 20} 21 22type internalWalkFunc func(Node) 23