cuelang.org/go@v0.13.0/cue/testdata/fulleval/009_template_unification_within_one_struct.txtar (about)

     1  #name: template unification within one struct
     2  #evalFull
     3  -- in.cue --
     4  a: {
     5  	{[A=string]: {name: A}}
     6  
     7  	// TODO: allow duplicate alias here
     8  	{[X=string]: {kind: X}}
     9  }
    10  a: "A": _
    11  a: "C": _
    12  a: "E": {c: "bar"}
    13  -- out/def --
    14  a: {
    15  	{[A=string]: {
    16  		name: A, kind: A
    17  	}}
    18  	E: {
    19  		name: "E"
    20  		kind: "E"
    21  		c:    "bar"
    22  	}
    23  	A: {
    24  		name: "A"
    25  		kind: "A"
    26  	}
    27  	C: {
    28  		name: "C"
    29  		kind: "C"
    30  	}
    31  }
    32  -- out/export --
    33  a: {
    34  	E: {
    35  		name: "E"
    36  		kind: "E"
    37  		c:    "bar"
    38  	}
    39  	A: {
    40  		name: "A"
    41  		kind: "A"
    42  	}
    43  	C: {
    44  		name: "C"
    45  		kind: "C"
    46  	}
    47  }
    48  -- out/yaml --
    49  a:
    50    E:
    51      name: E
    52      kind: E
    53      c: bar
    54    A:
    55      name: A
    56      kind: A
    57    C:
    58      name: C
    59      kind: C
    60  -- out/json --
    61  {"a":{"E":{"name":"E","kind":"E","c":"bar"},"A":{"name":"A","kind":"A"},"C":{"name":"C","kind":"C"}}}
    62  -- out/legacy-debug --
    63  <0>{a: <1>{[]: <2>(A: string)->(<3>{name: <2>.A} & <4>{kind: <2>.A}), E: <5>{name: "E", kind: "E", c: "bar"}, A: <6>{name: "A", kind: "A"}, C: <7>{name: "C", kind: "C"}}}
    64  -- out/compile --
    65  --- in.cue
    66  {
    67    a: {
    68      {
    69        [string]: {
    70          name: 〈1;-〉
    71        }
    72      }
    73      {
    74        [string]: {
    75          kind: 〈1;-〉
    76        }
    77      }
    78    }
    79    a: {
    80      A: _
    81    }
    82    a: {
    83      C: _
    84    }
    85    a: {
    86      E: {
    87        c: "bar"
    88      }
    89    }
    90  }
    91  -- out/eval/stats --
    92  Leaks:  0
    93  Freed:  12
    94  Reused: 8
    95  Allocs: 4
    96  Retain: 0
    97  
    98  Unifications: 12
    99  Conjuncts:    23
   100  Disjuncts:    12
   101  -- out/eval --
   102  (struct){
   103    a: (struct){
   104      A: (struct){
   105        name: (string){ "A" }
   106        kind: (string){ "A" }
   107      }
   108      C: (struct){
   109        name: (string){ "C" }
   110        kind: (string){ "C" }
   111      }
   112      E: (struct){
   113        c: (string){ "bar" }
   114        name: (string){ "E" }
   115        kind: (string){ "E" }
   116      }
   117    }
   118  }