internal: add ToFile and ToExpr
Also fixes cue/gen.go
Change-Id: I6497649e3863dbacd896d0246661ef2c9780f84e
Reviewed-on: https://cue-review.googlesource.com/c/cue/+/5560
Reviewed-by: Marcel van Lohuizen <mpvl@google.com>
diff --git a/internal/encoding/encoding.go b/internal/encoding/encoding.go
index 14d579b..6618a02 100644
--- a/internal/encoding/encoding.go
+++ b/internal/encoding/encoding.go
@@ -37,6 +37,7 @@
"cuelang.org/go/encoding/jsonschema"
"cuelang.org/go/encoding/openapi"
"cuelang.org/go/encoding/protobuf"
+ "cuelang.org/go/internal"
"cuelang.org/go/internal/filetypes"
"cuelang.org/go/internal/third_party/yaml"
)
@@ -91,25 +92,11 @@
}
func toFile(x ast.Expr) *ast.File {
- switch x := x.(type) {
- case nil:
- return nil
- case *ast.StructLit:
- return &ast.File{Decls: x.Elts}
- default:
- return &ast.File{Decls: []ast.Decl{&ast.EmbedDecl{Expr: x}}}
- }
+ return internal.ToFile(x)
}
func valueToFile(v cue.Value) *ast.File {
- switch x := v.Syntax().(type) {
- case *ast.File:
- return x
- case ast.Expr:
- return toFile(x)
- default:
- panic("unrreachable")
- }
+ return internal.ToFile(v.Syntax())
}
func (i *Decoder) File() *ast.File {