/** * {@inheritDoc} */ @Override public void visit(ComparisonExpression expression) { if (appendableType == AppendableType.ARITHMETIC || appendableType == AppendableType.COMPARISON || appendableType == AppendableType.COMPOUNDABLE) { appendable = false; } // "x = y |" <- AND and OR are valid proposals // "(x = y) |" <- AND and OR are valid proposals else if (appendableType == AppendableType.LOGICAL) { AppendableType oldAppendableType = appendableType; appendableType = AppendableType.COMPLETE; expression.getRightExpression().accept(this); appendableType = oldAppendableType; } else if (expression.hasRightExpression()) { boolean oldConditionalExpression = conditionalExpression; conditionalExpression = false; expression.getRightExpression().accept(this); conditionalExpression = oldConditionalExpression; } }
/** * {@inheritDoc} */ @Override protected boolean validateComparisonExpression(ComparisonExpression expression) { boolean valid = super.validateComparisonExpression(expression); // Only validate the left and right if they are still valid if (valid && expression.hasLeftExpression() && expression.hasRightExpression()) { // The result of the two expressions must be like that of the other argument // Comparisons over instances of embeddable class or map entry types are not supported if (!isComparisonEquivalentType(expression.getLeftExpression(), expression.getRightExpression())) { addProblem(expression, ComparisonExpression_WrongComparisonType); valid = false; } } return valid; }
/** * {@inheritDoc} */ @Override public void visit(ComparisonExpression expression) { // Missing left expression if (!expression.hasLeftExpression()) { int startPosition = position(expression); addProblem(expression, startPosition, ComparisonExpression_MissingLeftExpression); } // Missing right expression if (!expression.hasRightExpression()) { int startPosition = position(expression) + (expression.hasLeftExpression() ? 1 : 0) + length(expression.getLeftExpression()) + expression.getComparisonOperator().length() + (expression.hasSpaceAfterIdentifier() ? 1 : 0); addProblem(expression, startPosition, ComparisonExpression_MissingRightExpression); } super.visit(expression); }
/** * {@inheritDoc} */ @Override public void visit(ComparisonExpression expression) { // Missing left expression if (!expression.hasLeftExpression()) { int startPosition = position(expression); addProblem(expression, startPosition, ComparisonExpression_MissingLeftExpression); } // Missing right expression if (!expression.hasRightExpression()) { int startPosition = position(expression) + (expression.hasLeftExpression() ? 1 : 0) + length(expression.getLeftExpression()) + expression.getComparisonOperator().length() + (expression.hasSpaceAfterIdentifier() ? 1 : 0); addProblem(expression, startPosition, ComparisonExpression_MissingRightExpression); } super.visit(expression); }