cuelang.org/go@v0.10.1/cue/testdata/cycle/issue1960.txtar (about) 1 // Issue-specific tests. Essence tested in evaluate.txtar (LetCycle*). 2 -- issue1960.cue -- 3 t1: { 4 z: blah: s: [for z in z {}] 5 z: hello: { 6 for x in p {} 7 let q = z.blah 8 p: q.r // Incomplete error should not cause cycle. 9 p: t: 1 10 } 11 } 12 13 t2: { 14 z: blah: s: [for z in z {}] 15 z: hello: { 16 for x in p {} 17 let q = z.blah 18 p: t: 1 19 } 20 } 21 22 t3: { 23 #z: { 24 n: string 25 p: t: "e" 26 s: [...string] 27 _p: { 28 n: string 29 e: p: {} 30 } 31 r: (_p )[p.t] 32 for _, pl in r.p { 33 if pl.blah { 34 } 35 } 36 } 37 38 #i: { 39 #z 40 t: "i" 41 r: e: {} 42 } 43 44 #c: { 45 #z 46 t: "c" 47 n: string 48 } 49 50 z: [N= =~"^b"]: #i & { 51 s: [ 52 for n, z in z 53 if z.t == "c" 54 if z.n == N {n}, 55 ] 56 } 57 58 z: [N= =~"^h"]: #c & { 59 n: string 60 // Causes a structural cycle on its own, but not when referenced below. 61 let q = z[n] 62 p: q.r.e 63 } 64 65 z: { 66 "blah": {} 67 "hello": n: "blah" 68 } 69 } 70 -- out/eval -- 71 t2.z.hello: unreferenced alias or let clause q: 72 ./issue1960.cue:15:3 73 -- out/compile -- 74 t2.z.hello: unreferenced alias or let clause q: 75 ./issue1960.cue:15:3 76 --- issue1960.cue 77 { 78 t1: { 79 z: { 80 blah: { 81 s: [ 82 for _, z in 〈3;z〉 {}, 83 ] 84 } 85 } 86 z: { 87 hello: { 88 for _, x in 〈0;p〉 {} 89 let q#1 = 〈2;z〉.blah 90 p: 〈0;let q#1〉.r 91 p: { 92 t: 1 93 } 94 } 95 } 96 } 97 t2: { 98 z: { 99 blah: { 100 s: [ 101 for _, z in 〈3;z〉 {}, 102 ] 103 } 104 } 105 z: { 106 hello: { 107 for _, x in 〈0;p〉 {} 108 let q#2 = 〈2;z〉.blah 109 p: { 110 t: 1 111 } 112 } 113 } 114 } 115 t3: { 116 #z: { 117 n: string 118 p: { 119 t: "e" 120 } 121 s: [ 122 ...string, 123 ] 124 _p: { 125 n: string 126 e: { 127 p: {} 128 } 129 } 130 r: 〈0;_p〉[〈0;p〉.t] 131 for _, pl in 〈0;r〉.p { 132 if 〈1;pl〉.blah {} 133 } 134 } 135 #i: { 136 〈1;#z〉 137 t: "i" 138 r: { 139 e: {} 140 } 141 } 142 #c: { 143 〈1;#z〉 144 t: "c" 145 n: string 146 } 147 z: { 148 [=~"^b"]: (〈1;#i〉 & { 149 s: [ 150 for n, z in 〈3;z〉 if (〈0;z〉.t == "c") if (〈0;z〉.n == 〈3;-〉) { 151 〈1;n〉 152 }, 153 ] 154 }) 155 } 156 z: { 157 [=~"^h"]: (〈1;#c〉 & { 158 n: string 159 let q#3 = 〈2;z〉[〈0;n〉] 160 p: 〈0;let q#3〉.r.e 161 }) 162 } 163 z: { 164 blah: {} 165 hello: { 166 n: "blah" 167 } 168 } 169 } 170 }