cuelang.org/go@v0.13.0/cue/testdata/basicrewrite/012_selecting.txtar (about) 1 #name: selecting 2 #evalPartial 3 -- in.cue -- 4 obj: {a: 1, b: 2} 5 index: {a: 1, b: 2}["b"] 6 mulidx: {a: 1, b: {a: 1, b: 3}}["b"]["b"] 7 e: {a: 1}[4] 8 f: {a: 1}.b 9 g: {a: 1}["b"] 10 h: [3].b 11 -- out/def -- 12 obj: { 13 a: 1 14 b: 2 15 } 16 index: 2 17 mulidx: 3 18 e: _|_ // invalid struct index 4 (type int) 19 f: { 20 a: 1 21 }.b 22 g: { 23 a: 1 24 }["b"] 25 h: _|_ // invalid operation: [3].b (type list does not support selection) 26 -- out/legacy-debug -- 27 <0>{obj: <1>{a: 1, b: 2}, index: 2, mulidx: 3, e: _|_(4:invalid struct index 4 (type int)), f: <2>{a: 1}.b, g: <3>{a: 1}["b"], h: _|_([3]:invalid operation: [3].b (type list does not support selection))} 28 -- out/compile -- 29 --- in.cue 30 { 31 obj: { 32 a: 1 33 b: 2 34 } 35 index: { 36 a: 1 37 b: 2 38 }["b"] 39 mulidx: { 40 a: 1 41 b: { 42 a: 1 43 b: 3 44 } 45 }["b"]["b"] 46 e: { 47 a: 1 48 }[4] 49 f: { 50 a: 1 51 }.b 52 g: { 53 a: 1 54 }["b"] 55 h: [ 56 3, 57 ].b 58 } 59 -- out/eval/stats -- 60 Leaks: 9 61 Freed: 10 62 Reused: 8 63 Allocs: 11 64 Retain: 9 65 66 Unifications: 19 67 Conjuncts: 19 68 Disjuncts: 17 69 -- out/eval -- 70 Errors: 71 e: invalid struct selector 4 (type int): 72 ./in.cue:4:16 73 h: invalid list index b (type string): 74 ./in.cue:7:13 75 76 Result: 77 (_|_){ 78 // [eval] 79 obj: (struct){ 80 a: (int){ 1 } 81 b: (int){ 2 } 82 } 83 index: (int){ 2 } 84 mulidx: (int){ 3 } 85 e: (_|_){ 86 // [eval] e: invalid struct selector 4 (type int): 87 // ./in.cue:4:16 88 } 89 f: (_|_){ 90 // [incomplete] f: undefined field: b: 91 // ./in.cue:5:16 92 } 93 g: (_|_){ 94 // [incomplete] g: undefined field: b: 95 // ./in.cue:6:16 96 } 97 h: (_|_){ 98 // [eval] h: invalid list index b (type string): 99 // ./in.cue:7:13 100 } 101 } 102 -- out/evalalpha -- 103 Errors: 104 e: index out of range [4] with length 0: 105 ./in.cue:4:16 106 h: undefined field: b: 107 ./in.cue:7:13 108 109 Result: 110 (_|_){ 111 // [eval] 112 obj: (struct){ 113 a: (int){ 1 } 114 b: (int){ 2 } 115 } 116 index: (int){ 2 } 117 mulidx: (int){ 3 } 118 e: (_|_){ 119 // [eval] e: index out of range [4] with length 0: 120 // ./in.cue:4:16 121 } 122 f: (_|_){ 123 // [incomplete] f: undefined field: b: 124 // ./in.cue:5:16 125 } 126 g: (_|_){ 127 // [incomplete] g: undefined field: b: 128 // ./in.cue:6:16 129 } 130 h: (_|_){ 131 // [eval] h: undefined field: b: 132 // ./in.cue:7:13 133 } 134 } 135 -- diff/-out/evalalpha<==>+out/eval -- 136 diff old new 137 --- old 138 +++ new 139 @@ -1,7 +1,7 @@ 140 Errors: 141 -e: invalid struct selector 4 (type int): 142 +e: index out of range [4] with length 0: 143 ./in.cue:4:16 144 -h: invalid list index b (type string): 145 +h: undefined field: b: 146 ./in.cue:7:13 147 148 Result: 149 @@ -14,7 +14,7 @@ 150 index: (int){ 2 } 151 mulidx: (int){ 3 } 152 e: (_|_){ 153 - // [eval] e: invalid struct selector 4 (type int): 154 + // [eval] e: index out of range [4] with length 0: 155 // ./in.cue:4:16 156 } 157 f: (_|_){ 158 @@ -26,7 +26,7 @@ 159 // ./in.cue:6:16 160 } 161 h: (_|_){ 162 - // [eval] h: invalid list index b (type string): 163 + // [eval] h: undefined field: b: 164 // ./in.cue:7:13 165 } 166 } 167 -- diff/explanation -- 168 Better error message for undefined field in new. 169 Other error got worse, but this is covered elsewhere.