1697
return expr[0];
1698
}
1700
>
expr.sort(cmp);
1701
>
1702
>
// eliminate duplicate terms
1703
>
for (let i = 1; i < expr.length; i++) {
1704
>
if (expr[i - 1].equals(expr[i])) {
1705
expr.splice(i, 1);
1706
i--;
1707
}
1709
>
1710
>
if (expr.length === 1) {
1711
return expr[0];
1712
}
1714
>
// We must distribute any OR expression because we don't support parens
1715
>
// OR extensions will be at the end (due to sorting rules)
1716
>
while (expr.length > 1) {
1717
>
const lastElement = expr[expr.length - 1];
1718
>
if (lastElement.type !== ContextKeyExprType.Or) {
1719
>
break;
1720
>
}
1721
// pop the last element
1722
expr.pop();