cue/ast/astutil: export Resolve functionality

Change-Id: I3226bedf588d27334279af56e22604d7384d2680
Reviewed-on: https://cue-review.googlesource.com/c/cue/+/3224
Reviewed-by: Marcel van Lohuizen <mpvl@golang.org>
diff --git a/cue/parser/resolve.go b/cue/ast/astutil/resolve.go
similarity index 94%
rename from cue/parser/resolve.go
rename to cue/ast/astutil/resolve.go
index ce78a86..3fc661b 100644
--- a/cue/parser/resolve.go
+++ b/cue/ast/astutil/resolve.go
@@ -14,7 +14,7 @@
 
 // This file implements scopes and the objects they contain.
 
-package parser
+package astutil
 
 import (
 	"bytes"
@@ -25,13 +25,16 @@
 	"cuelang.org/go/internal"
 )
 
-// resolve resolves all identifiers in a file. Unresolved identifiers are
+// An ErrFunc processes errors.
+type ErrFunc func(pos token.Pos, msg string, args ...interface{})
+
+// Resolve resolves all identifiers in a file. Unresolved identifiers are
 // recorded in Unresolved.
-func resolve(f *ast.File, errFn func(pos token.Pos, msg string, args ...interface{})) {
+func Resolve(f *ast.File, errFn ErrFunc) {
 	walk(&scope{errFn: errFn}, f)
 }
 
-func resolveExpr(e ast.Expr, errFn func(pos token.Pos, msg string, args ...interface{})) {
+func ResolveExpr(e ast.Expr, errFn ErrFunc) {
 	f := &ast.File{}
 	walk(&scope{file: f, errFn: errFn}, e)
 }
diff --git a/cue/parser/walk.go b/cue/ast/astutil/walk.go
similarity index 99%
rename from cue/parser/walk.go
rename to cue/ast/astutil/walk.go
index 53f68c2..e115c32 100644
--- a/cue/parser/walk.go
+++ b/cue/ast/astutil/walk.go
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package parser
+package astutil
 
 import (
 	"fmt"
diff --git a/cue/parser/interface.go b/cue/parser/interface.go
index 8090883..66cf341 100644
--- a/cue/parser/interface.go
+++ b/cue/parser/interface.go
@@ -18,6 +18,7 @@
 
 import (
 	"cuelang.org/go/cue/ast"
+	"cuelang.org/go/cue/ast/astutil"
 	"cuelang.org/go/cue/errors"
 	"cuelang.org/go/cue/token"
 	"cuelang.org/go/internal/source"
@@ -137,7 +138,7 @@
 		return nil, pp.errors
 	}
 	f.Filename = filename
-	resolve(f, pp.errf)
+	astutil.Resolve(f, pp.errf)
 
 	return
 }
@@ -181,7 +182,7 @@
 	if p.errors != nil {
 		return nil, p.errors
 	}
-	resolveExpr(e, p.errf)
+	astutil.ResolveExpr(e, p.errf)
 
 	return e, nil
 }