blob: 85fa78753eb3977185026c6b64791b52901ff1da [file] [log] [blame]
-- in.cue --
circularIf: {
#list: {
tail: #list | *null
if tail != null {
}
}
}
circularFor: {
#list: {
tail: #list | *null
for x in tail != null {
}
}
}
// Print a bit more sensible error message than "empty disjunction" here.
// Issue #465
userError: {
a: string | *_|_
if a != "" {
}
}
-- out/eval --
Errors:
circularFor.#list: invalid operand tail != null (found bool, want list or struct):
./in.cue:12:18
Result:
(_|_){
// [eval]
circularIf: (struct){
#list: (#struct){
tail: ((null|struct)){ |(*(null){ null }, (#struct){
tail: (null){ null }
}) }
}
}
circularFor: (_|_){
// [eval]
#list: (_|_){
// [eval] circularFor.#list: invalid operand tail != null (found bool, want list or struct):
// ./in.cue:12:18
tail: (null){ null }
}
}
userError: (_|_){
// [incomplete] userError: non-concrete value string in operand to !=:
// ./in.cue:21:8
a: (string){ string }
}
}
-- out/compile --
--- in.cue
{
circularIf: {
#list: {
tail: (〈1;#list〉|*null)
if (〈0;tail != null) {}
}
}
circularFor: {
#list: {
tail: (〈1;#list〉|*null)
for _, x in (〈0;tail != null) {}
}
}
userError: {
a: (string|*_|_(explicit error (_|_ literal) in source))
if (〈0;a != "") {}
}
}