#name: reference to root
#evalPartial
-- in.cue --
a: {b: int}
c: a & {
	b: 100
	d: a.b + 3 // do not resolve as c != a.
}
x: {
	b: int
	c: b + 5
}
y: x & {
	b: 100
	// c should resolve to 105
}
v: {
	b: int
	c: v.b + 5 // reference starting from copied node.
}
w:  v & {b: 100}
wp: v & {b: 100}
-- out/def --
x: {
	b: int
	c: b + 5
}
y: x & {
	b: 100
}
a: {
	b: int
}
c: a & {
	b: 100
	d: a.b + 3
}
v: {
	b: int
	c: v.b + 5
}
w: v & {
	b: 100
}
wp: v & {
	b: 100
}
-- out/legacy-debug --
<0>{x: <1>{b: int, c: (<2>.b + 5)}, y: <3>{b: 100, c: 105}, a: <4>{b: int}, c: <5>{b: 100, d: (<6>.a.b + 3)}, v: <7>{b: int, c: (<6>.v.b + 5)}, w: <8>{b: 100, c: (<6>.v.b + 5)}, wp: <9>{b: 100, c: (<6>.v.b + 5)}}
-- out/compile --
--- in.cue
{
  a: {
    b: int
  }
  c: (〈0;a〉 & {
    b: 100
    d: (〈1;a〉.b + 3)
  })
  x: {
    b: int
    c: (〈0;b〉 + 5)
  }
  y: (〈0;x〉 & {
    b: 100
  })
  v: {
    b: int
    c: (〈1;v〉.b + 5)
  }
  w: (〈0;v〉 & {
    b: 100
  })
  wp: (〈0;v〉 & {
    b: 100
  })
}
-- out/eval/stats --
Leaks:  0
Freed:  21
Reused: 18
Allocs: 3
Retain: 0

Unifications: 21
Conjuncts:    53
Disjuncts:    21
-- out/eval --
(struct){
  a: (struct){
    b: (int){ int }
  }
  c: (struct){
    b: (int){ 100 }
    d: (_|_){
      // [incomplete] c.d: non-concrete value int in operand to +:
      //     ./in.cue:4:5
      //     ./in.cue:1:8
    }
  }
  x: (struct){
    b: (int){ int }
    c: (_|_){
      // [incomplete] x.c: non-concrete value int in operand to +:
      //     ./in.cue:8:5
      //     ./in.cue:7:5
    }
  }
  y: (struct){
    b: (int){ 100 }
    c: (int){ 105 }
  }
  v: (struct){
    b: (int){ int }
    c: (_|_){
      // [incomplete] v.c: non-concrete value int in operand to +:
      //     ./in.cue:16:5
      //     ./in.cue:15:5
    }
  }
  w: (struct){
    b: (int){ 100 }
    c: (_|_){
      // [incomplete] w.c: non-concrete value int in operand to +:
      //     ./in.cue:16:5
      //     ./in.cue:15:5
    }
  }
  wp: (struct){
    b: (int){ 100 }
    c: (_|_){
      // [incomplete] wp.c: non-concrete value int in operand to +:
      //     ./in.cue:16:5
      //     ./in.cue:15:5
    }
  }
}
