#name: complex interaction of groundness
#evalFull
-- in.cue --
res: [for x in a for y in x {y & {d: "b"}}]
res: [ a.b.c & {d: "b"}]

a: b: [C=string]: {d: string, s: "a" + d}
a: b: c: d: string
-- out/def --
res: [{
	d: "b"
	s: "ab"
} & (a.b.c & {
	d: "b"
})]
a: {
	b: {
		{[C=string]: {
			d: string, s: "a" + d
		}}
		c: {
			d: string
			s: "a" + d
		}
	}
}
-- out/legacy-debug --
<0>{res: [<1>{d: "b", s: "ab"}], a: <2>{b: <3>{[]: <4>(C: string)-><5>{d: string, s: ("a" + <5>.d)}, c: <6>{d: string, s: ("a" + <7>.d)}}}}
-- out/compile --
--- in.cue
{
  res: [
    for _, x in 〈1;a〉 for _, y in 〈0;x〉 {
      (〈1;y〉 & {
        d: "b"
      })
    },
  ]
  res: [
    (〈1;a〉.b.c & {
      d: "b"
    }),
  ]
  a: {
    b: {
      [string]: {
        d: string
        s: ("a" + 〈0;d〉)
      }
    }
  }
  a: {
    b: {
      c: {
        d: string
      }
    }
  }
}
-- out/eval/stats --
Leaks:  0
Freed:  10
Reused: 3
Allocs: 7
Retain: 5

Unifications: 10
Conjuncts:    33
Disjuncts:    15
-- out/eval --
(struct){
  res: (#list){
    0: (struct){
      d: (string){ "b" }
      s: (string){ "ab" }
    }
  }
  a: (struct){
    b: (struct){
      c: (struct){
        d: (string){ string }
        s: (_|_){
          // [incomplete] a.b.c.s: non-concrete value string in operand to +:
          //     ./in.cue:4:34
          //     ./in.cue:4:23
          //     ./in.cue:5:13
        }
      }
    }
  }
}
