...

Text file src/cuelang.org/go/cue/testdata/definitions/issue359.txtar

Documentation: cuelang.org/go/cue/testdata/definitions

     1-- in.cue --
     2#simple: {
     3	peso: *1 | int
     4	edad: *2 | int
     5}
     6
     7// Second struct is not considered closed, as expected
     8good: #simple & {
     9	peso: 4
    10}
    11
    12#complex: {
    13	things: [string]: #simple
    14}
    15
    16// Still, no closedness issue in the second struct
    17#many: #complex & {
    18	things: hola: peso: 2
    19	things: sol: peso:  3
    20}
    21
    22// Inner struct in second struct IS considered closed: why?
    23bad: #many & {
    24	things: hola: peso: 2
    25}
    26
    27// non-definition equivalent
    28many: #complex & {
    29	things: hola: peso: 2
    30	things: sol: peso:  3
    31}
    32
    33// Now inner struct on second struct is NOT considered closed
    34notbad: many & {
    35	things: hola: peso: 2
    36}
    37-- out/eval/stats --
    38Leaks:  0
    39Freed:  81
    40Reused: 74
    41Allocs: 7
    42Retain: 0
    43
    44Unifications: 41
    45Conjuncts:    134
    46Disjuncts:    81
    47-- out/eval --
    48(struct){
    49  #simple: (#struct){
    50    peso: (int){ |(*(int){ 1 }, (int){ int }) }
    51    edad: (int){ |(*(int){ 2 }, (int){ int }) }
    52  }
    53  good: (#struct){
    54    peso: (int){ 4 }
    55    edad: (int){ |(*(int){ 2 }, (int){ int }) }
    56  }
    57  #complex: (#struct){
    58    things: (#struct){
    59    }
    60  }
    61  #many: (#struct){
    62    things: (#struct){
    63      hola: (#struct){
    64        peso: (int){ 2 }
    65        edad: (int){ |(*(int){ 2 }, (int){ int }) }
    66      }
    67      sol: (#struct){
    68        peso: (int){ 3 }
    69        edad: (int){ |(*(int){ 2 }, (int){ int }) }
    70      }
    71    }
    72  }
    73  bad: (#struct){
    74    things: (#struct){
    75      hola: (#struct){
    76        peso: (int){ 2 }
    77        edad: (int){ |(*(int){ 2 }, (int){ int }) }
    78      }
    79      sol: (#struct){
    80        peso: (int){ 3 }
    81        edad: (int){ |(*(int){ 2 }, (int){ int }) }
    82      }
    83    }
    84  }
    85  many: (#struct){
    86    things: (#struct){
    87      hola: (#struct){
    88        peso: (int){ 2 }
    89        edad: (int){ |(*(int){ 2 }, (int){ int }) }
    90      }
    91      sol: (#struct){
    92        peso: (int){ 3 }
    93        edad: (int){ |(*(int){ 2 }, (int){ int }) }
    94      }
    95    }
    96  }
    97  notbad: (#struct){
    98    things: (#struct){
    99      hola: (#struct){
   100        peso: (int){ 2 }
   101        edad: (int){ |(*(int){ 2 }, (int){ int }) }
   102      }
   103      sol: (#struct){
   104        peso: (int){ 3 }
   105        edad: (int){ |(*(int){ 2 }, (int){ int }) }
   106      }
   107    }
   108  }
   109}
   110-- out/compile --
   111--- in.cue
   112{
   113  #simple: {
   114    peso: (*1|int)
   115    edad: (*2|int)
   116  }
   117  good: (〈0;#simple〉 & {
   118    peso: 4
   119  })
   120  #complex: {
   121    things: {
   122      [string]: 〈2;#simple〉
   123    }
   124  }
   125  #many: (〈0;#complex〉 & {
   126    things: {
   127      hola: {
   128        peso: 2
   129      }
   130    }
   131    things: {
   132      sol: {
   133        peso: 3
   134      }
   135    }
   136  })
   137  bad: (〈0;#many〉 & {
   138    things: {
   139      hola: {
   140        peso: 2
   141      }
   142    }
   143  })
   144  many: (〈0;#complex〉 & {
   145    things: {
   146      hola: {
   147        peso: 2
   148      }
   149    }
   150    things: {
   151      sol: {
   152        peso: 3
   153      }
   154    }
   155  })
   156  notbad: (〈0;many〉 & {
   157    things: {
   158      hola: {
   159        peso: 2
   160      }
   161    }
   162  })
   163}

View as plain text