github.com/solo-io/cue@v0.4.7/cue/testdata/fulleval/035_optionals_with_label_filters.txtar (about) 1 # DO NOT EDIT; generated by go run testdata/gen.go 2 # 3 #name: optionals with label filters 4 #evalFull 5 -- in.cue -- 6 #JobID: =~"^[a-zA-Z]*$" 7 #Job: { 8 name: string 9 cmd: string 10 } 11 #Jobs: { 12 {[#JobID]: #Job} 13 14 {[=~"Test$"]: name: =~"^test"}// Must work without ... 15 } 16 17 jobs: foo: name: "allGood" 18 jobs: foo: name: "allGood" 19 20 jobs1: #Jobs 21 jobs1: foo1: {} // faulty 22 23 jobs2: #Jobs 24 jobs2: fooTest: name: "badName" // faulty 25 26 jobs3: #Jobs 27 jobs3: [string]: #Job 28 jobs3: fooTest1: name: "badName" // faulty 29 -- out/def -- 30 #JobID: =~"^[a-zA-Z]*$" 31 #Job: { 32 name: string 33 cmd: string 34 } 35 #Jobs: { 36 {[#JobID]: #Job} 37 {[=~"Test$"]: { 38 name: =~"^test", ... 39 }} 40 } 41 jobs: { 42 foo: { 43 name: "allGood" 44 } 45 } 46 jobs1: _|_ // field "foo1" not allowed in closed struct 47 jobs2: #Jobs & { 48 fooTest: { 49 name: "badName" 50 } 51 } 52 jobs3: _|_ // field "fooTest1" not allowed in closed struct 53 -- out/legacy-debug -- 54 <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)} 55 -- out/compile -- 56 --- in.cue 57 { 58 #JobID: =~"^[a-zA-Z]*$" 59 #Job: { 60 name: string 61 cmd: string 62 } 63 #Jobs: { 64 { 65 [〈2;#JobID〉]: 〈2;#Job〉 66 } 67 { 68 [=~"Test$"]: { 69 name: =~"^test" 70 } 71 } 72 } 73 jobs: { 74 foo: { 75 name: "allGood" 76 } 77 } 78 jobs: { 79 foo: { 80 name: "allGood" 81 } 82 } 83 jobs1: 〈0;#Jobs〉 84 jobs1: { 85 foo1: {} 86 } 87 jobs2: 〈0;#Jobs〉 88 jobs2: { 89 fooTest: { 90 name: "badName" 91 } 92 } 93 jobs3: 〈0;#Jobs〉 94 jobs3: { 95 [string]: 〈1;#Job〉 96 } 97 jobs3: { 98 fooTest1: { 99 name: "badName" 100 } 101 } 102 } 103 -- out/eval -- 104 Errors: 105 jobs1: field not allowed: foo1: 106 ./in.cue:6:8 107 ./in.cue:7:2 108 ./in.cue:9:2 109 ./in.cue:15:17 110 ./in.cue:16:8 111 jobs3: field not allowed: fooTest1: 112 ./in.cue:6:8 113 ./in.cue:7:2 114 ./in.cue:9:2 115 ./in.cue:21:8 116 ./in.cue:22:8 117 ./in.cue:23:8 118 jobs2.fooTest.name: invalid value "badName" (out of bound =~"^test"): 119 ./in.cue:9:22 120 ./in.cue:19:23 121 122 Result: 123 (_|_){ 124 // [eval] 125 #JobID: (string){ =~"^[a-zA-Z]*$" } 126 #Job: (#struct){ 127 name: (string){ string } 128 cmd: (string){ string } 129 } 130 #Jobs: (#struct){ 131 } 132 jobs: (struct){ 133 foo: (struct){ 134 name: (string){ "allGood" } 135 } 136 } 137 jobs1: (_|_){ 138 // [eval] 139 foo1: (_|_){ 140 // [eval] jobs1: field not allowed: foo1: 141 // ./in.cue:6:8 142 // ./in.cue:7:2 143 // ./in.cue:9:2 144 // ./in.cue:15:17 145 // ./in.cue:16:8 146 } 147 } 148 jobs2: (_|_){ 149 // [eval] 150 fooTest: (_|_){ 151 // [eval] 152 name: (_|_){ 153 // [eval] jobs2.fooTest.name: invalid value "badName" (out of bound =~"^test"): 154 // ./in.cue:9:22 155 // ./in.cue:19:23 156 } 157 cmd: (string){ string } 158 } 159 } 160 jobs3: (_|_){ 161 // [eval] 162 fooTest1: (_|_){ 163 // [eval] jobs3: field not allowed: fooTest1: 164 // ./in.cue:6:8 165 // ./in.cue:7:2 166 // ./in.cue:9:2 167 // ./in.cue:21:8 168 // ./in.cue:22:8 169 // ./in.cue:23:8 170 } 171 } 172 }