# This file tests disjunctions used as operands. -- in.cue -- list: *[1] | [2] condition: *true | false num: *1 | 2 object: *{a: 1} | {a: 2} forLoop: [ for e in list { "count: \(e)" }, ] conditional: { if condition { a: 3 } if num < 5 { b: 3 } } selector: { a: object.a } index: { a: list[0] } binOp: { a: num + 4 } unaryOp: { a: -num } -- out/eval/stats -- Leaks: 0 Freed: 30 Reused: 25 Allocs: 5 Retain: 0 Unifications: 22 Conjuncts: 33 Disjuncts: 30 -- out/eval -- (struct){ list: (list){ |(*(#list){ 0: (int){ 1 } }, (#list){ 0: (int){ 2 } }) } condition: (bool){ |(*(bool){ true }, (bool){ false }) } num: (int){ |(*(int){ 1 }, (int){ 2 }) } object: (struct){ |(*(struct){ a: (int){ 1 } }, (struct){ a: (int){ 2 } }) } forLoop: (#list){ 0: (string){ "count: 1" } } conditional: (struct){ a: (int){ 3 } b: (int){ 3 } } selector: (struct){ a: (int){ 1 } } index: (struct){ a: (int){ 1 } } binOp: (struct){ a: (int){ 5 } } unaryOp: (struct){ a: (int){ -1 } } } -- out/compile -- --- in.cue { list: (*[ 1, ]|[ 2, ]) condition: (*true|false) num: (*1|2) object: (*{ a: 1 }|{ a: 2 }) forLoop: [ for _, e in 〈1;list〉 { "count: \(〈1;e〉)" }, ] conditional: { if 〈1;condition〉 { a: 3 } if (〈1;num〉 < 5) { b: 3 } } selector: { a: 〈1;object〉.a } index: { a: 〈1;list〉[0] } binOp: { a: (〈1;num〉 + 4) } unaryOp: { a: -〈1;num〉 } }