# DO NOT EDIT; generated by go run testdata/gen.go
#
#name: closing with comprehensions
#evalPartial
-- in.cue --
#A: {f1: int, f2: int}

for k, v in {f3: int} {
	a: #A & {"\(k)": v}
}

#B: {
	for k, v in {f1: int} {
		"\(k)": v
	}
}

#C: {
	f1: _
	for k, v in {f1: int} {
		"\(k)": v
	}
}

#D: {
	for k, v in {f1: int} {
		"\(k)": v
	}
	...
}

#E: #A & {
	for k, v in {f3: int} {
		"\(k)": v
	}
}
-- out/def --
#A: {
	f1: int
	f2: int
}
a: _|_ // field "f3" not allowed in closed struct
#B: {
	f1: v
}
#C: {
	f1: {
		_
		v
		...
	}
}
#D: {
	f1: v
	...
}
#E: _|_ // field "f3" not allowed in closed struct
-- out/legacy-debug --
<0>{#A: <1>C{f1: int, f2: int}, a: _|_(<2>.v:field "f3" not allowed in closed struct), #B: <3>C{f1: int}, #C: <4>C{f1: int}, #D: <5>{f1: int, ...}, #E: _|_(<6>.v:field "f3" not allowed in closed struct)}
-- out/compile --
--- in.cue
{
  #A: {
    f1: int
    f2: int
  }
  for k, v in {
    f3: int
  } {
    a: (〈2;#A〉 & {
      "\(〈2;k〉)": 〈2;v〉
    })
  }
  #B: {
    for k, v in {
      f1: int
    } {
      "\(〈1;k〉)": 〈1;v〉
    }
  }
  #C: {
    f1: _
    for k, v in {
      f1: int
    } {
      "\(〈1;k〉)": 〈1;v〉
    }
  }
  #D: {
    for k, v in {
      f1: int
    } {
      "\(〈1;k〉)": 〈1;v〉
    }
    ...
  }
  #E: (〈0;#A〉 & {
    for k, v in {
      f3: int
    } {
      "\(〈1;k〉)": 〈1;v〉
    }
  })
}
-- out/eval --
Errors:
#E: field `f3` not allowed:
    ./in.cue:1:5
    ./in.cue:27:5
    ./in.cue:27:10
    ./in.cue:28:2
    ./in.cue:29:3
a: field `f3` not allowed:
    ./in.cue:1:5
    ./in.cue:3:1
    ./in.cue:4:5
    ./in.cue:4:11

Result:
(_|_){
  // [eval]
  #A: (#struct){
    f1: (int){ int }
    f2: (int){ int }
  }
  #B: (#struct){
    f1: (int){ int }
  }
  #C: (#struct){
    f1: (int){ int }
  }
  #D: (#struct){
    f1: (int){ int }
  }
  #E: (_|_){
    // [eval]
    f1: (int){ int }
    f2: (int){ int }
    f3: (_|_){
      // [eval] #E: field `f3` not allowed:
      //     ./in.cue:1:5
      //     ./in.cue:27:5
      //     ./in.cue:27:10
      //     ./in.cue:28:2
      //     ./in.cue:29:3
    }
  }
  a: (_|_){
    // [eval]
    f1: (int){ int }
    f2: (int){ int }
    f3: (_|_){
      // [eval] a: field `f3` not allowed:
      //     ./in.cue:1:5
      //     ./in.cue:3:1
      //     ./in.cue:4:5
      //     ./in.cue:4:11
    }
  }
}
