github.com/solo-io/cue@v0.4.7/cue/testdata/cycle/builtins.txtar (about) 1 -- in.cue -- 2 import "regexp" 3 4 // Issue #655 5 // When evaluating a value into a struct, and then back into a value, the 6 // evaluation mode flips from Partial to AllArcs to Back. This is typically 7 // not an issue, but if a referred field is within a struct generated by a 8 // builtin, effectively the entire struct needs to be evaluated and special care 9 // should be taking to not evaluate too early. 10 builtinCyclePerm0: { 11 X: "example.com" 12 13 Y: { 14 #components: regexp.FindNamedSubmatch(#"^(?P<host>[[:alnum:].]+)$"#, X) 15 host: #components.host 16 } 17 18 X: Y.host 19 } 20 21 builtinCyclePerm1: { 22 X: Y.host 23 24 Y: { 25 #components: regexp.FindNamedSubmatch(#"^(?P<host>[[:alnum:].]+)$"#, X) 26 host: #components.host 27 } 28 29 X: "example.com" 30 } 31 32 builtinCyclePerm2: { 33 Y: { 34 #components: regexp.FindNamedSubmatch(#"^(?P<host>[[:alnum:].]+)$"#, X) 35 host: #components.host 36 } 37 38 X: Y.host 39 X: "example.com" 40 } 41 42 builtinCyclePerm3: { 43 Y: { 44 #components: regexp.FindNamedSubmatch(#"^(?P<host>[[:alnum:].]+)$"#, X) 45 host: #components.host 46 } 47 48 X: "example.com" 49 X: Y.host 50 } 51 52 builtinCyclePerm4: { 53 X: "example.com" 54 X: Y.host 55 56 Y: { 57 #components: regexp.FindNamedSubmatch(#"^(?P<host>[[:alnum:].]+)$"#, X) 58 host: #components.host 59 } 60 } 61 62 builtinCyclePerm5: { 63 X: Y.host 64 X: "example.com" 65 66 Y: { 67 #components: regexp.FindNamedSubmatch(#"^(?P<host>[[:alnum:].]+)$"#, X) 68 host: #components.host 69 } 70 } 71 -- out/eval -- 72 (struct){ 73 builtinCyclePerm0: (struct){ 74 X: (string){ "example.com" } 75 Y: (struct){ 76 #components: (#struct){ 77 host: (string){ "example.com" } 78 } 79 host: (string){ "example.com" } 80 } 81 } 82 builtinCyclePerm1: (struct){ 83 X: (string){ "example.com" } 84 Y: (struct){ 85 #components: (#struct){ 86 host: (string){ "example.com" } 87 } 88 host: (string){ "example.com" } 89 } 90 } 91 builtinCyclePerm2: (struct){ 92 Y: (struct){ 93 #components: (#struct){ 94 host: (string){ "example.com" } 95 } 96 host: (string){ "example.com" } 97 } 98 X: (string){ "example.com" } 99 } 100 builtinCyclePerm3: (struct){ 101 Y: (struct){ 102 #components: (#struct){ 103 host: (string){ "example.com" } 104 } 105 host: (string){ "example.com" } 106 } 107 X: (string){ "example.com" } 108 } 109 builtinCyclePerm4: (struct){ 110 X: (string){ "example.com" } 111 Y: (struct){ 112 #components: (#struct){ 113 host: (string){ "example.com" } 114 } 115 host: (string){ "example.com" } 116 } 117 } 118 builtinCyclePerm5: (struct){ 119 X: (string){ "example.com" } 120 Y: (struct){ 121 #components: (#struct){ 122 host: (string){ "example.com" } 123 } 124 host: (string){ "example.com" } 125 } 126 } 127 } 128 -- out/compile -- 129 --- in.cue 130 { 131 builtinCyclePerm0: { 132 X: "example.com" 133 Y: { 134 #components: 〈import;regexp〉.FindNamedSubmatch("^(?P<host>[[:alnum:].]+)$", 〈1;X〉) 135 host: 〈0;#components〉.host 136 } 137 X: 〈0;Y〉.host 138 } 139 builtinCyclePerm1: { 140 X: 〈0;Y〉.host 141 Y: { 142 #components: 〈import;regexp〉.FindNamedSubmatch("^(?P<host>[[:alnum:].]+)$", 〈1;X〉) 143 host: 〈0;#components〉.host 144 } 145 X: "example.com" 146 } 147 builtinCyclePerm2: { 148 Y: { 149 #components: 〈import;regexp〉.FindNamedSubmatch("^(?P<host>[[:alnum:].]+)$", 〈1;X〉) 150 host: 〈0;#components〉.host 151 } 152 X: 〈0;Y〉.host 153 X: "example.com" 154 } 155 builtinCyclePerm3: { 156 Y: { 157 #components: 〈import;regexp〉.FindNamedSubmatch("^(?P<host>[[:alnum:].]+)$", 〈1;X〉) 158 host: 〈0;#components〉.host 159 } 160 X: "example.com" 161 X: 〈0;Y〉.host 162 } 163 builtinCyclePerm4: { 164 X: "example.com" 165 X: 〈0;Y〉.host 166 Y: { 167 #components: 〈import;regexp〉.FindNamedSubmatch("^(?P<host>[[:alnum:].]+)$", 〈1;X〉) 168 host: 〈0;#components〉.host 169 } 170 } 171 builtinCyclePerm5: { 172 X: 〈0;Y〉.host 173 X: "example.com" 174 Y: { 175 #components: 〈import;regexp〉.FindNamedSubmatch("^(?P<host>[[:alnum:].]+)$", 〈1;X〉) 176 host: 〈0;#components〉.host 177 } 178 } 179 }