cuelang.org/go@v0.13.0/cue/testdata/resolve/043_diamond-shaped_constraints.txtar (about)

     1  #name: diamond-shaped constraints
     2  #evalPartial
     3  -- in.cue --
     4  S: {
     5  	A: {
     6  		a: 1
     7  	}
     8  	B: A & {
     9  		b: 2
    10  	}
    11  }
    12  T: S & {// S == { A: { a:1 }, B: { a:1, b:2 } }
    13  	A: {
    14  		c: 3
    15  	}
    16  	B: {
    17  		d: 4 // Combines constraints S.A, S.B, T.A, and T.B // S.B & A
    18  	}
    19  }
    20  -- out/def --
    21  T: S & {
    22  	A: {
    23  		c: 3
    24  	}
    25  	B: {
    26  		d: 4
    27  	}
    28  }
    29  S: {
    30  	A: {
    31  		a: 1
    32  	}
    33  	B: A & {
    34  		b: 2
    35  	}
    36  }
    37  -- out/export --
    38  T: {
    39  	A: {
    40  		a: 1
    41  		c: 3
    42  	}
    43  	B: {
    44  		a: 1
    45  		b: 2
    46  		c: 3
    47  		d: 4
    48  	}
    49  }
    50  S: {
    51  	A: {
    52  		a: 1
    53  	}
    54  	B: {
    55  		a: 1
    56  		b: 2
    57  	}
    58  }
    59  -- out/yaml --
    60  T:
    61    A:
    62      a: 1
    63      c: 3
    64    B:
    65      a: 1
    66      b: 2
    67      c: 3
    68      d: 4
    69  S:
    70    A:
    71      a: 1
    72    B:
    73      a: 1
    74      b: 2
    75  -- out/json --
    76  {"T":{"A":{"a":1,"c":3},"B":{"a":1,"b":2,"c":3,"d":4}},"S":{"A":{"a":1},"B":{"a":1,"b":2}}}
    77  -- out/legacy-debug --
    78  <0>{T: <1>{A: <2>{a: 1, c: 3}, B: <3>{a: 1, b: 2, c: 3, d: 4}}, S: <4>{A: <5>{a: 1}, B: <6>{a: 1, b: 2}}}
    79  -- out/compile --
    80  --- in.cue
    81  {
    82    S: {
    83      A: {
    84        a: 1
    85      }
    86      B: (〈0;A〉 & {
    87        b: 2
    88      })
    89    }
    90    T: (〈0;S〉 & {
    91      A: {
    92        c: 3
    93      }
    94      B: {
    95        d: 4
    96      }
    97    })
    98  }
    99  -- out/eval/stats --
   100  Leaks:  0
   101  Freed:  16
   102  Reused: 12
   103  Allocs: 4
   104  Retain: 0
   105  
   106  Unifications: 16
   107  Conjuncts:    25
   108  Disjuncts:    16
   109  -- out/evalalpha --
   110  (struct){
   111    S: (struct){
   112      A: (struct){
   113        a: (int){ 1 }
   114      }
   115      B: (struct){
   116        b: (int){ 2 }
   117        a: (int){ 1 }
   118      }
   119    }
   120    T: (struct){
   121      A: (struct){
   122        c: (int){ 3 }
   123        a: (int){ 1 }
   124      }
   125      B: (struct){
   126        d: (int){ 4 }
   127        b: (int){ 2 }
   128        c: (int){ 3 }
   129        a: (int){ 1 }
   130      }
   131    }
   132  }
   133  -- diff/-out/evalalpha<==>+out/eval --
   134  diff old new
   135  --- old
   136  +++ new
   137  @@ -4,20 +4,20 @@
   138         a: (int){ 1 }
   139       }
   140       B: (struct){
   141  -      a: (int){ 1 }
   142  -      b: (int){ 2 }
   143  +      b: (int){ 2 }
   144  +      a: (int){ 1 }
   145       }
   146     }
   147     T: (struct){
   148       A: (struct){
   149  -      a: (int){ 1 }
   150  -      c: (int){ 3 }
   151  -    }
   152  -    B: (struct){
   153  -      a: (int){ 1 }
   154  -      c: (int){ 3 }
   155  -      b: (int){ 2 }
   156  +      c: (int){ 3 }
   157  +      a: (int){ 1 }
   158  +    }
   159  +    B: (struct){
   160         d: (int){ 4 }
   161  +      b: (int){ 2 }
   162  +      c: (int){ 3 }
   163  +      a: (int){ 1 }
   164       }
   165     }
   166   }
   167  -- diff/todo/p3 --
   168  Reordering
   169  -- out/eval --
   170  (struct){
   171    S: (struct){
   172      A: (struct){
   173        a: (int){ 1 }
   174      }
   175      B: (struct){
   176        a: (int){ 1 }
   177        b: (int){ 2 }
   178      }
   179    }
   180    T: (struct){
   181      A: (struct){
   182        a: (int){ 1 }
   183        c: (int){ 3 }
   184      }
   185      B: (struct){
   186        a: (int){ 1 }
   187        c: (int){ 3 }
   188        b: (int){ 2 }
   189        d: (int){ 4 }
   190      }
   191    }
   192  }