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}