encoding/yaml: fix bug where an empty document is not treated as null
Change-Id: Ibb763b5e44d6c80d569db8df863d79631d0d2935
Reviewed-on: https://cue-review.googlesource.com/c/cue/+/6561
Reviewed-by: CUE cueckoo <cueckoo@gmail.com>
Reviewed-by: Marcel van Lohuizen <mpvl@golang.org>
diff --git a/internal/third_party/yaml/yaml.go b/internal/third_party/yaml/yaml.go
index 20ef3a1..5177614 100644
--- a/internal/third_party/yaml/yaml.go
+++ b/internal/third_party/yaml/yaml.go
@@ -86,8 +86,9 @@
// A Decorder reads and decodes YAML values from an input stream.
type Decoder struct {
- strict bool
- parser *parser
+ strict bool
+ firstDone bool
+ parser *parser
}
// NewDecoder returns a new decoder that reads from r.
@@ -113,8 +114,12 @@
defer handleErr(&err)
node := dec.parser.parse()
if node == nil {
- return nil, io.EOF
+ if !dec.firstDone {
+ expr = ast.NewNull()
+ }
+ return expr, io.EOF
}
+ dec.firstDone = true
expr = d.unmarshal(node)
if len(d.terrors) > 0 {
return nil, &TypeError{d.terrors}