github.com/solo-io/cue@v0.4.7/cue/testdata/disjunctions/embed.txtar (about)

     1  -- in.cue --
     2  // Given the existence of this field, embedDefault is a struct. This
     3  // means that embedding this conjunction into `embedDefault` itself should
     4  // make it resolve to `{a: 2}`.
     5  
     6  default: {
     7      y: *1 | {a: 2}
     8      y
     9  }
    10  
    11  unambiguous: {
    12      y: 1 | {a: 2}
    13      y
    14  }
    15  
    16  forDefault: {
    17      y: *1 | {a: 2}
    18      for x in [1] {y}
    19  }
    20  
    21  // Carry over default to first disjunct.
    22  openDefault: {
    23      #y: *1 | {a: 2}
    24      #y
    25  }
    26  
    27  openAmbiguous: {
    28      #y: 1 | {a: 2}
    29      #y
    30  }
    31  
    32  forceStruct: {
    33      #y: 1 | {a: 2}
    34      #y
    35      {}
    36  }
    37  
    38  defaultsMulti: {
    39      a: {
    40          #def: {
    41              *{} | {a: string} | {b: string}
    42              *{} | {c: string} | {d: string}
    43          }
    44  
    45          a: #def & {a: "foo"}
    46      }
    47  
    48      b: {
    49          #def: {
    50              *{} | {a: string} | {b: string}
    51              *{} | {c: string} | {d: string}
    52              *{} | {d: string} | {e: string}
    53          }
    54  
    55          a: #def & {a: "foo", e: "bar"}
    56      }
    57  }
    58  
    59  nested: {
    60  	a: 1 | 2 | *(
    61  		(3 | 4 | *( 5 | 6 | *7)) & ( 3 | 4 | ( *7 | 8 )))
    62  }
    63  
    64  -- out/eval --
    65  (struct){
    66    default: (struct){
    67      y: ((int|struct)){ |(*(int){ 1 }, (struct){
    68          a: (int){ 2 }
    69        }) }
    70      a: (int){ 2 }
    71    }
    72    unambiguous: (struct){
    73      y: ((int|struct)){ |((int){ 1 }, (struct){
    74          a: (int){ 2 }
    75        }) }
    76      a: (int){ 2 }
    77    }
    78    forDefault: (struct){
    79      y: ((int|struct)){ |(*(int){ 1 }, (struct){
    80          a: (int){ 2 }
    81        }) }
    82      a: (int){ 2 }
    83    }
    84    openDefault: ((int|struct)){ |(*(int){
    85        1
    86        #y: ((int|struct)){ |(*(int){ 1 }, (#struct){
    87            a: (int){ 2 }
    88          }) }
    89      }, (#struct){
    90        #y: ((int|struct)){ |(*(int){ 1 }, (#struct){
    91            a: (int){ 2 }
    92          }) }
    93        a: (int){ 2 }
    94      }) }
    95    openAmbiguous: ((int|struct)){ |((int){
    96        1
    97        #y: ((int|struct)){ |((int){ 1 }, (#struct){
    98            a: (int){ 2 }
    99          }) }
   100      }, (#struct){
   101        #y: ((int|struct)){ |((int){ 1 }, (#struct){
   102            a: (int){ 2 }
   103          }) }
   104        a: (int){ 2 }
   105      }) }
   106    forceStruct: (#struct){
   107      #y: ((int|struct)){ |((int){ 1 }, (#struct){
   108          a: (int){ 2 }
   109        }) }
   110      a: (int){ 2 }
   111    }
   112    defaultsMulti: (struct){
   113      a: (struct){
   114        #def: (#struct){ |(*(#struct){
   115          }, (#struct){
   116            c: (string){ string }
   117          }, (#struct){
   118            d: (string){ string }
   119          }, (#struct){
   120            a: (string){ string }
   121          }, (#struct){
   122            a: (string){ string }
   123            c: (string){ string }
   124          }, (#struct){
   125            a: (string){ string }
   126            d: (string){ string }
   127          }, (#struct){
   128            b: (string){ string }
   129          }, (#struct){
   130            b: (string){ string }
   131            c: (string){ string }
   132          }, (#struct){
   133            b: (string){ string }
   134            d: (string){ string }
   135          }) }
   136        a: (#struct){ |(*(#struct){
   137            a: (string){ "foo" }
   138          }, (#struct){
   139            a: (string){ "foo" }
   140            c: (string){ string }
   141          }, (#struct){
   142            a: (string){ "foo" }
   143            d: (string){ string }
   144          }) }
   145      }
   146      b: (struct){
   147        #def: (#struct){ |(*(#struct){
   148          }, (#struct){
   149            d: (string){ string }
   150          }, (#struct){
   151            e: (string){ string }
   152          }, (#struct){
   153            c: (string){ string }
   154          }, (#struct){
   155            c: (string){ string }
   156            d: (string){ string }
   157          }, (#struct){
   158            c: (string){ string }
   159            e: (string){ string }
   160          }, (#struct){
   161            d: (string){ string }
   162            e: (string){ string }
   163          }, (#struct){
   164            a: (string){ string }
   165          }, (#struct){
   166            a: (string){ string }
   167            d: (string){ string }
   168          }, (#struct){
   169            a: (string){ string }
   170            e: (string){ string }
   171          }, (#struct){
   172            a: (string){ string }
   173            c: (string){ string }
   174          }, (#struct){
   175            a: (string){ string }
   176            c: (string){ string }
   177            d: (string){ string }
   178          }, (#struct){
   179            a: (string){ string }
   180            c: (string){ string }
   181            e: (string){ string }
   182          }, (#struct){
   183            a: (string){ string }
   184            d: (string){ string }
   185            e: (string){ string }
   186          }, (#struct){
   187            b: (string){ string }
   188          }, (#struct){
   189            b: (string){ string }
   190            d: (string){ string }
   191          }, (#struct){
   192            b: (string){ string }
   193            e: (string){ string }
   194          }, (#struct){
   195            b: (string){ string }
   196            c: (string){ string }
   197          }, (#struct){
   198            b: (string){ string }
   199            c: (string){ string }
   200            d: (string){ string }
   201          }, (#struct){
   202            b: (string){ string }
   203            c: (string){ string }
   204            e: (string){ string }
   205          }, (#struct){
   206            b: (string){ string }
   207            d: (string){ string }
   208            e: (string){ string }
   209          }) }
   210        a: (#struct){ |(*(#struct){
   211            a: (string){ "foo" }
   212            e: (string){ "bar" }
   213          }, (#struct){
   214            a: (string){ "foo" }
   215            e: (string){ "bar" }
   216            c: (string){ string }
   217          }, (#struct){
   218            a: (string){ "foo" }
   219            e: (string){ "bar" }
   220            d: (string){ string }
   221          }) }
   222      }
   223    }
   224    nested: (struct){
   225      a: (int){ |(*(int){ 7 }, (int){ 2 }, (int){ 3 }, (int){ 4 }, (int){ 1 }) }
   226    }
   227  }
   228  -- out/compile --
   229  --- in.cue
   230  {
   231    default: {
   232      y: (*1|{
   233        a: 2
   234      })
   235      〈0;y〉
   236    }
   237    unambiguous: {
   238      y: (1|{
   239        a: 2
   240      })
   241      〈0;y〉
   242    }
   243    forDefault: {
   244      y: (*1|{
   245        a: 2
   246      })
   247      for _, x in [
   248        1,
   249      ] {
   250        〈2;y〉
   251      }
   252    }
   253    openDefault: {
   254      #y: (*1|{
   255        a: 2
   256      })
   257      〈0;#y〉
   258    }
   259    openAmbiguous: {
   260      #y: (1|{
   261        a: 2
   262      })
   263      〈0;#y〉
   264    }
   265    forceStruct: {
   266      #y: (1|{
   267        a: 2
   268      })
   269      〈0;#y〉
   270      {}
   271    }
   272    defaultsMulti: {
   273      a: {
   274        #def: {
   275          (*{}|{
   276            a: string
   277          }|{
   278            b: string
   279          })
   280          (*{}|{
   281            c: string
   282          }|{
   283            d: string
   284          })
   285        }
   286        a: (〈0;#def〉 & {
   287          a: "foo"
   288        })
   289      }
   290      b: {
   291        #def: {
   292          (*{}|{
   293            a: string
   294          }|{
   295            b: string
   296          })
   297          (*{}|{
   298            c: string
   299          }|{
   300            d: string
   301          })
   302          (*{}|{
   303            d: string
   304          }|{
   305            e: string
   306          })
   307        }
   308        a: (〈0;#def〉 & {
   309          a: "foo"
   310          e: "bar"
   311        })
   312      }
   313    }
   314    nested: {
   315      a: (1|2|*((3|4|*(5|6|*7)) & (3|4|(*7|8))))
   316    }
   317  }