#name: retain references with interleaved embedding
#evalFull
-- in.cue --
a: d: {
	#base
	#info: {...}
	Y: #info.X
}

#base: {
	#info: {...}
}

a: [Name=string]: {#info: {
	X: "foo"
}}
-- out/def --
a: {
	{[Name=string]: {
		#info: {
			X: "foo"
		}
	}}
	d: {
		#info: {
			...
		}
		Y: #info.X
		#base
	}
}
#base: {
	#info: {
		...
	}
}
-- out/export --
a: {
	d: {
		Y: "foo"
	}
}
-- out/yaml --
a:
  d:
    Y: foo
-- out/json --
{"a":{"d":{"Y":"foo"}}}
-- out/legacy-debug --
<0>{a: <1>{[]: <2>(Name: string)-><3>{#info: <4>C{X: "foo"}}, d: <5>C{#info: <6>C{X: "foo"}, Y: "foo"}}, #base: <7>C{#info: <8>{...}}}
-- out/compile --
--- in.cue
{
  a: {
    d: {
      〈2;#base〉
      #info: {
        ...
      }
      Y: 〈0;#info〉.X
    }
  }
  #base: {
    #info: {
      ...
    }
  }
  a: {
    [string]: {
      #info: {
        X: "foo"
      }
    }
  }
}
-- out/eval/stats --
Leaks:  0
Freed:  8
Reused: 3
Allocs: 5
Retain: 1

Unifications: 8
Conjuncts:    19
Disjuncts:    9
-- out/eval --
(struct){
  a: (struct){
    d: (#struct){
      #info: (#struct){
        X: (string){ "foo" }
      }
      Y: (string){ "foo" }
    }
  }
  #base: (#struct){
    #info: (#struct){
    }
  }
}
