raw: true
eval: true
-- in.cue --
{
	b: {
		idx: a[str]
		str: string
	}
	b: a: b: 4
	a: b: 3
}
-- out/def --

A = a
b: {
	idx: A[str]
	a: {
		b: 4
	}
	str: string
}
a: {
	b: 3
}
-- out/compile --
--- in.cue
{
  {
    b: {
      idx: 〈1;a〉[〈0;str〉]
      str: string
    }
    b: {
      a: {
        b: 4
      }
    }
    a: {
      b: 3
    }
  }
}
-- out/eval/stats --
Leaks:  0
Freed:  8
Reused: 3
Allocs: 5
Retain: 10

Unifications: 8
Conjuncts:    14
Disjuncts:    18
-- out/eval --
(struct){
  b: (struct){
    idx: (_|_){
      // [incomplete] b.idx: invalid non-ground value string (must be concrete string):
      //     ./in.cue:4:8
    }
    str: (string){ string }
    a: (struct){
      b: (int){ 4 }
    }
  }
  a: (struct){
    b: (int){ 3 }
  }
}
