TODO: the new evaluator currently does not normalize disjuncts. It needs to be determined under which circumstances is desirable. The redundancy that remains from not normalizing can be useful. #name: normalization #evalFull -- in.cue -- a: string | string b: *1 | *int c: *1.0 | *float -- out/def -- a: string b: int c: float -- out/legacy-debug -- <0>{a: string, b: int, c: float} -- out/compile -- --- in.cue { a: (string|string) b: (*1|*int) c: (*1.0|*float) } -- out/eval/stats -- Leaks: 0 Freed: 10 Reused: 6 Allocs: 4 Retain: 0 Unifications: 4 Conjuncts: 10 Disjuncts: 10 -- out/eval -- (struct){ a: (string){ string } b: (int){ |(*(int){ 1 }, *(int){ int }) } c: (float){ |(*(float){ 1.0 }, *(float){ float }) } }