-- 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
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
  }
  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 }) }
        }
      }
    }
  }
}
