# DO NOT EDIT; generated by go run testdata/gen.go
#
#name: non-closed definition carries over closedness to enclosed template
#evalPartial
-- in.cue --
#S: {
	[string]: {a: int}
}
a: #S & {
	v: {b: int}
}
#Q: {
	[string]: {a: int} | {b: int}
}
b: #Q & {
	w: {c: int}
}
#R: {
	[string]: [{a: int}, {b: int}]
}
c: #R & {
	w: [{d: int}, ...]
}
-- out/def --
#S: {
	[string]: {
		a: int
	}
}
a: #S & {
	v: {
		b: int
	}
}
b: #Q & {
	w: {
		c: int
	}
}
#Q: {
	[string]: {
		a: int
	} | {
		b: int
	}
}
c: #R & {
	w: [{
		d: int
	}, ...]
}
#R: {
	[string]: [{
		a: int
	}, {
		b: int
	}]
}
-- out/legacy-debug --
<0>{#S: <1>{[]: <2>(_: string)-><3>C{a: int}, }, a: <4>{[]: <5>(_: string)-><6>C{a: int}, v: _|_(int:field "b" not allowed in closed struct)}, b: <7>{[]: <8>(_: string)->(<9>C{a: int} | <10>C{b: int}), w: _|_(int:empty disjunction: field "c" not allowed in closed struct)}, #Q: <11>{[]: <12>(_: string)->(<13>C{a: int} | <14>C{b: int}), }, c: <15>{[]: <16>(_: string)->[<17>C{a: int},<18>C{b: int}], w: [_|_(int:field "d" not allowed in closed struct),<19>C{b: int}]}, #R: <20>{[]: <21>(_: string)->[<22>C{a: int},<23>C{b: int}], }}
-- out/compile --
--- in.cue
{
  #S: {
    [string]: {
      a: int
    }
  }
  a: (〈0;#S〉 & {
    v: {
      b: int
    }
  })
  #Q: {
    [string]: ({
      a: int
    }|{
      b: int
    })
  }
  b: (〈0;#Q〉 & {
    w: {
      c: int
    }
  })
  #R: {
    [string]: [
      {
        a: int
      },
      {
        b: int
      },
    ]
  }
  c: (〈0;#R〉 & {
    w: [
      {
        d: int
      },
      ...,
    ]
  })
}
-- out/eval --
Errors:
a.v: field `b` not allowed:
    ./in.cue:2:12
    ./in.cue:4:4
    ./in.cue:5:6
b.w: field `c` not allowed:
    ./in.cue:8:23
    ./in.cue:10:4
    ./in.cue:11:6
c.w.0: field `d` not allowed:
    ./in.cue:14:13
    ./in.cue:16:4
    ./in.cue:17:7

Result:
(_|_){
  // [eval]
  #S: (#struct){
  }
  a: (_|_){
    // [eval]
    v: (_|_){
      // [eval]
      b: (_|_){
        // [eval] a.v: field `b` not allowed:
        //     ./in.cue:2:12
        //     ./in.cue:4:4
        //     ./in.cue:5:6
      }
      a: (int){ int }
    }
  }
  #Q: (#struct){
  }
  b: (_|_){
    // [eval]
    w: (_|_){
      // [eval]
      c: (_|_){
        // [eval] b.w: field `c` not allowed:
        //     ./in.cue:8:23
        //     ./in.cue:10:4
        //     ./in.cue:11:6
      }
      b: (int){ int }
    }
  }
  #R: (#struct){
  }
  c: (_|_){
    // [eval]
    w: (_|_){
      // [eval]
      0: (_|_){
        // [eval]
        d: (_|_){
          // [eval] c.w.0: field `d` not allowed:
          //     ./in.cue:14:13
          //     ./in.cue:16:4
          //     ./in.cue:17:7
        }
        a: (int){ int }
      }
      1: (#struct){
        b: (int){ int }
      }
    }
  }
}
