// 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/evalalpha --
(#struct){
  console: (#struct){
    color: (string){ "dark" }
    ctermbg: (string){ "239" }
  }
  #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" }
      }) }
  }
}
-- diff/-out/evalalpha<==>+out/eval --
diff old new
--- old
+++ new
@@ -1,4 +1,8 @@
 (#struct){
+  console: (#struct){
+    color: (string){ "dark" }
+    ctermbg: (string){ "239" }
+  }
   #theme: (#struct){
     color: (string){ string }
     ctermbg: (string){ string }
@@ -20,8 +24,4 @@
         ctermbg: (string){ "239" }
       }) }
   }
-  console: (#struct){
-    color: (string){ "dark" }
-    ctermbg: (string){ "239" }
-  }
 }
-- diff/todo/p3 --
Reordering.
-- 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〉)
  }
}
