-- in.cue --
#T: [_]: _
#T: close({"a": string})
x:  #T
x: {
	a: "hello"
	b: "foo"
}
-- out/eval/stats --
Leaks:  2
Freed:  6
Reused: 3
Allocs: 5
Retain: 2

Unifications: 8
Conjuncts:    18
Disjuncts:    8
-- out/evalalpha --
Errors:
x.b: field not allowed:
    ./in.cue:1:5
    ./in.cue:6:2

Result:
(_|_){
  // [eval]
  #T: (#struct){
    a: (string){ string }
  }
  x: (_|_){
    // [eval]
    a: (string){ "hello" }
    b: (_|_){
      // [eval] x.b: field not allowed:
      //     ./in.cue:1:5
      //     ./in.cue:6:2
    }
  }
}
-- diff/-out/evalalpha<==>+out/eval --
diff old new
--- old
+++ new
@@ -1,8 +1,6 @@
 Errors:
 x.b: field not allowed:
     ./in.cue:1:5
-    ./in.cue:2:11
-    ./in.cue:3:5
     ./in.cue:6:2
 
 Result:
@@ -17,8 +15,6 @@
     b: (_|_){
       // [eval] x.b: field not allowed:
       //     ./in.cue:1:5
-      //     ./in.cue:2:11
-      //     ./in.cue:3:5
       //     ./in.cue:6:2
     }
   }
-- diff/todo/p2 --
Positions.
-- out/eval --
Errors:
x.b: field not allowed:
    ./in.cue:1:5
    ./in.cue:2:11
    ./in.cue:3:5
    ./in.cue:6:2

Result:
(_|_){
  // [eval]
  #T: (#struct){
    a: (string){ string }
  }
  x: (_|_){
    // [eval]
    a: (string){ "hello" }
    b: (_|_){
      // [eval] x.b: field not allowed:
      //     ./in.cue:1:5
      //     ./in.cue:2:11
      //     ./in.cue:3:5
      //     ./in.cue:6:2
    }
  }
}
-- out/compile --
--- in.cue
{
  #T: {
    [_]: _
  }
  #T: close({
    a: string
  })
  x: 〈0;#T〉
  x: {
    a: "hello"
    b: "foo"
  }
}
