| // 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 -- |
| (#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 -- |
| --- 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〉) |
| } |
| } |
| --- box.cue |
| { |
| (〈0;#Config〉 & { |
| console: 〈1;dark〉 |
| }) |
| } |