-- in.cue --
#A: {
	Common
	...
}

Common: {
	a: int
	b: int
}

x: #A
x: {
	c: int
}

#B: {
	if true {
		a: int
	}
	...
}

y: #B
y: {
	c: int
}
-- out/eval/stats --
Leaks:  0
Freed:  16
Reused: 12
Allocs: 4
Retain: 1

Unifications: 16
Conjuncts:    32
Disjuncts:    17
-- out/evalalpha --
(struct){
  #A: (#struct){
    a: (int){ int }
    b: (int){ int }
  }
  Common: (struct){
    a: (int){ int }
    b: (int){ int }
  }
  x: (#struct){
    c: (int){ int }
    a: (int){ int }
    b: (int){ int }
  }
  #B: (#struct){
    a: (int){ int }
  }
  y: (#struct){
    c: (int){ int }
    a: (int){ int }
  }
}
-- diff/-out/evalalpha<==>+out/eval --
diff old new
--- old
+++ new
@@ -8,15 +8,15 @@
     b: (int){ int }
   }
   x: (#struct){
-    a: (int){ int }
-    b: (int){ int }
-    c: (int){ int }
+    c: (int){ int }
+    a: (int){ int }
+    b: (int){ int }
   }
   #B: (#struct){
     a: (int){ int }
   }
   y: (#struct){
-    a: (int){ int }
-    c: (int){ int }
+    c: (int){ int }
+    a: (int){ int }
   }
 }
-- diff/explanation --
Reordering
-- out/eval --
(struct){
  #A: (#struct){
    a: (int){ int }
    b: (int){ int }
  }
  Common: (struct){
    a: (int){ int }
    b: (int){ int }
  }
  x: (#struct){
    a: (int){ int }
    b: (int){ int }
    c: (int){ int }
  }
  #B: (#struct){
    a: (int){ int }
  }
  y: (#struct){
    a: (int){ int }
    c: (int){ int }
  }
}
-- out/compile --
--- in.cue
{
  #A: {
    〈1;Common〉
    ...
  }
  Common: {
    a: int
    b: int
  }
  x: 〈0;#A〉
  x: {
    c: int
  }
  #B: {
    if true {
      a: int
    }
    ...
  }
  y: 〈0;#B〉
  y: {
    c: int
  }
}
