Commit 8894549
committed
tools/fix: open field values inside comprehensions
Under the old semantics, conjuncts inserted through comprehensions are
treated like embeddings and do not close their fields, recursively.
Under explicitopen this opening is gone, so a comprehension conjunct
such as "if c { egress: #HC }" closes egress and rejects sibling entries
added elsewhere. This broke the greymatter tenant-examples unity
project, whose #Service inserts a health-check egress listener through a
comprehension.
Append a postfix ellipsis to field values inside comprehension bodies
when they may resolve to a closed struct: references, selectors, index
expressions, and conjunctions or disjunctions involving them. The
postfix ellipsis opens recursively, matching the old comprehension
behavior. Values that cannot carry closedness, such as literals, are
left alone, as are close() calls, which explicitly opt in to closing.
The new lexical comprehension counter subsumes the field-scoped
closeInfo.inComprehension, whose only use was the TODO comment on
embeddings; that comment now also applies to embeddings nested under
fields within a comprehension.
Signed-off-by: Daniel Martí <mvdan@mvdan.cc>
Change-Id: Ia1498de6ed63412cee0266edd6094d37aa4bff47
Reviewed-on: https://review.gerrithub.io/c/cue-lang/cue/+/1242590
TryBot-Result: CUEcueckoo <cueckoo@cuelang.org>
Unity-Result: CUE porcuepine <cue.porcuepine@gmail.com>
Reviewed-by: Marcel van Lohuizen <mpvl@gmail.com>1 parent 468e553 commit 8894549
2 files changed
Lines changed: 43 additions & 11 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
176 | 176 | | |
177 | 177 | | |
178 | 178 | | |
179 | | - | |
180 | | - | |
181 | 179 | | |
182 | 180 | | |
183 | 181 | | |
| |||
192 | 190 | | |
193 | 191 | | |
194 | 192 | | |
195 | | - | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
196 | 196 | | |
197 | 197 | | |
198 | 198 | | |
199 | 199 | | |
200 | 200 | | |
201 | 201 | | |
202 | 202 | | |
203 | | - | |
| 203 | + | |
204 | 204 | | |
205 | 205 | | |
206 | 206 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
45 | 45 | | |
46 | 46 | | |
47 | 47 | | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
48 | 54 | | |
49 | 55 | | |
50 | 56 | | |
51 | 57 | | |
52 | 58 | | |
53 | | - | |
54 | | - | |
55 | | - | |
56 | 59 | | |
57 | 60 | | |
58 | 61 | | |
| |||
64 | 67 | | |
65 | 68 | | |
66 | 69 | | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
67 | 74 | | |
68 | 75 | | |
69 | 76 | | |
| |||
82 | 89 | | |
83 | 90 | | |
84 | 91 | | |
85 | | - | |
| 92 | + | |
86 | 93 | | |
87 | 94 | | |
88 | 95 | | |
| |||
95 | 102 | | |
96 | 103 | | |
97 | 104 | | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
98 | 114 | | |
99 | 115 | | |
100 | 116 | | |
| |||
104 | 120 | | |
105 | 121 | | |
106 | 122 | | |
107 | | - | |
| 123 | + | |
108 | 124 | | |
109 | 125 | | |
110 | 126 | | |
| |||
116 | 132 | | |
117 | 133 | | |
118 | 134 | | |
119 | | - | |
| 135 | + | |
120 | 136 | | |
121 | 137 | | |
122 | 138 | | |
| |||
185 | 201 | | |
186 | 202 | | |
187 | 203 | | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
188 | 220 | | |
189 | 221 | | |
190 | 222 | | |
| |||
316 | 348 | | |
317 | 349 | | |
318 | 350 | | |
319 | | - | |
| 351 | + | |
320 | 352 | | |
321 | 353 | | |
322 | 354 | | |
| |||
0 commit comments