cmd/cue: use concrete mode for vet on data files
Closes #98
Change-Id: I50b14d235aed6568ff8a1a5d4ae286bead141ad5
Reviewed-on: https://cue-review.googlesource.com/c/cue/+/3100
Reviewed-by: Marcel van Lohuizen <mpvl@google.com>
diff --git a/cmd/cue/cmd/testdata/vet/data.yaml b/cmd/cue/cmd/testdata/vet/data.yaml
index 06bc87d..1d53144 100644
--- a/cmd/cue/cmd/testdata/vet/data.yaml
+++ b/cmd/cue/cmd/testdata/vet/data.yaml
@@ -6,6 +6,10 @@
---
translations:
hello:
+ text: Hoi
+---
+translations:
+ hello:
lang: no
text: Hallo
---
diff --git a/cmd/cue/cmd/testdata/vet/vet_file.out b/cmd/cue/cmd/testdata/vet/vet_file.out
index 132f05c..8d8a23d 100644
--- a/cmd/cue/cmd/testdata/vet/vet_file.out
+++ b/cmd/cue/cmd/testdata/vet/vet_file.out
@@ -1,3 +1,5 @@
+translations.hello.lang: incomplete value (string):
+ ./testdata/vet/vet.cue:2:24
translations.hello.lang: conflicting values false and string (mismatched types bool and string):
- ./testdata/vet/data.yaml:9:11
+ ./testdata/vet/data.yaml:13:11
./testdata/vet/vet.cue:2:24
diff --git a/cmd/cue/cmd/vet.go b/cmd/cue/cmd/vet.go
index 5399551..5c9818c 100644
--- a/cmd/cue/cmd/vet.go
+++ b/cmd/cue/cmd/vet.go
@@ -179,7 +179,13 @@
body, err := r.CompileExpr(expr)
exitIfErr(cmd, inst, err, false)
v := body.Value().Unify(check)
- exitIfErr(cmd, inst, v.Err(), false)
+ if err := v.Err(); err != nil {
+ exitIfErr(cmd, inst, err, false)
+ } else {
+ // Always concrete when checking against concrete files.
+ err = v.Validate(cue.Concrete(true))
+ exitIfErr(cmd, inst, err, false)
+ }
}
}
}