github.com/joomcode/cue@v0.4.4-0.20221111115225-539fe3512047/cue/testdata/cycle/disjunction.txtar (about)

     1  # TODO(fmt): first line indented when it should not be: cuelang.org/issue/722
     2  
     3  -- in.cue --
     4  		// cycle is a structural cycle
     5  cycle: a: cycle
     6  
     7  // reference to outside structural cycle
     8  r1a: cycle | int
     9  r1b: int | cycle
    10  
    11  r2a: cycle | 1
    12  r2b: 1 | cycle
    13  
    14  r3a: cycle | null
    15  r3b: null | cycle
    16  
    17  r4a: cycle | {}
    18  r4b: {} | cycle
    19  
    20  r5a: cycle | []
    21  r5b: [] | cycle
    22  
    23  // reference to ancestor node
    24  s1a: x: s1a | int
    25  s1b: x: int | s1b
    26  
    27  s2a: x: s2a | 1
    28  s2b: x: 1 | s2b
    29  
    30  s3a: x: s3a | null
    31  s3b: x: null | s3b
    32  
    33  s4a: x: s4a | {}
    34  s4b: x: {} | s4b
    35  
    36  s5a: x: s5a | []
    37  s5b: x: [] | s5b
    38  -- out/eval --
    39  Errors:
    40  cycle.a: structural cycle
    41  
    42  Result:
    43  (_|_){
    44    // [structural cycle]
    45    cycle: (_|_){
    46      // [structural cycle]
    47      a: (_|_){
    48        // [structural cycle] cycle.a: structural cycle
    49      }
    50    }
    51    r1a: (int){ int }
    52    r1b: (int){ int }
    53    r2a: (int){ 1 }
    54    r2b: (int){ 1 }
    55    r3a: (null){ null }
    56    r3b: (null){ null }
    57    r4a: (struct){
    58    }
    59    r4b: (struct){
    60    }
    61    r5a: (#list){
    62    }
    63    r5b: (#list){
    64    }
    65    s1a: (struct){
    66      x: (int){ int }
    67    }
    68    s1b: (struct){
    69      x: (int){ int }
    70    }
    71    s2a: (struct){
    72      x: (int){ 1 }
    73    }
    74    s2b: (struct){
    75      x: (int){ 1 }
    76    }
    77    s3a: (struct){
    78      x: (null){ null }
    79    }
    80    s3b: (struct){
    81      x: (null){ null }
    82    }
    83    s4a: (struct){
    84      x: (struct){
    85      }
    86    }
    87    s4b: (struct){
    88      x: (struct){
    89      }
    90    }
    91    s5a: (struct){
    92      x: (#list){
    93      }
    94    }
    95    s5b: (struct){
    96      x: (#list){
    97      }
    98    }
    99  }
   100  -- out/compile --
   101  --- in.cue
   102  {
   103    cycle: {
   104      a: 〈1;cycle〉
   105    }
   106    r1a: (〈0;cycle〉|int)
   107    r1b: (int|〈0;cycle〉)
   108    r2a: (〈0;cycle〉|1)
   109    r2b: (1|〈0;cycle〉)
   110    r3a: (〈0;cycle〉|null)
   111    r3b: (null|〈0;cycle〉)
   112    r4a: (〈0;cycle〉|{})
   113    r4b: ({}|〈0;cycle〉)
   114    r5a: (〈0;cycle〉|[])
   115    r5b: ([]|〈0;cycle〉)
   116    s1a: {
   117      x: (〈1;s1a〉|int)
   118    }
   119    s1b: {
   120      x: (int|〈1;s1b〉)
   121    }
   122    s2a: {
   123      x: (〈1;s2a〉|1)
   124    }
   125    s2b: {
   126      x: (1|〈1;s2b〉)
   127    }
   128    s3a: {
   129      x: (〈1;s3a〉|null)
   130    }
   131    s3b: {
   132      x: (null|〈1;s3b〉)
   133    }
   134    s4a: {
   135      x: (〈1;s4a〉|{})
   136    }
   137    s4b: {
   138      x: ({}|〈1;s4b〉)
   139    }
   140    s5a: {
   141      x: (〈1;s5a〉|[])
   142    }
   143    s5b: {
   144      x: ([]|〈1;s5b〉)
   145    }
   146  }