...
1# This file tests disjunctions used as operands.
2
3-- in.cue --
4list: *[1] | [2]
5condition: *true | false
6num: *1 | 2
7object: *{a: 1} | {a: 2}
8
9forLoop: [
10 for e in list {
11 "count: \(e)"
12 },
13]
14
15conditional: {
16 if condition {
17 a: 3
18 }
19 if num < 5 {
20 b: 3
21 }
22}
23
24selector: {
25 a: object.a
26}
27
28index: {
29 a: list[0]
30}
31
32binOp: {
33 a: num + 4
34}
35
36unaryOp: {
37 a: -num
38}
39-- out/eval/stats --
40Leaks: 0
41Freed: 30
42Reused: 25
43Allocs: 5
44Retain: 0
45
46Unifications: 22
47Conjuncts: 33
48Disjuncts: 30
49-- out/eval --
50(struct){
51 list: (list){ |(*(#list){
52 0: (int){ 1 }
53 }, (#list){
54 0: (int){ 2 }
55 }) }
56 condition: (bool){ |(*(bool){ true }, (bool){ false }) }
57 num: (int){ |(*(int){ 1 }, (int){ 2 }) }
58 object: (struct){ |(*(struct){
59 a: (int){ 1 }
60 }, (struct){
61 a: (int){ 2 }
62 }) }
63 forLoop: (#list){
64 0: (string){ "count: 1" }
65 }
66 conditional: (struct){
67 a: (int){ 3 }
68 b: (int){ 3 }
69 }
70 selector: (struct){
71 a: (int){ 1 }
72 }
73 index: (struct){
74 a: (int){ 1 }
75 }
76 binOp: (struct){
77 a: (int){ 5 }
78 }
79 unaryOp: (struct){
80 a: (int){ -1 }
81 }
82}
83-- out/compile --
84--- in.cue
85{
86 list: (*[
87 1,
88 ]|[
89 2,
90 ])
91 condition: (*true|false)
92 num: (*1|2)
93 object: (*{
94 a: 1
95 }|{
96 a: 2
97 })
98 forLoop: [
99 for _, e in 〈1;list〉 {
100 "count: \(〈1;e〉)"
101 },
102 ]
103 conditional: {
104 if 〈1;condition〉 {
105 a: 3
106 }
107 if (〈1;num〉 < 5) {
108 b: 3
109 }
110 }
111 selector: {
112 a: 〈1;object〉.a
113 }
114 index: {
115 a: 〈1;list〉[0]
116 }
117 binOp: {
118 a: (〈1;num〉 + 4)
119 }
120 unaryOp: {
121 a: -〈1;num〉
122 }
123}
View as plain text