// Treat fields of different files as belonging to the same struct. // This means that a closed embedding in one file should not restrict the // fields of another. -- in.cue -- package foo #theme: { color: string ctermbg: string } dark: #theme & { color: "dark" ctermbg: "239" } light: #theme & { color: "light" ctermbg: "254" } #Config: { console: dark | *light } -- box.cue -- package foo #Config & { console: dark } -- out/eval/stats -- Leaks: 0 Freed: 25 Reused: 19 Allocs: 6 Retain: 1 Unifications: 21 Conjuncts: 69 Disjuncts: 26 -- out/eval -- (#struct){ #theme: (#struct){ color: (string){ string } ctermbg: (string){ string } } dark: (#struct){ color: (string){ "dark" } ctermbg: (string){ "239" } } light: (#struct){ color: (string){ "light" } ctermbg: (string){ "254" } } #Config: (#struct){ console: (#struct){ |(*(#struct){ color: (string){ "light" } ctermbg: (string){ "254" } }, (#struct){ color: (string){ "dark" } ctermbg: (string){ "239" } }) } } console: (#struct){ color: (string){ "dark" } ctermbg: (string){ "239" } } } -- out/compile -- --- box.cue { (〈0;#Config〉 & { console: 〈1;dark〉 }) } --- in.cue { #theme: { color: string ctermbg: string } dark: (〈0;#theme〉 & { color: "dark" ctermbg: "239" }) light: (〈0;#theme〉 & { color: "light" ctermbg: "254" }) #Config: { console: (〈1;dark〉|*〈1;light〉) } }