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

// Allowed
#Foo1: {field: int}
#Foo1: {field2: string}

foo: #Foo
foo: {feild: 2}

foo1: #Foo
foo1: {
	field: 2
	recursive: {
		feild: 2 // Not caught as per spec. TODO: change?
	}
}

#Bar: {
	field: int
	{[A=_]: int}
}
bar: #Bar
bar: {feild: 2}

#Mixed: string
Mixed:  string

mixedRec: {#Mixed: string}
mixedRec: {Mixed: string}
-- out/def --
#Foo: {
	field: int
	recursive: {
		field: string
	}
}

// Allowed
#Foo1: {
	field:  int
	field2: string
}
foo:  _|_ // field "feild" not allowed in closed struct
foo1: #Foo & {
	field: 2
	recursive: {
		feild: 2
	}
}
#Bar: {
	{[A=string]: int}
	field: int
}
bar: #Bar & {
	feild: 2
}
#Mixed: string
Mixed:  string
mixedRec: {
	#Mixed: string
	Mixed:  string
}
-- out/legacy-debug --
<0>{#Foo: <1>C{field: int, recursive: <2>C{field: string}}, #Foo1: <3>C{field: int, field2: string}, foo: _|_(2:field "feild" not allowed in closed struct), foo1: <4>C{field: 2, recursive: _|_(2:field "feild" not allowed in closed struct)}, #Bar: <5>{[]: <6>(A: string)->int, field: int}, bar: <7>{[]: <8>(A: string)->int, field: int, feild: 2}, #Mixed: string, Mixed: string, mixedRec: <9>{#Mixed: string, Mixed: string}}
-- out/compile --
--- in.cue
{
  #Foo: {
    field: int
    recursive: {
      field: string
    }
  }
  #Foo1: {
    field: int
  }
  #Foo1: {
    field2: string
  }
  foo: 〈0;#Foo〉
  foo: {
    feild: 2
  }
  foo1: 〈0;#Foo〉
  foo1: {
    field: 2
    recursive: {
      feild: 2
    }
  }
  #Bar: {
    field: int
    {
      [_]: int
    }
  }
  bar: 〈0;#Bar〉
  bar: {
    feild: 2
  }
  #Mixed: string
  Mixed: string
  mixedRec: {
    #Mixed: string
  }
  mixedRec: {
    Mixed: string
  }
}
-- out/eval --
Errors:
foo: field feild not allowed:
    ./in.cue:1:7
    ./in.cue:12:6
    ./in.cue:13:7
foo1.recursive: field feild not allowed:
    ./in.cue:3:13
    ./in.cue:15:7
    ./in.cue:19:3

Result:
(_|_){
  // [eval]
  #Foo: (#struct){
    field: (int){ int }
    recursive: (#struct){
      field: (string){ string }
    }
  }
  #Foo1: (#struct){
    field: (int){ int }
    field2: (string){ string }
  }
  foo: (_|_){
    // [eval]
    field: (int){ int }
    recursive: (#struct){
      field: (string){ string }
    }
    feild: (_|_){
      // [eval] foo: field feild not allowed:
      //     ./in.cue:1:7
      //     ./in.cue:12:6
      //     ./in.cue:13:7
    }
  }
  foo1: (_|_){
    // [eval]
    field: (int){ 2 }
    recursive: (_|_){
      // [eval]
      field: (string){ string }
      feild: (_|_){
        // [eval] foo1.recursive: field feild not allowed:
        //     ./in.cue:3:13
        //     ./in.cue:15:7
        //     ./in.cue:19:3
      }
    }
  }
  #Bar: (#struct){
    field: (int){ int }
  }
  bar: (#struct){
    field: (int){ int }
    feild: (int){ 2 }
  }
  #Mixed: (string){ string }
  Mixed: (string){ string }
  mixedRec: (struct){
    #Mixed: (string){ string }
    Mixed: (string){ string }
  }
}
