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
}