internal/third_party/yaml: decode bool and null to BasicLit
Not all CUE conversion do resolutions of identifiers.
Change-Id: I779ed75c007e4c8918c077c8149d0e29e87a1f34
Reviewed-on: https://cue-review.googlesource.com/c/cue/+/2544
Reviewed-by: Marcel van Lohuizen <mpvl@golang.org>
diff --git a/internal/third_party/yaml/decode.go b/internal/third_party/yaml/decode.go
index 2b985b0..024794d 100644
--- a/internal/third_party/yaml/decode.go
+++ b/internal/third_party/yaml/decode.go
@@ -449,11 +449,18 @@
}
case yaml_BOOL_TAG:
+ tok := token.FALSE
str := "false"
if b, _ := resolved.(bool); b {
+ tok = token.TRUE
str = "true"
}
- return d.ident(n, str)
+ return &ast.BasicLit{
+ // ValuePos: d.start(n),
+ ValuePos: d.p.parser.relPos().Pos(),
+ Kind: tok,
+ Value: str,
+ }
case yaml_INT_TAG:
// Convert YAML octal to CUE octal. If YAML accepted an invalid
@@ -483,7 +490,11 @@
return d.makeNum(n, value, token.FLOAT)
case yaml_NULL_TAG:
- return d.ident(n, "null")
+ return &ast.BasicLit{
+ ValuePos: d.p.parser.relPos().Pos(),
+ Kind: token.NULL,
+ Value: "null",
+ }
}
err := &ast.BottomLit{
// Bottom: d.pos(n.startPos)