cuelang.org/go@v0.10.1/cue/testdata/references/labels.txtar (about) 1 -- in.cue -- 2 // Label aliases 3 4 // direct 5 a: [X=string]: X 6 a: bar: _ 7 8 // in struct 9 b: [X=string]: {X} 10 b: bar: _ 11 12 // in structs 13 c: [X=string]: X 14 c: [Y=string]: {{{Y}}} 15 c: bar: _ 16 17 // in sub field 18 d: [X=string]: name: X 19 d: bar: {} 20 21 // nested 22 e: [X=string]: [Y=string]: X + Y 23 e: foo: bar: _ 24 25 patternField: t1: { 26 r=[string]: {b: r | null} 27 a: {r: 0} 28 } 29 30 patternField: t2: { 31 a: {r: 0} 32 x=[string]: {z: 1, b: x.z} 33 } 34 35 // Field aliases 36 37 bar: 3 38 f1: C="foo\(bar)": { 39 name: "xx" 40 foo: C.name 41 } 42 43 // nested 44 f1: D="foo\(bar)": E="foo\(bar)baz": { 45 name: "xx" 46 a: D["foo\(bar)baz"].name 47 b: E.name 48 } 49 50 // Combo 51 52 c1: C="foo\(bar)": [D=string]: { 53 name: D 54 foo: C.x.name 55 } 56 c1: foo3: x: _ 57 58 emptyLabel: { 59 "": 1 60 a: emptyLabel[""] 61 } 62 63 underscore: a: { 64 // Issue #1454 65 foo: #Foo 66 foo: "_": "bar" 67 #Foo: [=~""]: string 68 } 69 70 underscore: c: { 71 foo: "_": "any" 72 foo: [=~""]: string 73 } 74 75 underscore: d: { 76 bar: "_": "any" 77 #bar: [string]: string 78 bar: #bar 79 } 80 81 underscore: e: { 82 baz: "_h": "any" 83 #baz: [=~"_"]: string 84 baz: #baz 85 } 86 87 // TODO: support. Also not yet supported in old implementation. 88 // c10: { 89 // C=[string]: { 90 // name: "x" 91 // foo: C.name 92 // } 93 // } 94 // c2: c1 & { x: _ } 95 -- out/eval/stats -- 96 Leaks: 0 97 Freed: 58 98 Reused: 52 99 Allocs: 6 100 Retain: 3 101 102 Unifications: 56 103 Conjuncts: 103 104 Disjuncts: 61 105 -- out/eval -- 106 (struct){ 107 a: (struct){ 108 bar: (string){ "bar" } 109 } 110 b: (struct){ 111 bar: (string){ "bar" } 112 } 113 c: (struct){ 114 bar: (string){ "bar" } 115 } 116 d: (struct){ 117 bar: (struct){ 118 name: (string){ "bar" } 119 } 120 } 121 e: (struct){ 122 foo: (struct){ 123 bar: (string){ "foobar" } 124 } 125 } 126 patternField: (struct){ 127 t1: (struct){ 128 a: (struct){ 129 r: (int){ 0 } 130 b: (null){ null } 131 } 132 } 133 t2: (struct){ 134 a: (struct){ 135 r: (int){ 0 } 136 z: (int){ 1 } 137 b: (int){ 1 } 138 } 139 } 140 } 141 bar: (int){ 3 } 142 f1: (struct){ 143 foo3: (struct){ 144 name: (string){ "xx" } 145 foo: (string){ "xx" } 146 foo3baz: (struct){ 147 name: (string){ "xx" } 148 a: (string){ "xx" } 149 b: (string){ "xx" } 150 } 151 } 152 } 153 c1: (struct){ 154 foo3: (struct){ 155 x: (struct){ 156 name: (string){ "x" } 157 foo: (string){ "x" } 158 } 159 } 160 } 161 emptyLabel: (struct){ 162 "": (int){ 1 } 163 a: (int){ 1 } 164 } 165 underscore: (struct){ 166 a: (struct){ 167 foo: (#struct){ 168 "_": (string){ "bar" } 169 } 170 #Foo: (#struct){ 171 } 172 } 173 c: (struct){ 174 foo: (struct){ 175 "_": (string){ "any" } 176 } 177 } 178 d: (struct){ 179 bar: (#struct){ 180 "_": (string){ "any" } 181 } 182 #bar: (#struct){ 183 } 184 } 185 e: (struct){ 186 baz: (#struct){ 187 "_h": (string){ "any" } 188 } 189 #baz: (#struct){ 190 } 191 } 192 } 193 } 194 -- out/compile -- 195 --- in.cue 196 { 197 a: { 198 [string]: 〈0;-〉 199 } 200 a: { 201 bar: _ 202 } 203 b: { 204 [string]: { 205 〈1;-〉 206 } 207 } 208 b: { 209 bar: _ 210 } 211 c: { 212 [string]: 〈0;-〉 213 } 214 c: { 215 [string]: { 216 { 217 { 218 〈3;-〉 219 } 220 } 221 } 222 } 223 c: { 224 bar: _ 225 } 226 d: { 227 [string]: { 228 name: 〈1;-〉 229 } 230 } 231 d: { 232 bar: {} 233 } 234 e: { 235 [string]: { 236 [string]: (〈1;-〉 + 〈0;-〉) 237 } 238 } 239 e: { 240 foo: { 241 bar: _ 242 } 243 } 244 patternField: { 245 t1: { 246 [string]: { 247 b: (〈1;(〈0;-〉)〉|null) 248 } 249 a: { 250 r: 0 251 } 252 } 253 } 254 patternField: { 255 t2: { 256 a: { 257 r: 0 258 } 259 [string]: { 260 z: 1 261 b: 〈1;(〈0;-〉)〉.z 262 } 263 } 264 } 265 bar: 3 266 f1: { 267 "foo\(〈1;bar〉)": { 268 name: "xx" 269 foo: 〈1;("foo\(〈1;bar〉)")〉.name 270 } 271 } 272 f1: { 273 "foo\(〈1;bar〉)": { 274 "foo\(〈2;bar〉)baz": { 275 name: "xx" 276 a: 〈2;("foo\(〈1;bar〉)")〉["foo\(〈3;bar〉)baz"].name 277 b: 〈1;("foo\(〈2;bar〉)baz")〉.name 278 } 279 } 280 } 281 c1: { 282 "foo\(〈1;bar〉)": { 283 [string]: { 284 name: 〈1;-〉 285 foo: 〈2;("foo\(〈1;bar〉)")〉.x.name 286 } 287 } 288 } 289 c1: { 290 foo3: { 291 x: _ 292 } 293 } 294 emptyLabel: { 295 "": 1 296 a: 〈1;emptyLabel〉[""] 297 } 298 underscore: { 299 a: { 300 foo: 〈0;#Foo〉 301 foo: { 302 "_": "bar" 303 } 304 #Foo: { 305 [=~""]: string 306 } 307 } 308 } 309 underscore: { 310 c: { 311 foo: { 312 "_": "any" 313 } 314 foo: { 315 [=~""]: string 316 } 317 } 318 } 319 underscore: { 320 d: { 321 bar: { 322 "_": "any" 323 } 324 #bar: { 325 [string]: string 326 } 327 bar: 〈0;#bar〉 328 } 329 } 330 underscore: { 331 e: { 332 baz: { 333 "_h": "any" 334 } 335 #baz: { 336 [=~"_"]: string 337 } 338 baz: 〈0;#baz〉 339 } 340 } 341 }