# DO NOT EDIT; generated by go run testdata/gen.go
#
#name: optionals with label filters
#evalFull
-- in.cue --
#JobID: =~"^[a-zA-Z]*$"
#Job: {
	name: string
	cmd:  string
}
#Jobs: {
	{[#JobID]: #Job}

	{[=~"Test$"]: name: =~"^test"}// Must work without ...
}

jobs: foo: name: "allGood"
jobs: foo: name: "allGood"

jobs1:          #Jobs
jobs1: foo1: {} // faulty

jobs2: #Jobs
jobs2: fooTest: name: "badName" // faulty

jobs3: #Jobs
jobs3: [string]: #Job
jobs3: fooTest1: name: "badName" // faulty
-- out/def --
#JobID: =~"^[a-zA-Z]*$"
#Job: {
	name: string
	cmd:  string
}
#Jobs: {
	{[#JobID]: #Job}
	{[=~"Test$"]: {
		name: =~"^test", ...
	}}
}
jobs: {
	foo: {
		name: "allGood"
	}
}
jobs1: _|_ // field "foo1" not allowed in closed struct
jobs2: #Jobs & {
	fooTest: {
		name: "badName"
	}
}
jobs3: _|_ // field "fooTest1" not allowed in closed struct
-- out/legacy-debug --
<0>{#JobID: =~"^[a-zA-Z]*$", #Job: <1>C{name: string, cmd: string}, #Jobs: <2>C{[=~"^[a-zA-Z]*$"]: <3>(_: string)-><4>.#Job, [=~"Test$"]: <5>(_: string)-><6>C{name: =~"^test"}, }, jobs: <7>{foo: <8>{name: "allGood"}}, jobs1: _|_(<9>{}:field "foo1" not allowed in closed struct), jobs2: <10>C{[=~"^[a-zA-Z]*$"]: <11>(_: string)-><4>.#Job, [=~"Test$"]: <12>(_: string)-><13>C{name: =~"^test"}, fooTest: _|_(string:field "cmd" not allowed in closed struct)}, jobs3: _|_(<14>{name: "badName"}:field "fooTest1" not allowed in closed struct)}
-- out/compile --
--- in.cue
{
  #JobID: =~"^[a-zA-Z]*$"
  #Job: {
    name: string
    cmd: string
  }
  #Jobs: {
    {
      [〈2;#JobID〉]: 〈2;#Job〉
    }
    {
      [=~"Test$"]: {
        name: =~"^test"
      }
    }
  }
  jobs: {
    foo: {
      name: "allGood"
    }
  }
  jobs: {
    foo: {
      name: "allGood"
    }
  }
  jobs1: 〈0;#Jobs〉
  jobs1: {
    foo1: {}
  }
  jobs2: 〈0;#Jobs〉
  jobs2: {
    fooTest: {
      name: "badName"
    }
  }
  jobs3: 〈0;#Jobs〉
  jobs3: {
    [string]: 〈1;#Job〉
  }
  jobs3: {
    fooTest1: {
      name: "badName"
    }
  }
}
-- out/eval --
Errors:
jobs1: field `foo1` not allowed:
    ./in.cue:6:8
    ./in.cue:7:2
    ./in.cue:9:2
    ./in.cue:16:8
jobs3: field `fooTest1` not allowed:
    ./in.cue:6:8
    ./in.cue:7:2
    ./in.cue:9:2
    ./in.cue:22:8
    ./in.cue:23:8
jobs2.fooTest.name: invalid value "badName" (out of bound =~"^test"):
    ./in.cue:9:22

Result:
(_|_){
  // [eval]
  #JobID: (string){ =~"^[a-zA-Z]*$" }
  #Job: (#struct){
    name: (string){ string }
    cmd: (string){ string }
  }
  #Jobs: (#struct){
  }
  jobs: (struct){
    foo: (struct){
      name: (string){ "allGood" }
    }
  }
  jobs1: (_|_){
    // [eval] jobs1: field `foo1` not allowed:
    //     ./in.cue:6:8
    //     ./in.cue:7:2
    //     ./in.cue:9:2
    //     ./in.cue:16:8
    foo1: (#struct){
    }
  }
  jobs2: (_|_){
    // [eval]
    fooTest: (_|_){
      // [eval]
      name: (_|_){
        // [eval] jobs2.fooTest.name: invalid value "badName" (out of bound =~"^test"):
        //     ./in.cue:9:22
      }
      cmd: (string){ string }
    }
  }
  jobs3: (_|_){
    // [eval] jobs3: field `fooTest1` not allowed:
    //     ./in.cue:6:8
    //     ./in.cue:7:2
    //     ./in.cue:9:2
    //     ./in.cue:22:8
    //     ./in.cue:23:8
    fooTest1: (#struct){
      name: (string){ "badName" }
      cmd: (string){ string }
    }
  }
}
