UNPKG

715 BJavaScriptView Raw
1import UnionType from './types/UnionType';
2
3
4export default function makeUnion(context, types) {
5 var length = types.length;
6 var merged = [];
7 for (var i = 0; i < length; i++) {
8 var type = types[i];
9 if (type instanceof UnionType) {
10 mergeUnionTypes(merged, type.types);
11 } else {
12 merged.push(type);
13 }
14 }
15 var union = new UnionType(context);
16 union.types = merged;
17 return union;
18}
19
20function mergeUnionTypes(aTypes, bTypes) {
21 loop: for (var i = 0; i < bTypes.length; i++) {
22 var bType = bTypes[i];
23 for (var j = 0; j < aTypes.length; j++) {
24 var aType = aTypes[j];
25 if (aType.acceptsType(bType)) {
26 continue loop;
27 }
28 }
29 aTypes.push(bType);
30 }
31}
\No newline at end of file