Skip to content

Commit 72567b9

Browse files
committed
cue/testdata: add regression test for https://cuelang.org/issue/3688
For #3688 Signed-off-by: Paul Jolly <[email protected]> Change-Id: I01a9f1c0fc9cbdb7618dd6acbaba8da58b998b2a Reviewed-on: https://review.gerrithub.io/c/cue-lang/cue/+/1211940 Unity-Result: CUE porcuepine <[email protected]> TryBot-Result: CUEcueckoo <[email protected]> Reviewed-by: Daniel Martí <[email protected]>
1 parent bdeae96 commit 72567b9

File tree

1 file changed

+125
-0
lines changed

1 file changed

+125
-0
lines changed

cue/testdata/eval/issue3688.txtar

+125
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
# This test is important in locking in the behaviour of the now-defalut
2+
# CUE_DEBUG=openinline=0.
3+
4+
-- x.cue --
5+
package x
6+
7+
#TypeA: string | {foo: int}
8+
9+
#fun1: {
10+
_in: #TypeA
11+
out: [
12+
// either `in` is a string
13+
if (_in & string) != _|_ {
14+
_in
15+
},
16+
// or `in` is has field `foo`
17+
if _in.foo != _|_ {
18+
"foo"
19+
},
20+
"impossible", // in & #TypeA != _|_ !!
21+
][0]
22+
}
23+
24+
examples: [string]: {
25+
in: _
26+
res: (#fun1 & {_in: in, _}).out
27+
}
28+
29+
examples: eg1: in: "test"
30+
examples: eg2: in: {
31+
foo: 5
32+
}
33+
examples: eg3: in: {
34+
foo: 5
35+
bar: "test"
36+
}
37+
-- out/compile --
38+
--- x.cue
39+
{
40+
#TypeA: (string|{
41+
foo: int
42+
})
43+
#fun1: {
44+
_in: 〈1;#TypeA〉
45+
out: [
46+
if ((〈1;_in〉 & string) != _|_(explicit error (_|_ literal) in source)) {
47+
〈2;_in〉
48+
},
49+
if (〈1;_in〉.foo != _|_(explicit error (_|_ literal) in source)) {
50+
"foo"
51+
},
52+
"impossible",
53+
][0]
54+
}
55+
examples: {
56+
[string]: {
57+
in: _
58+
res: (〈2;#fun1〉 & {
59+
_in: 〈1;in〉
60+
_
61+
}).out
62+
}
63+
}
64+
examples: {
65+
eg1: {
66+
in: "test"
67+
}
68+
}
69+
examples: {
70+
eg2: {
71+
in: {
72+
foo: 5
73+
}
74+
}
75+
}
76+
examples: {
77+
eg3: {
78+
in: {
79+
foo: 5
80+
bar: "test"
81+
}
82+
}
83+
}
84+
}
85+
-- out/eval/stats --
86+
Leaks: 15
87+
Freed: 105
88+
Reused: 99
89+
Allocs: 21
90+
Retain: 37
91+
92+
Unifications: 82
93+
Conjuncts: 246
94+
Disjuncts: 139
95+
-- out/eval --
96+
(struct){
97+
#TypeA: ((string|struct)){ |((string){ string }, (#struct){
98+
foo: (int){ int }
99+
}) }
100+
#fun1: (#struct){
101+
_in(:x): ((string|struct)){ |((string){ string }, (#struct){
102+
foo: (int){ int }
103+
}) }
104+
out: (string){ "impossible" }
105+
}
106+
examples: (struct){
107+
eg1: (struct){
108+
in: (string){ "test" }
109+
res: (string){ "test" }
110+
}
111+
eg2: (struct){
112+
in: (struct){
113+
foo: (int){ 5 }
114+
}
115+
res: (string){ "foo" }
116+
}
117+
eg3: (struct){
118+
in: (struct){
119+
foo: (int){ 5 }
120+
bar: (string){ "test" }
121+
}
122+
res: (string){ "impossible" }
123+
}
124+
}
125+
}

0 commit comments

Comments
 (0)