...

Text file src/cuelang.org/go/cue/testdata/disjunctions/embed.txtar

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

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

View as plain text