public static Expression foldAnd()

in src/main/java/net/hydromatic/linq4j/expressions/Expressions.java [2936:2964]


  public static Expression foldAnd(List<Expression> conditions) {
    Expression e = null;
    int nullCount = 0;
    for (Expression condition : conditions) {
      if (condition instanceof ConstantExpression) {
        final Boolean value = (Boolean) ((ConstantExpression) condition).value;
        if (value == null) {
          ++nullCount;
          continue;
        } else if (value) {
          continue;
        } else {
          return constant(false);
        }
      }
      if (e == null) {
        e = condition;
      } else {
        e = andAlso(e, condition);
      }
    }
    if (nullCount > 0) {
      return constant(null);
    }
    if (e == null) {
      return constant(true);
    }
    return e;
  }