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