...
1# Allow otherField
2
3-- in.cue --
4#T: {
5 #Schema: [_]: #D
6 concrete: #Schema
7}
8#D: {
9 fieldWithDefault: *0 | int
10 ...
11}
12s: #T & {
13 #Schema: {
14 foo: otherField: string
15 }
16 concrete: foo: otherField: "hello"
17}
18
19#Container: {
20 Env: [Name=string]: {
21 name: string
22 value: string
23 }
24}
25#Deployment: {
26 #Containers: [Name=string]: #Container
27
28 containers: [for c in #Containers {c}] // Problem is here.
29}
30Something: {
31 #Deployment
32 #Containers: {
33 // Does not allow entries other than value. Either add ... or embed
34 "a thing": Env: foobar: value: "foo"
35 }
36}
37x: Something & #Deployment
38-- out/eval/stats --
39Leaks: 0
40Freed: 52
41Reused: 45
42Allocs: 7
43Retain: 0
44
45Unifications: 46
46Conjuncts: 122
47Disjuncts: 52
48-- out/eval --
49(struct){
50 #T: (#struct){
51 #Schema: (#struct){
52 }
53 concrete: (#struct){
54 }
55 }
56 #D: (#struct){
57 fieldWithDefault: (int){ |(*(int){ 0 }, (int){ int }) }
58 }
59 s: (#struct){
60 #Schema: (#struct){
61 foo: (#struct){
62 otherField: (string){ string }
63 fieldWithDefault: (int){ |(*(int){ 0 }, (int){ int }) }
64 }
65 }
66 concrete: (#struct){
67 foo: (#struct){
68 otherField: (string){ "hello" }
69 fieldWithDefault: (int){ |(*(int){ 0 }, (int){ int }) }
70 }
71 }
72 }
73 #Container: (#struct){
74 Env: (#struct){
75 }
76 }
77 #Deployment: (#struct){
78 #Containers: (#struct){
79 }
80 containers: (#list){
81 }
82 }
83 Something: (#struct){
84 #Containers: (#struct){
85 "a thing": (#struct){
86 Env: (#struct){
87 foobar: (#struct){
88 value: (string){ "foo" }
89 name: (string){ string }
90 }
91 }
92 }
93 }
94 containers: (#list){
95 0: (#struct){
96 Env: (#struct){
97 foobar: (#struct){
98 value: (string){ "foo" }
99 name: (string){ string }
100 }
101 }
102 }
103 }
104 }
105 x: (#struct){
106 #Containers: (#struct){
107 "a thing": (#struct){
108 Env: (#struct){
109 foobar: (#struct){
110 value: (string){ "foo" }
111 name: (string){ string }
112 }
113 }
114 }
115 }
116 containers: (#list){
117 0: (#struct){
118 Env: (#struct){
119 foobar: (#struct){
120 value: (string){ "foo" }
121 name: (string){ string }
122 }
123 }
124 }
125 }
126 }
127}
128-- out/export --
129#T: {
130 #Schema: [_]: #D
131 concrete: #Schema
132}
133#D: {
134 fieldWithDefault: *0 | int
135 ...
136}
137s: #T & {
138 #Schema: {
139 foo: otherField: string
140 }
141 concrete: foo: otherField: "hello"
142}
143
144#Container: {
145 Env: [Name=string]: {
146 name: string
147 value: string
148 }
149}
150#Deployment: {
151 #Containers: [Name=string]: #Container
152
153 containers: [for c in #Containers {c}] // Problem is here.
154}
155Something: {
156 #Deployment
157 #Containers: {
158 // Does not allow entries other than value. Either add ... or embed
159 "a thing": Env: foobar: value: "foo"
160 }
161}
162x: Something & #Deployment
163
164-- out/compile --
165--- in.cue
166{
167 #T: {
168 #Schema: {
169 [_]: 〈2;#D〉
170 }
171 concrete: 〈0;#Schema〉
172 }
173 #D: {
174 fieldWithDefault: (*0|int)
175 ...
176 }
177 s: (〈0;#T〉 & {
178 #Schema: {
179 foo: {
180 otherField: string
181 }
182 }
183 concrete: {
184 foo: {
185 otherField: "hello"
186 }
187 }
188 })
189 #Container: {
190 Env: {
191 [string]: {
192 name: string
193 value: string
194 }
195 }
196 }
197 #Deployment: {
198 #Containers: {
199 [string]: 〈2;#Container〉
200 }
201 containers: [
202 for _, c in 〈1;#Containers〉 {
203 〈1;c〉
204 },
205 ]
206 }
207 Something: {
208 〈1;#Deployment〉
209 #Containers: {
210 "a thing": {
211 Env: {
212 foobar: {
213 value: "foo"
214 }
215 }
216 }
217 }
218 }
219 x: (〈0;Something〉 & 〈0;#Deployment〉)
220}
View as plain text