-- in.cue --
i: int
s: string

t0: {
	v: i & s
}

t1: {
	#d1: {
		a: b: 3
	}

	#d2: {
		a: b: 4
	}

	x: #d1 & #d2
}
-- out/eval/stats --
Leaks:  0
Freed:  15
Reused: 10
Allocs: 5
Retain: 0

Unifications: 15
Conjuncts:    23
Disjuncts:    15
-- out/evalalpha --
Errors:
t0.v: conflicting values int and string (mismatched types int and string):
    ./in.cue:1:4
    ./in.cue:2:4
t1.x.a.b: conflicting values 4 and 3:
    ./in.cue:10:9
    ./in.cue:14:9

Result:
(_|_){
  // [eval]
  i: (int){ int }
  s: (string){ string }
  t0: (_|_){
    // [eval]
    v: (_|_){
      // [eval] t0.v: conflicting values int and string (mismatched types int and string):
      //     ./in.cue:1:4
      //     ./in.cue:2:4
    }
  }
  t1: (_|_){
    // [eval]
    #d1: (#struct){
      a: (#struct){
        b: (int){ 3 }
      }
    }
    #d2: (#struct){
      a: (#struct){
        b: (int){ 4 }
      }
    }
    x: (_|_){
      // [eval]
      a: (_|_){
        // [eval]
        b: (_|_){
          // [eval] t1.x.a.b: conflicting values 4 and 3:
          //     ./in.cue:10:9
          //     ./in.cue:14:9
        }
      }
    }
  }
}
-- diff/-out/evalalpha<==>+out/eval --
diff old new
--- old
+++ new
@@ -2,12 +2,9 @@
 t0.v: conflicting values int and string (mismatched types int and string):
     ./in.cue:1:4
     ./in.cue:2:4
-    ./in.cue:5:9
 t1.x.a.b: conflicting values 4 and 3:
     ./in.cue:10:9
     ./in.cue:14:9
-    ./in.cue:17:5
-    ./in.cue:17:11
 
 Result:
 (_|_){
@@ -20,7 +17,6 @@
       // [eval] t0.v: conflicting values int and string (mismatched types int and string):
       //     ./in.cue:1:4
       //     ./in.cue:2:4
-      //     ./in.cue:5:9
     }
   }
   t1: (_|_){
@@ -43,8 +39,6 @@
           // [eval] t1.x.a.b: conflicting values 4 and 3:
           //     ./in.cue:10:9
           //     ./in.cue:14:9
-          //     ./in.cue:17:5
-          //     ./in.cue:17:11
         }
       }
     }
-- diff/todo/p2 --
Positions.
-- out/eval --
Errors:
t0.v: conflicting values int and string (mismatched types int and string):
    ./in.cue:1:4
    ./in.cue:2:4
    ./in.cue:5:9
t1.x.a.b: conflicting values 4 and 3:
    ./in.cue:10:9
    ./in.cue:14:9
    ./in.cue:17:5
    ./in.cue:17:11

Result:
(_|_){
  // [eval]
  i: (int){ int }
  s: (string){ string }
  t0: (_|_){
    // [eval]
    v: (_|_){
      // [eval] t0.v: conflicting values int and string (mismatched types int and string):
      //     ./in.cue:1:4
      //     ./in.cue:2:4
      //     ./in.cue:5:9
    }
  }
  t1: (_|_){
    // [eval]
    #d1: (#struct){
      a: (#struct){
        b: (int){ 3 }
      }
    }
    #d2: (#struct){
      a: (#struct){
        b: (int){ 4 }
      }
    }
    x: (_|_){
      // [eval]
      a: (_|_){
        // [eval]
        b: (_|_){
          // [eval] t1.x.a.b: conflicting values 4 and 3:
          //     ./in.cue:10:9
          //     ./in.cue:14:9
          //     ./in.cue:17:5
          //     ./in.cue:17:11
        }
      }
    }
  }
}
-- out/compile --
--- in.cue
{
  i: int
  s: string
  t0: {
    v: (〈1;i〉 & 〈1;s〉)
  }
  t1: {
    #d1: {
      a: {
        b: 3
      }
    }
    #d2: {
      a: {
        b: 4
      }
    }
    x: (〈0;#d1〉 & 〈0;#d2〉)
  }
}
