-- in.cue --
comprehensions: {
    a: {}
    b: {
        if a.b {
        }
    }
    c: {
        for x in a.b { x }
    }
}

openStruct: {
    a: {}
    b: a.c
}

selectFromTop: {
    top: _
    a: top.foo
}

indexOnTop: {
    top: _
    a: top[2]
}

incompleteIndex: {
    top: _
    a: [1][top]
}

-- out/eval --
Errors:
incompleteIndex.a: invalid index top (invalid type _):
    ./in.cue:29:8

Result:
(_|_){
  // [eval]
  comprehensions: (struct){
    a: (struct){
    }
    b: (_|_){
      // [incomplete] comprehensions.b: undefined field b:
      //     ./in.cue:4:14
    }
    c: (_|_){
      // [incomplete] comprehensions.c: undefined field b:
      //     ./in.cue:8:20
    }
  }
  openStruct: (struct){
    a: (struct){
    }
    b: (_|_){
      // [incomplete] openStruct.b: undefined field c:
      //     ./in.cue:14:10
    }
  }
  selectFromTop: (struct){
    top: (_){ _ }
    a: (_|_){
      // [incomplete] selectFromTop.a: top.foo undefined as top is incomplete (type _):
      //     ./in.cue:19:8
    }
  }
  indexOnTop: (struct){
    top: (_){ _ }
    a: (_|_){
      // [incomplete] indexOnTop.a: top[2] undefined as top is incomplete (type _):
      //     ./in.cue:24:8
    }
  }
  incompleteIndex: (_|_){
    // [eval]
    top: (_){ _ }
    a: (_|_){
      // [eval] incompleteIndex.a: invalid index top (invalid type _):
      //     ./in.cue:29:8
    }
  }
}
-- out/compile --
--- in.cue
{
  comprehensions: {
    a: {}
    b: {
      if 〈1;a〉.b {}
    }
    c: {
      for _, x in 〈1;a〉.b {
        〈1;x〉
      }
    }
  }
  openStruct: {
    a: {}
    b: 〈0;a〉.c
  }
  selectFromTop: {
    top: _
    a: 〈0;top〉.foo
  }
  indexOnTop: {
    top: _
    a: 〈0;top〉[2]
  }
  incompleteIndex: {
    top: _
    a: [
      1,
    ][〈0;top〉]
  }
}
