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 }