interanal/core/runtime: move building logic from cue package
- Simplify logic
- Lazy load packages
- Cleanup interim types used for cue package transition
The lazy loading of builtin packages allows:
- adding builtin packages to a used Runtime
- isolate performance measurements and metrics for
CUE code that doesn't use imports.
Change-Id: Idd4578100047f83397be7c1d69f66b083974e6c0
Reviewed-on: https://cue-review.googlesource.com/c/cue/+/7421
Reviewed-by: CUE cueckoo <cueckoo@gmail.com>
Reviewed-by: Marcel van Lohuizen <mpvl@golang.org>
diff --git a/internal/core/runtime/resolve.go b/internal/core/runtime/resolve.go
index 29f19e4..94188db 100644
--- a/internal/core/runtime/resolve.go
+++ b/internal/core/runtime/resolve.go
@@ -23,15 +23,9 @@
"cuelang.org/go/cue/errors"
)
-func lineStr(idx *Index, n ast.Node) string {
- return n.Pos().String()
-}
+func (r *Runtime) ResolveFiles(p *build.Instance) (errs errors.Error) {
+ idx := r.index
-func ResolveFiles(
- idx *Index,
- p *build.Instance,
- isBuiltin func(s string) bool,
-) (errs errors.Error) {
// Link top-level declarations. As top-level entries get unified, an entry
// may be linked to any top-level entry of any of the files.
allFields := map[string]ast.Node{}
@@ -45,18 +39,17 @@
}
}
for _, f := range p.Files {
- err := ResolveFile(idx, f, p, allFields, isBuiltin)
+ err := resolveFile(idx, f, p, allFields)
errs = errors.Append(errs, err)
}
return errs
}
-func ResolveFile(
- idx *Index,
+func resolveFile(
+ idx *index,
f *ast.File,
p *build.Instance,
allFields map[string]ast.Node,
- isBuiltin func(s string) bool,
) errors.Error {
unresolved := map[string][]*ast.Ident{}
for _, u := range f.Unresolved {
@@ -82,7 +75,7 @@
name := path.Base(id)
if imp := p.LookupImport(id); imp != nil {
name = imp.PkgName
- } else if !isBuiltin(id) {
+ } else if _, ok := idx.builtins[id]; !ok {
errs = errors.Append(errs,
nodeErrorf(spec, "package %q not found", id))
continue
@@ -162,3 +155,7 @@
// }
return errs
}
+
+func lineStr(idx *index, n ast.Node) string {
+ return n.Pos().String()
+}