#name: cross-dependent comprehension
#evalFull
-- in.cue --
#a: {
	if b {
		c: 4
	}
	b: bool
}
x: (#a & {b: true}) & {c: 4}
y: x
-- out/def --
x: _|_ // field "c" not allowed in closed struct
y: _|_ // field "c" not allowed in closed struct
#a: {
	b: bool
	if b {
		c: 4
	}
}
-- out/legacy-debug --
<0>{x: _|_(4:field "c" not allowed in closed struct), y: _|_(4:field "c" not allowed in closed struct), #a: <1>C{b: bool if <2>.b yield <3>C{c: 4}}}
-- out/compile --
--- in.cue
{
  #a: {
    if 〈0;b〉 {
      c: 4
    }
    b: bool
  }
  x: ((〈0;#a〉 & {
    b: true
  }) & {
    c: 4
  })
  y: 〈0;x〉
}
-- out/eval/stats --
Leaks:  0
Freed:  10
Reused: 6
Allocs: 4
Retain: 4

Unifications: 10
Conjuncts:    18
Disjuncts:    12
-- out/evalalpha --
(struct){
  #a: (_|_){
    // [incomplete] #a: incomplete bool: bool:
    //     ./in.cue:5:5
    b: (bool){ bool }
  }
  x: (#struct){
    b: (bool){ true }
    c: (int){ 4 }
  }
  y: ~(x)
}
-- diff/-out/evalalpha<==>+out/eval --
diff old new
--- old
+++ new
@@ -5,11 +5,8 @@
     b: (bool){ bool }
   }
   x: (#struct){
-    c: (int){ 4 }
-    b: (bool){ true }
-  }
-  y: (#struct){
-    c: (int){ 4 }
-    b: (bool){ true }
-  }
+    b: (bool){ true }
+    c: (int){ 4 }
+  }
+  y: ~(x)
 }
-- diff/todo/p3 --
Reordering
-- out/eval --
(struct){
  #a: (_|_){
    // [incomplete] #a: incomplete bool: bool:
    //     ./in.cue:5:5
    b: (bool){ bool }
  }
  x: (#struct){
    c: (int){ 4 }
    b: (bool){ true }
  }
  y: (#struct){
    c: (int){ 4 }
    b: (bool){ true }
  }
}
