@Override public Expression visit(MethodCallExpression methodCallExpression, Expression targetExpression, List<Expression> expressions) { if (BOOLEAN_VALUEOF_BOOL.equals(methodCallExpression.method)) { Boolean always = always(expressions.get(0)); if (always != null) { return always ? TRUE_EXPR : FALSE_EXPR; } } return super.visit(methodCallExpression, targetExpression, expressions); }
/** * Returns whether an expression always returns a non-null result. * For instance, primitive types cannot contain null values. * * @param expression expression to test * @return true when the expression is known to be not-null */ protected boolean isKnownNotNull(Expression expression) { return Primitive.is(expression.getType()) || always(expression) != null || (expression instanceof MethodCallExpression && KNOWN_NON_NULL_METHODS.contains( ((MethodCallExpression) expression).method)); }
switch (binary.getNodeType()) { case AndAlso: always = always(expression0); if (always != null) { return always always = always(expression0); if (always != null) { always = always(expression0); if (always != null) { return always ? expression1 : Expressions.not(expression1); always = always(expression0); if (always != null) { return always ? Expressions.not(expression1) : expression1;
Boolean always = always(expression); if (always != null) { return always ? FALSE_EXPR : TRUE_EXPR;
switch (ternary.getNodeType()) { case Conditional: Boolean always = always(expression0); if (always != null) { always = always(expression1); if (always != null && isKnownNotNull(expression2)) { return (always always = always(expression2); if (always != null && isKnownNotNull(expression1)) { return (always