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  }