-- in.cue --
a: { b: 2, c: int }

wrongConcreteType:  {
	if a.b {
		2
	}
}

wrongType:  {
	if a.c {
		2
	}
}

incomplete:  {
	if a.d {
		2
	}
}

incomplete:  {
    list: [1, 2, 3]
	for x in list if a.d {
		x
	}
}

// Issue #809
useDefault: {
    a: {
        x: *"foo" | string
        if x != _|_ {
             y: x
        }
    }

    issue809: {
        #A: {
                a: string
                b: *a | string
        }

        s: [Name=string]: #A & { a: Name }
        s: bar: _

        foo: [
                for _, a in s if a.b != _|_ {a},
        ]
    }
}

-- out/compile --
--- in.cue
{
  a: {
    b: 2
    c: int
  }
  wrongConcreteType: {
    if 〈1;a〉.b {
      2
    }
  }
  wrongType: {
    if 〈1;a〉.c {
      2
    }
  }
  incomplete: {
    if 〈1;a〉.d {
      2
    }
  }
  incomplete: {
    list: [
      1,
      2,
      3,
    ]
    for _, x in 〈0;list〉 if 〈2;a〉.d {
      〈1;x〉
    }
  }
  useDefault: {
    a: {
      x: (*"foo"|string)
      if (〈0;x〉 != _|_(explicit error (_|_ literal) in source)) {
        y: 〈1;x〉
      }
    }
    issue809: {
      #A: {
        a: string
        b: (*〈0;a〉|string)
      }
      s: {
        [string]: (〈1;#A〉 & {
          a: 〈1;-〉
        })
      }
      s: {
        bar: _
      }
      foo: [
        for _, a in 〈0;s〉 if (〈0;a〉.b != _|_(explicit error (_|_ literal) in source)) {
          〈1;a〉
        },
      ]
    }
  }
}
-- out/eval --
Errors:
wrongConcreteType: cannot use 2 (type int) as type bool:
    ./in.cue:4:2
    ./in.cue:1:9
wrongType: cannot use int (type int) as type bool:
    ./in.cue:10:2

Result:
(_|_){
  // [eval]
  a: (struct){
    b: (int){ 2 }
    c: (int){ int }
  }
  wrongConcreteType: (_|_){
    // [eval] wrongConcreteType: cannot use 2 (type int) as type bool:
    //     ./in.cue:4:2
    //     ./in.cue:1:9
  }
  wrongType: (_|_){
    // [eval] wrongType: cannot use int (type int) as type bool:
    //     ./in.cue:10:2
  }
  incomplete: (_|_){
    // [incomplete] incomplete: undefined field: d:
    //     ./in.cue:16:7
    // incomplete: undefined field: d:
    //     ./in.cue:23:21
    list: (#list){
      0: (int){ 1 }
      1: (int){ 2 }
      2: (int){ 3 }
    }
  }
  useDefault: (struct){
    a: (struct){
      x: (string){ |(*(string){ "foo" }, (string){ string }) }
      y: (string){ |(*(string){ "foo" }, (string){ string }) }
    }
    issue809: (struct){
      #A: (#struct){
        a: (string){ string }
        b: (string){ string }
      }
      s: (struct){
        bar: (#struct){
          a: (string){ "bar" }
          b: (string){ |(*(string){ "bar" }, (string){ string }) }
        }
      }
      foo: (#list){
        0: (#struct){
          a: (string){ "bar" }
          b: (string){ |(*(string){ "bar" }, (string){ string }) }
        }
      }
    }
  }
}
