# DO NOT EDIT; generated by go run testdata/gen.go
#
#name: definitions with disjunctions
#evalPartial
-- in.cue --
#Foo: {
	field: int

	{a: 1} |
	{b: 2}
}

foo: #Foo
foo: {a: 1}

bar: #Foo
bar: {c: 2}

baz: #Foo
baz: {b: 2}
-- out/def --
#Foo: {
	field: int
	a:     1
} | {
	field: int
	b:     2
}
foo: #Foo & {
	a: 1
}
bar: _|_ // 
baz: #Foo & {
	b: 2
}
-- out/legacy-debug --
<0>{#Foo: (<1>C{field: int, a: 1} | <2>C{field: int, b: 2}), foo: <3>C{field: int, a: 1}, bar: _|_(2:empty disjunction: field "c" not allowed in closed struct), baz: <4>C{field: int, b: 2}}
-- out/compile --
--- in.cue
{
  #Foo: {
    field: int
    ({
      a: 1
    }|{
      b: 2
    })
  }
  foo: 〈0;#Foo〉
  foo: {
    a: 1
  }
  bar: 〈0;#Foo〉
  bar: {
    c: 2
  }
  baz: 〈0;#Foo〉
  baz: {
    b: 2
  }
}
-- out/eval --
Errors:
bar: 1 errors in empty disjunction:
bar: field `c` not allowed:
    ./in.cue:1:7
    ./in.cue:4:2
    ./in.cue:11:6
    ./in.cue:12:7

Result:
(_|_){
  // [eval]
  #Foo: (struct){ |((#struct){
      field: (int){ int }
      a: (int){ 1 }
    }, (#struct){
      field: (int){ int }
      b: (int){ 2 }
    }) }
  foo: (#struct){
    field: (int){ int }
    a: (int){ 1 }
  }
  bar: (_|_){
    // [eval] bar: 1 errors in empty disjunction:
    // bar: field `c` not allowed:
    //     ./in.cue:1:7
    //     ./in.cue:4:2
    //     ./in.cue:11:6
    //     ./in.cue:12:7
    field: (int){ int }
    c: (_|_){
      // [eval] bar: field `c` not allowed:
      //     ./in.cue:1:7
      //     ./in.cue:4:2
      //     ./in.cue:5:2
      //     ./in.cue:11:6
      //     ./in.cue:12:7
    }
    b: (int){ 2 }
  }
  baz: (#struct){
    field: (int){ int }
    b: (int){ 2 }
  }
}
