#name: complex groundness  2
#evalFull
-- in.cue --
r1: f1 & {y: "c"}

f1: {y: string, res: a.b.c & {d: y}}

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

Unifications: 16
Conjuncts:    63
Disjuncts:    22
-- out/eval --
(struct){
  r1: (struct){
    y: (string){ "c" }
    res: (struct){
      d: (string){ "c" }
      s: (string){ "ac" }
    }
  }
  f1: (struct){
    y: (string){ string }
    res: (struct){
      d: (string){ string }
      s: (_|_){
        // [incomplete] f1.res.s: non-concrete value string in operand to +:
        //     ./in.cue:5:25
        //     ./in.cue:3:34
        //     ./in.cue:5:14
        //     ./in.cue:6:23
        //     ./in.cue:7:13
        // f1.res.s: non-concrete value string in operand to +:
        //     ./in.cue:6:34
        //     ./in.cue:3:34
        //     ./in.cue:5:14
        //     ./in.cue:6:23
        //     ./in.cue:7:13
      }
    }
  }
  a: (struct){
    b: (struct){
      c: (struct){
        d: (string){ string }
        s: (_|_){
          // [incomplete] a.b.c.s: non-concrete value string in operand to +:
          //     ./in.cue:5:25
          //     ./in.cue:5:14
          //     ./in.cue:6:23
          //     ./in.cue:7:13
          // a.b.c.s: non-concrete value string in operand to +:
          //     ./in.cue:6:34
          //     ./in.cue:5:14
          //     ./in.cue:6:23
          //     ./in.cue:7:13
        }
      }
    }
  }
}
