cuelang.org/go@v0.10.1/cue/testdata/builtins/all.txtar (about) 1 -- in.cue -- 2 fatalArg: { 3 x: len("eee" + 'eee') 4 } 5 6 // don't call builtin for a permanent error of a child node 7 fatalChild: { 8 #b: {} 9 x: and([{a: #b.c}]) 10 } 11 12 // allow incomplete child values. The error will persist after `and` is 13 // evaluated down the line. This allows the and-ing of templates that may 14 // complete later. 15 okIncompleteChild: { 16 b: {} 17 x: and([{a: b.c}, {b: 1}]) 18 } 19 -- out/eval/stats -- 20 Leaks: 2 21 Freed: 12 22 Reused: 8 23 Allocs: 6 24 Retain: 2 25 26 Unifications: 14 27 Conjuncts: 17 28 Disjuncts: 14 29 -- out/evalalpha -- 30 Errors: 31 fatalArg.x: invalid operands "eee" and 'eee' to '+' (type string and bytes): 32 ./in.cue:2:9 33 ./in.cue:2:17 34 fatalChild.0.a: undefined field: c: 35 ./in.cue:8:17 36 37 Result: 38 (_|_){ 39 // [eval] 40 fatalArg: (_|_){ 41 // [eval] 42 x: (_|_){ 43 // [eval] fatalArg.x: invalid operands "eee" and 'eee' to '+' (type string and bytes): 44 // ./in.cue:2:9 45 // ./in.cue:2:17 46 } 47 } 48 fatalChild: (_|_){ 49 // [eval] 50 #b: (#struct){ 51 } 52 x: (_|_){ 53 // [eval] fatalChild.0.a: undefined field: c: 54 // ./in.cue:8:17 55 } 56 } 57 okIncompleteChild: (struct){ 58 b: (struct){ 59 } 60 x: (struct){ 61 a: (_|_){ 62 // [incomplete] okIncompleteChild.x.a: undefined field: c: 63 // ./in.cue:16:16 64 } 65 b: (int){ 1 } 66 } 67 } 68 } 69 -- diff/-out/evalalpha<==>+out/eval -- 70 diff old new 71 --- old 72 +++ new 73 @@ -2,7 +2,7 @@ 74 fatalArg.x: invalid operands "eee" and 'eee' to '+' (type string and bytes): 75 ./in.cue:2:9 76 ./in.cue:2:17 77 -fatalChild.x.a: undefined field: c: 78 +fatalChild.0.a: undefined field: c: 79 ./in.cue:8:17 80 81 Result: 82 @@ -21,11 +21,8 @@ 83 #b: (#struct){ 84 } 85 x: (_|_){ 86 - // [eval] 87 - a: (_|_){ 88 - // [eval] fatalChild.x.a: undefined field: c: 89 - // ./in.cue:8:17 90 - } 91 + // [eval] fatalChild.0.a: undefined field: c: 92 + // ./in.cue:8:17 93 } 94 } 95 okIncompleteChild: (struct){ 96 -- diff/todo/p2 -- 97 Path of old and new error is incorrect. 98 -- out/eval -- 99 Errors: 100 fatalArg.x: invalid operands "eee" and 'eee' to '+' (type string and bytes): 101 ./in.cue:2:9 102 ./in.cue:2:17 103 fatalChild.x.a: undefined field: c: 104 ./in.cue:8:17 105 106 Result: 107 (_|_){ 108 // [eval] 109 fatalArg: (_|_){ 110 // [eval] 111 x: (_|_){ 112 // [eval] fatalArg.x: invalid operands "eee" and 'eee' to '+' (type string and bytes): 113 // ./in.cue:2:9 114 // ./in.cue:2:17 115 } 116 } 117 fatalChild: (_|_){ 118 // [eval] 119 #b: (#struct){ 120 } 121 x: (_|_){ 122 // [eval] 123 a: (_|_){ 124 // [eval] fatalChild.x.a: undefined field: c: 125 // ./in.cue:8:17 126 } 127 } 128 } 129 okIncompleteChild: (struct){ 130 b: (struct){ 131 } 132 x: (struct){ 133 a: (_|_){ 134 // [incomplete] okIncompleteChild.x.a: undefined field: c: 135 // ./in.cue:16:16 136 } 137 b: (int){ 1 } 138 } 139 } 140 } 141 -- out/compile -- 142 --- in.cue 143 { 144 fatalArg: { 145 x: len(("eee" + 'eee')) 146 } 147 fatalChild: { 148 #b: {} 149 x: and([ 150 { 151 a: ă2;#bă.c 152 }, 153 ]) 154 } 155 okIncompleteChild: { 156 b: {} 157 x: and([ 158 { 159 a: ă2;bă.c 160 }, 161 { 162 b: 1 163 }, 164 ]) 165 } 166 }