1659
1660
private static _normalizeArr(arr: ReadonlyArray<ContextKeyExpression | null | undefined>, negated: ContextKeyExpression | null, extraRedundantCheck: boolean): ContextKeyExpression | undefined {
1662
>
let hasTrue = false;
1663
>
1664
>
for (const e of arr) {
1665
>
if (!e) {
1666
continue;
1667
}
1669
>
if (e.type === ContextKeyExprType.True) {
1670
// anything && true ==> anything
1671
hasTrue = true;
1672
continue;
1673
}
1675
>
if (e.type === ContextKeyExprType.False) {
1676
// anything && false ==> false
1677
return ContextKeyFalseExpr.INSTANCE;
1678
}
1680
>
if (e.type === ContextKeyExprType.And) {
1681
expr.push(...e.expr);
1682
continue;
1683
}
1685
>
expr.push(e);
1686
>
}
1687
>
1688
>
if (expr.length === 0 && hasTrue) {
1689
return ContextKeyTrueExpr.INSTANCE;
1690
}
1692
>
if (expr.length === 0) {
1693
return undefined;
1694
}
1696
>
if (expr.length === 1) {
1697
return expr[0];
1698
}