cuelang.org/go@v0.13.0/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  -- issue3415.cue --
    64  issue3415: full: {
    65  	A: #A & {
    66  		i: {
    67  		  _a + _b
    68  		  _a: 1
    69  		  _b: 10
    70  		}
    71  	}
    72  	#A: {
    73  		i: *0 | number
    74  	}
    75  }
    76  issue3415: reduced: {
    77  	a: {
    78  		1 + #b
    79  		#b: 10
    80  	}
    81  	a: *0 | number
    82  }
    83  -- out/evalalpha/stats --
    84  Leaks:  221
    85  Freed:  0
    86  Reused: 0
    87  Allocs: 221
    88  Retain: 0
    89  
    90  Unifications: 73
    91  Conjuncts:    219
    92  Disjuncts:    106
    93  -- diff/-out/evalalpha/stats<==>+out/eval/stats --
    94  diff old new
    95  --- old
    96  +++ new
    97  @@ -1,9 +1,9 @@
    98  -Leaks:  19
    99  -Freed:  430
   100  -Reused: 413
   101  -Allocs: 36
   102  -Retain: 5
   103  +Leaks:  221
   104  +Freed:  0
   105  +Reused: 0
   106  +Allocs: 221
   107  +Retain: 0
   108   
   109  -Unifications: 268
   110  -Conjuncts:    502
   111  -Disjuncts:    438
   112  +Unifications: 73
   113  +Conjuncts:    219
   114  +Disjuncts:    106
   115  -- out/eval/stats --
   116  Leaks:  19
   117  Freed:  430
   118  Reused: 413
   119  Allocs: 36
   120  Retain: 5
   121  
   122  Unifications: 268
   123  Conjuncts:    502
   124  Disjuncts:    438
   125  -- out/eval --
   126  (struct){
   127    default: (struct){
   128      y: ((int|struct)){ |(*(int){ 1 }, (struct){
   129          a: (int){ 2 }
   130        }) }
   131      a: (int){ 2 }
   132    }
   133    unambiguous: (struct){
   134      y: ((int|struct)){ |((int){ 1 }, (struct){
   135          a: (int){ 2 }
   136        }) }
   137      a: (int){ 2 }
   138    }
   139    forDefault: (struct){
   140      y: ((int|struct)){ |(*(int){ 1 }, (struct){
   141          a: (int){ 2 }
   142        }) }
   143      a: (int){ 2 }
   144    }
   145    openDefault: ((int|struct)){ |(*(int){
   146        1
   147        #y: ((int|struct)){ |(*(int){ 1 }, (#struct){
   148            a: (int){ 2 }
   149          }) }
   150      }, (#struct){
   151        #y: ((int|struct)){ |(*(int){ 1 }, (#struct){
   152            a: (int){ 2 }
   153          }) }
   154        a: (int){ 2 }
   155      }) }
   156    openAmbiguous: ((int|struct)){ |((int){
   157        1
   158        #y: ((int|struct)){ |((int){ 1 }, (#struct){
   159            a: (int){ 2 }
   160          }) }
   161      }, (#struct){
   162        #y: ((int|struct)){ |((int){ 1 }, (#struct){
   163            a: (int){ 2 }
   164          }) }
   165        a: (int){ 2 }
   166      }) }
   167    forceStruct: (#struct){
   168      #y: ((int|struct)){ |((int){ 1 }, (#struct){
   169          a: (int){ 2 }
   170        }) }
   171      a: (int){ 2 }
   172    }
   173    defaultsMulti: (struct){
   174      a: (struct){
   175        #def: (#struct){ |(*(#struct){
   176          }, (#struct){
   177            c: (string){ string }
   178          }, (#struct){
   179            d: (string){ string }
   180          }, (#struct){
   181            a: (string){ string }
   182          }, (#struct){
   183            a: (string){ string }
   184            c: (string){ string }
   185          }, (#struct){
   186            a: (string){ string }
   187            d: (string){ string }
   188          }, (#struct){
   189            b: (string){ string }
   190          }, (#struct){
   191            b: (string){ string }
   192            c: (string){ string }
   193          }, (#struct){
   194            b: (string){ string }
   195            d: (string){ string }
   196          }) }
   197        a: (#struct){ |(*(#struct){
   198            a: (string){ "foo" }
   199          }, (#struct){
   200            a: (string){ "foo" }
   201            c: (string){ string }
   202          }, (#struct){
   203            a: (string){ "foo" }
   204            d: (string){ string }
   205          }) }
   206      }
   207      b: (struct){
   208        #def: (#struct){ |(*(#struct){
   209          }, (#struct){
   210            d: (string){ string }
   211          }, (#struct){
   212            e: (string){ string }
   213          }, (#struct){
   214            c: (string){ string }
   215          }, (#struct){
   216            c: (string){ string }
   217            d: (string){ string }
   218          }, (#struct){
   219            c: (string){ string }
   220            e: (string){ string }
   221          }, (#struct){
   222            d: (string){ string }
   223            e: (string){ string }
   224          }, (#struct){
   225            a: (string){ string }
   226          }, (#struct){
   227            a: (string){ string }
   228            d: (string){ string }
   229          }, (#struct){
   230            a: (string){ string }
   231            e: (string){ string }
   232          }, (#struct){
   233            a: (string){ string }
   234            c: (string){ string }
   235          }, (#struct){
   236            a: (string){ string }
   237            c: (string){ string }
   238            d: (string){ string }
   239          }, (#struct){
   240            a: (string){ string }
   241            c: (string){ string }
   242            e: (string){ string }
   243          }, (#struct){
   244            a: (string){ string }
   245            d: (string){ string }
   246            e: (string){ string }
   247          }, (#struct){
   248            b: (string){ string }
   249          }, (#struct){
   250            b: (string){ string }
   251            d: (string){ string }
   252          }, (#struct){
   253            b: (string){ string }
   254            e: (string){ string }
   255          }, (#struct){
   256            b: (string){ string }
   257            c: (string){ string }
   258          }, (#struct){
   259            b: (string){ string }
   260            c: (string){ string }
   261            d: (string){ string }
   262          }, (#struct){
   263            b: (string){ string }
   264            c: (string){ string }
   265            e: (string){ string }
   266          }, (#struct){
   267            b: (string){ string }
   268            d: (string){ string }
   269            e: (string){ string }
   270          }) }
   271        a: (#struct){ |(*(#struct){
   272            a: (string){ "foo" }
   273            e: (string){ "bar" }
   274          }, (#struct){
   275            a: (string){ "foo" }
   276            e: (string){ "bar" }
   277            c: (string){ string }
   278          }, (#struct){
   279            a: (string){ "foo" }
   280            e: (string){ "bar" }
   281            d: (string){ string }
   282          }) }
   283      }
   284    }
   285    nested: (struct){
   286      a: (int){ |(*(int){ 7 }, (int){ 2 }, (int){ 3 }, (int){ 4 }, (int){ 1 }) }
   287    }
   288    issue3415: (struct){
   289      full: (struct){
   290        A: (#struct){
   291          i: (int){
   292            11
   293            _a: (int){ 1 }
   294            _b: (int){ 10 }
   295          }
   296        }
   297        #A: (#struct){
   298          i: (number){ |(*(int){ 0 }, (number){ number }) }
   299        }
   300      }
   301      reduced: (struct){
   302        a: (int){
   303          11
   304          #b: (int){ 10 }
   305        }
   306      }
   307    }
   308  }
   309  -- out/compile --
   310  --- in.cue
   311  {
   312    default: {
   313      y: (*1|{
   314        a: 2
   315      })
   316      〈0;y〉
   317    }
   318    unambiguous: {
   319      y: (1|{
   320        a: 2
   321      })
   322      〈0;y〉
   323    }
   324    forDefault: {
   325      y: (*1|{
   326        a: 2
   327      })
   328      for _, x in [
   329        1,
   330      ] {
   331        〈2;y〉
   332      }
   333    }
   334    openDefault: {
   335      #y: (*1|{
   336        a: 2
   337      })
   338      〈0;#y〉
   339    }
   340    openAmbiguous: {
   341      #y: (1|{
   342        a: 2
   343      })
   344      〈0;#y〉
   345    }
   346    forceStruct: {
   347      #y: (1|{
   348        a: 2
   349      })
   350      〈0;#y〉
   351      {}
   352    }
   353    defaultsMulti: {
   354      a: {
   355        #def: {
   356          (*{}|{
   357            a: string
   358          }|{
   359            b: string
   360          })
   361          (*{}|{
   362            c: string
   363          }|{
   364            d: string
   365          })
   366        }
   367        a: (〈0;#def〉 & {
   368          a: "foo"
   369        })
   370      }
   371      b: {
   372        #def: {
   373          (*{}|{
   374            a: string
   375          }|{
   376            b: string
   377          })
   378          (*{}|{
   379            c: string
   380          }|{
   381            d: string
   382          })
   383          (*{}|{
   384            d: string
   385          }|{
   386            e: string
   387          })
   388        }
   389        a: (〈0;#def〉 & {
   390          a: "foo"
   391          e: "bar"
   392        })
   393      }
   394    }
   395    nested: {
   396      a: (1|2|*((3|4|*(5|6|*7)) & (3|4|(*7|8))))
   397    }
   398  }
   399  --- issue3415.cue
   400  {
   401    issue3415: {
   402      full: {
   403        A: (〈0;#A〉 & {
   404          i: {
   405            (〈0;_a〉 + 〈0;_b〉)
   406            _a: 1
   407            _b: 10
   408          }
   409        })
   410        #A: {
   411          i: (*0|number)
   412        }
   413      }
   414    }
   415    issue3415: {
   416      reduced: {
   417        a: {
   418          (1 + 〈0;#b〉)
   419          #b: 10
   420        }
   421        a: (*0|number)
   422      }
   423    }
   424  }