#name: structs
#evalPartial
-- in.cue --
a: t & {c:  5} // {c:5,d:15}
b: ti & {c: 7} // {c:7,d:21}
t: {c: number, d: c * 3} // {c:number,d:number*3}
ti: t & {c: int}
-- out/def --
a: t & {
	c: 5
}
t: {
	c: number
	d: c * 3
}
b: ti & {
	c: 7
}
ti: t & {
	c: int
}
-- out/legacy-debug --
<0>{a: <1>{c: 5, d: 15}, t: <2>{c: number, d: (<3>.c * 3)}, b: <4>{c: 7, d: 21}, ti: <5>{c: int, d: (<6>.c * 3)}}
-- out/compile --
--- in.cue
{
  a: (〈0;t〉 & {
    c: 5
  })
  b: (〈0;ti〉 & {
    c: 7
  })
  t: {
    c: number
    d: (〈0;c〉 * 3)
  }
  ti: (〈0;t〉 & {
    c: int
  })
}
-- out/eval/stats --
Leaks:  0
Freed:  13
Reused: 9
Allocs: 4
Retain: 2

Unifications: 13
Conjuncts:    33
Disjuncts:    15
-- out/eval --
(struct){
  a: (struct){
    c: (int){ 5 }
    d: (int){ 15 }
  }
  b: (struct){
    c: (int){ 7 }
    d: (int){ 21 }
  }
  t: (struct){
    c: (number){ number }
    d: (_|_){
      // [incomplete] t.d: non-concrete value number in operand to *:
      //     ./in.cue:3:19
      //     ./in.cue:3:8
    }
  }
  ti: (struct){
    c: (int){ int }
    d: (_|_){
      // [incomplete] ti.d: non-concrete value int in operand to *:
      //     ./in.cue:3:19
      //     ./in.cue:3:8
      //     ./in.cue:4:13
    }
  }
}
