...
1Issue #560
2
3-- cue.mod/module.cue --
4module: "mod.test"
5-- in.cue --
6import "strings"
7
8dynamic: {
9 for _, s in ["foo"] {
10 (s): 1
11 "\(s)bar": 2
12 }
13}
14
15ignoreOptional: {
16 #x: {
17 a?: string
18 b?: string
19 c: string
20 }
21
22 y: {
23 for k,v in #x {
24 (k): "exists"
25 }
26 }
27}
28
29missingRequiredError: {
30 // Issue #2369
31 #x: {
32 a!: string
33 b?: string
34 c: string
35 }
36
37 y: {
38 for k,v in #x {
39 (k): "exists"
40 }
41 }
42}
43
44issue560: {
45 #User: {
46 tags_str: string
47 tags_map: {
48 for k, v in strings.Split(tags_str, " ") {
49 "\(v)": string
50 }
51 "{a}": string
52 }
53 }
54
55 user: {
56 #User
57 tags_str: "b {c}"
58 }
59}
60-- out/eval/stats --
61Leaks: 1
62Freed: 32
63Reused: 26
64Allocs: 7
65Retain: 1
66
67Unifications: 33
68Conjuncts: 41
69Disjuncts: 33
70-- out/evalalpha --
71(struct){
72 dynamic: (struct){
73 foo: (int){ 1 }
74 foobar: (int){ 2 }
75 }
76 ignoreOptional: (struct){
77 #x: (#struct){
78 a?: (string){ string }
79 b?: (string){ string }
80 c: (string){ string }
81 }
82 y: (struct){
83 c: (string){ "exists" }
84 }
85 }
86 missingRequiredError: (struct){
87 #x: (#struct){
88 a!: (string){ string }
89 b?: (string){ string }
90 c: (string){ string }
91 }
92 y: (_|_){
93 // [incomplete] missingRequiredError.y: missing required field in for comprehension: a:
94 // ./in.cue:33:3
95 // ./in.cue:27:3
96 // ./in.cue:33:14
97 // missingRequiredError.y: key value of dynamic field must be concrete, found _|_(missingRequiredError.y: missing required field in for comprehension: a):
98 // ./in.cue:34:5
99 }
100 }
101 issue560: (struct){
102 #User: (#struct){
103 tags_str: (string){ string }
104 tags_map: (_|_){
105 // [incomplete] issue560.#User.tags_map: error in call to strings.Split: non-concrete value string:
106 // ./in.cue:43:16
107 // ./in.cue:41:13
108 "{a}": (string){ string }
109 }
110 }
111 user: (#struct){
112 tags_str: (string){ "b {c}" }
113 tags_map: (#struct){
114 "{a}": (string){ string }
115 b: (string){ string }
116 "{c}": (string){ string }
117 }
118 }
119 }
120}
121-- diff/-out/evalalpha<==>+out/eval --
122diff old new
123--- old
124+++ new
125@@ -24,6 +24,8 @@
126 // ./in.cue:33:3
127 // ./in.cue:27:3
128 // ./in.cue:33:14
129+ // missingRequiredError.y: key value of dynamic field must be concrete, found _|_(missingRequiredError.y: missing required field in for comprehension: a):
130+ // ./in.cue:34:5
131 }
132 }
133 issue560: (struct){
134-- diff/todo/p2 --
135Near-duplicate message
136-- out/eval --
137(struct){
138 dynamic: (struct){
139 foo: (int){ 1 }
140 foobar: (int){ 2 }
141 }
142 ignoreOptional: (struct){
143 #x: (#struct){
144 a?: (string){ string }
145 b?: (string){ string }
146 c: (string){ string }
147 }
148 y: (struct){
149 c: (string){ "exists" }
150 }
151 }
152 missingRequiredError: (struct){
153 #x: (#struct){
154 a!: (string){ string }
155 b?: (string){ string }
156 c: (string){ string }
157 }
158 y: (_|_){
159 // [incomplete] missingRequiredError.y: missing required field in for comprehension: a:
160 // ./in.cue:33:3
161 // ./in.cue:27:3
162 // ./in.cue:33:14
163 }
164 }
165 issue560: (struct){
166 #User: (#struct){
167 tags_str: (string){ string }
168 tags_map: (_|_){
169 // [incomplete] issue560.#User.tags_map: error in call to strings.Split: non-concrete value string:
170 // ./in.cue:43:16
171 // ./in.cue:41:13
172 "{a}": (string){ string }
173 }
174 }
175 user: (#struct){
176 tags_str: (string){ "b {c}" }
177 tags_map: (#struct){
178 "{a}": (string){ string }
179 b: (string){ string }
180 "{c}": (string){ string }
181 }
182 }
183 }
184}
185-- out/compile --
186--- in.cue
187{
188 dynamic: {
189 for _, s in [
190 "foo",
191 ] {
192 〈1;s〉: 1
193 "\(〈1;s〉)bar": 2
194 }
195 }
196 ignoreOptional: {
197 #x: {
198 a?: string
199 b?: string
200 c: string
201 }
202 y: {
203 for k, v in 〈1;#x〉 {
204 〈1;k〉: "exists"
205 }
206 }
207 }
208 missingRequiredError: {
209 #x: {
210 a!: string
211 b?: string
212 c: string
213 }
214 y: {
215 for k, v in 〈1;#x〉 {
216 〈1;k〉: "exists"
217 }
218 }
219 }
220 issue560: {
221 #User: {
222 tags_str: string
223 tags_map: {
224 for k, v in 〈import;strings〉.Split(〈1;tags_str〉, " ") {
225 "\(〈1;v〉)": string
226 }
227 "{a}": string
228 }
229 }
230 user: {
231 〈1;#User〉
232 tags_str: "b {c}"
233 }
234 }
235}
View as plain text