github.com/solo-io/cue@v0.4.7/cue/testdata/resolve/030_definitions_with_disjunctions.txtar (about)

     1  # DO NOT EDIT; generated by go run testdata/gen.go
     2  #
     3  #name: definitions with disjunctions
     4  #evalPartial
     5  -- in.cue --
     6  #Foo: {
     7  	field: int
     8  
     9  	{a: 1} |
    10  	{b: 2}
    11  }
    12  
    13  foo: #Foo
    14  foo: {a: 1}
    15  
    16  bar: #Foo
    17  bar: {c: 2}
    18  
    19  baz: #Foo
    20  baz: {b: 2}
    21  -- out/def --
    22  #Foo: {
    23  	field: int
    24  	a:     1
    25  } | {
    26  	field: int
    27  	b:     2
    28  }
    29  foo: #Foo & {
    30  	a: 1
    31  }
    32  bar: _|_ // 
    33  baz: #Foo & {
    34  	b: 2
    35  }
    36  -- out/legacy-debug --
    37  <0>{#Foo: (<1>C{field: int, a: 1} | <2>C{field: int, b: 2}), foo: <3>C{field: int, a: 1}, bar: _|_(2:empty disjunction: field "c" not allowed in closed struct), baz: <4>C{field: int, b: 2}}
    38  -- out/compile --
    39  --- in.cue
    40  {
    41    #Foo: {
    42      field: int
    43      ({
    44        a: 1
    45      }|{
    46        b: 2
    47      })
    48    }
    49    foo: 〈0;#Foo〉
    50    foo: {
    51      a: 1
    52    }
    53    bar: 〈0;#Foo〉
    54    bar: {
    55      c: 2
    56    }
    57    baz: 〈0;#Foo〉
    58    baz: {
    59      b: 2
    60    }
    61  }
    62  -- out/eval --
    63  Errors:
    64  bar: 1 errors in empty disjunction:
    65  bar: field not allowed: c:
    66      ./in.cue:1:7
    67      ./in.cue:4:2
    68      ./in.cue:11:6
    69      ./in.cue:12:7
    70  
    71  Result:
    72  (_|_){
    73    // [eval]
    74    #Foo: (#struct){ |((#struct){
    75        field: (int){ int }
    76        a: (int){ 1 }
    77      }, (#struct){
    78        field: (int){ int }
    79        b: (int){ 2 }
    80      }) }
    81    foo: (#struct){
    82      field: (int){ int }
    83      a: (int){ 1 }
    84    }
    85    bar: (_|_){
    86      // [eval] bar: 1 errors in empty disjunction:
    87      // bar: field not allowed: c:
    88      //     ./in.cue:1:7
    89      //     ./in.cue:4:2
    90      //     ./in.cue:11:6
    91      //     ./in.cue:12:7
    92      field: (int){ int }
    93      c: (_|_){
    94        // [eval] bar: field not allowed: c:
    95        //     ./in.cue:1:7
    96        //     ./in.cue:4:2
    97        //     ./in.cue:5:2
    98        //     ./in.cue:11:6
    99        //     ./in.cue:12:7
   100      }
   101      b: (int){ 2 }
   102    }
   103    baz: (#struct){
   104      field: (int){ int }
   105      b: (int){ 2 }
   106    }
   107  }