-- in.cue -- t1: { #R: { pos: uint name: "hello_\(pos)" } a: #R & {pos: 67} } t2: { #R: { pos: string name: "hello_\(pos)" } a: #R & {pos: "a"} } -- out/eval/stats -- Leaks: 0 Freed: 15 Reused: 11 Allocs: 4 Retain: 0 Unifications: 15 Conjuncts: 29 Disjuncts: 15 -- out/eval -- (struct){ t1: (struct){ #R: (#struct){ pos: (int){ &(>=0, int) } name: (_|_){ // [incomplete] t1.#R.name: invalid interpolation: non-concrete value >=0 & int (type int): // ./in.cue:4:9 } } a: (#struct){ pos: (int){ 67 } name: (string){ "hello_67" } } } t2: (struct){ #R: (#struct){ pos: (string){ string } name: (_|_){ // [incomplete] t2.#R.name: invalid interpolation: non-concrete value string (type string): // ./in.cue:11:9 // ./in.cue:10:9 } } a: (#struct){ pos: (string){ "a" } name: (string){ "hello_a" } } } } -- out/compile -- --- in.cue { t1: { #R: { pos: &(int, >=0) name: "hello_\(〈0;pos〉)" } a: (〈0;#R〉 & { pos: 67 }) } t2: { #R: { pos: string name: "hello_\(〈0;pos〉)" } a: (〈0;#R〉 & { pos: "a" }) } }