...
1-- in.cue --
2#foo: {
3 name: string
4}
5foo: #foo & {
6 // These should all be allowed.
7 _name: "foo"
8 _#name: "bar"
9
10 #name: "baz"
11}
12-- out/eval/stats --
13Leaks: 0
14Freed: 8
15Reused: 5
16Allocs: 3
17Retain: 0
18
19Unifications: 8
20Conjuncts: 10
21Disjuncts: 8
22-- out/evalalpha --
23Errors:
24foo.#name: field not allowed:
25 ./in.cue:4:6
26 ./in.cue:9:2
27
28Result:
29(_|_){
30 // [eval]
31 #foo: (#struct){
32 name: (string){ string }
33 }
34 foo: (_|_){
35 // [eval]
36 _name: (string){ "foo" }
37 _#name: (string){ "bar" }
38 #name: (_|_){
39 // [eval] foo.#name: field not allowed:
40 // ./in.cue:4:6
41 // ./in.cue:9:2
42 }
43 name: (string){ string }
44 }
45}
46-- diff/-out/evalalpha<==>+out/eval --
47diff old new
48--- old
49+++ new
50@@ -1,11 +1,23 @@
51-(struct){
52+Errors:
53+foo.#name: field not allowed:
54+ ./in.cue:4:6
55+ ./in.cue:9:2
56+
57+Result:
58+(_|_){
59+ // [eval]
60 #foo: (#struct){
61 name: (string){ string }
62 }
63- foo: (#struct){
64- name: (string){ string }
65+ foo: (_|_){
66+ // [eval]
67 _name: (string){ "foo" }
68 _#name: (string){ "bar" }
69- #name: (string){ "baz" }
70+ #name: (_|_){
71+ // [eval] foo.#name: field not allowed:
72+ // ./in.cue:4:6
73+ // ./in.cue:9:2
74+ }
75+ name: (string){ string }
76 }
77 }
78-- diff/explanation --
79New evaluator now disallows new definitions in closed structs.
80-- out/eval --
81(struct){
82 #foo: (#struct){
83 name: (string){ string }
84 }
85 foo: (#struct){
86 name: (string){ string }
87 _name: (string){ "foo" }
88 _#name: (string){ "bar" }
89 #name: (string){ "baz" }
90 }
91}
92-- out/compile --
93--- in.cue
94{
95 #foo: {
96 name: string
97 }
98 foo: (〈0;#foo〉 & {
99 _name: "foo"
100 _#name: "bar"
101 #name: "baz"
102 })
103}
View as plain text