cuelang.org/go@v0.13.0/cue/testdata/definitions/036_closing_with_failed_optional.txtar (about)

     1  #name: closing with failed optional
     2  #evalPartial
     3  -- in.cue --
     4  #k1: {a: int, b?: int} & #A // closed({a: int})
     5  
     6  #k2: #A & {a: int, b?: int} // closed({a: int})
     7  
     8  o1: {a?: 3} & {a?: 4} // {a?: _|_}
     9  
    10  // Optional fields with error values can be elimintated when closing
    11  #o2: {a?: 3} & {a?: 4} // close({})
    12  
    13  #d1: {a?: 2, b: 4} | {a?: 3, c: 5}
    14  
    15  v1: #d1 & {a?: 3, b: 4} // close({b: 4})
    16  
    17  #A: {a: int}
    18  -- out/def --
    19  #k1: {
    20  	a:  int
    21  	b?: int
    22  } & #A
    23  #A: {
    24  	a: int
    25  }
    26  #k2: #A & {
    27  	a:  int
    28  	b?: int
    29  }
    30  o1: {
    31  	a?: _|_ // conflicting values 3 and 4
    32  }
    33  
    34  // Optional fields with error values can be elimintated when closing
    35  #o2: {
    36  	a?: _|_ // conflicting values 3 and 4
    37  }
    38  #d1: {
    39  	a?: 2
    40  	b:  4
    41  } | {
    42  	a?: 3
    43  	c:  5
    44  }
    45  v1: #d1 & {
    46  	a?: 3
    47  	b:  4
    48  }
    49  -- out/export --
    50  o1: {}
    51  v1: {
    52  	b: 4
    53  }
    54  -- out/yaml --
    55  o1: {}
    56  v1:
    57    b: 4
    58  -- out/json --
    59  {"o1":{},"v1":{"b":4}}
    60  -- out/legacy-debug --
    61  <0>{#k1: <1>C{a: int}, #A: <2>C{a: int}, #k2: <3>C{a: int}, o1: <4>{a?: _|_((3 & 4):conflicting values 3 and 4)}, #o2: <5>C{a?: _|_((3 & 4):conflicting values 3 and 4)}, #d1: (<6>C{a?: 2, b: 4} | <7>C{a?: 3, c: 5}), v1: <8>C{a?: _|_((2 & 3):conflicting values 2 and 3), b: 4}}
    62  -- out/compile --
    63  --- in.cue
    64  {
    65    #k1: ({
    66      a: int
    67      b?: int
    68    } & 〈0;#A〉)
    69    #k2: (〈0;#A〉 & {
    70      a: int
    71      b?: int
    72    })
    73    o1: ({
    74      a?: 3
    75    } & {
    76      a?: 4
    77    })
    78    #o2: ({
    79      a?: 3
    80    } & {
    81      a?: 4
    82    })
    83    #d1: ({
    84      a?: 2
    85      b: 4
    86    }|{
    87      a?: 3
    88      c: 5
    89    })
    90    v1: (〈0;#d1〉 & {
    91      a?: 3
    92      b: 4
    93    })
    94    #A: {
    95      a: int
    96    }
    97  }
    98  -- out/eval/stats --
    99  Leaks:  0
   100  Freed:  28
   101  Reused: 23
   102  Allocs: 5
   103  Retain: 1
   104  
   105  Unifications: 24
   106  Conjuncts:    43
   107  Disjuncts:    29
   108  -- out/evalalpha --
   109  (struct){
   110    #k1: (#struct){
   111      a: (int){ int }
   112      b?: (_|_){
   113        // [eval] #k1.b: field not allowed:
   114        //     ./in.cue:1:15
   115      }
   116    }
   117    #k2: (#struct){
   118      a: (int){ int }
   119      b?: (_|_){
   120        // [eval] #k2.b: field not allowed:
   121        //     ./in.cue:3:20
   122      }
   123    }
   124    o1: (struct){
   125      a?: (_|_){
   126        // [eval] o1.a: conflicting values 4 and 3:
   127        //     ./in.cue:5:10
   128        //     ./in.cue:5:20
   129      }
   130    }
   131    #o2: (#struct){
   132      a?: (_|_){
   133        // [eval] #o2.a: conflicting values 4 and 3:
   134        //     ./in.cue:8:11
   135        //     ./in.cue:8:21
   136      }
   137    }
   138    #d1: (#struct){ |((#struct){
   139        a?: (int){ 2 }
   140        b: (int){ 4 }
   141      }, (#struct){
   142        a?: (int){ 3 }
   143        c: (int){ 5 }
   144      }) }
   145    v1: (#struct){
   146      a?: (_|_){
   147        // [eval] v1.a: conflicting values 2 and 3:
   148        //     ./in.cue:10:11
   149        //     ./in.cue:12:16
   150      }
   151      b: (int){ 4 }
   152    }
   153    #A: (#struct){
   154      a: (int){ int }
   155    }
   156  }
   157  -- diff/-out/evalalpha<==>+out/eval --
   158  diff old new
   159  --- old
   160  +++ new
   161  @@ -1,11 +1,17 @@
   162   (struct){
   163     #k1: (#struct){
   164       a: (int){ int }
   165  -    b?: (int){ int }
   166  +    b?: (_|_){
   167  +      // [eval] #k1.b: field not allowed:
   168  +      //     ./in.cue:1:15
   169  +    }
   170     }
   171     #k2: (#struct){
   172       a: (int){ int }
   173  -    b?: (int){ int }
   174  +    b?: (_|_){
   175  +      // [eval] #k2.b: field not allowed:
   176  +      //     ./in.cue:3:20
   177  +    }
   178     }
   179     o1: (struct){
   180       a?: (_|_){
   181  @@ -32,7 +38,6 @@
   182       a?: (_|_){
   183         // [eval] v1.a: conflicting values 2 and 3:
   184         //     ./in.cue:10:11
   185  -      //     ./in.cue:12:5
   186         //     ./in.cue:12:16
   187       }
   188       b: (int){ 4 }
   189  -- diff/todo/p2 --
   190  v1.a: Incorrect path in error message.
   191  -- diff/todo/p3 --
   192  Missing error position.
   193  -- out/eval --
   194  (struct){
   195    #k1: (#struct){
   196      a: (int){ int }
   197      b?: (int){ int }
   198    }
   199    #k2: (#struct){
   200      a: (int){ int }
   201      b?: (int){ int }
   202    }
   203    o1: (struct){
   204      a?: (_|_){
   205        // [eval] o1.a: conflicting values 4 and 3:
   206        //     ./in.cue:5:10
   207        //     ./in.cue:5:20
   208      }
   209    }
   210    #o2: (#struct){
   211      a?: (_|_){
   212        // [eval] #o2.a: conflicting values 4 and 3:
   213        //     ./in.cue:8:11
   214        //     ./in.cue:8:21
   215      }
   216    }
   217    #d1: (#struct){ |((#struct){
   218        a?: (int){ 2 }
   219        b: (int){ 4 }
   220      }, (#struct){
   221        a?: (int){ 3 }
   222        c: (int){ 5 }
   223      }) }
   224    v1: (#struct){
   225      a?: (_|_){
   226        // [eval] v1.a: conflicting values 2 and 3:
   227        //     ./in.cue:10:11
   228        //     ./in.cue:12:5
   229        //     ./in.cue:12:16
   230      }
   231      b: (int){ 4 }
   232    }
   233    #A: (#struct){
   234      a: (int){ int }
   235    }
   236  }