IDEA-87966 Pointless boolean expression inspection: false positive fixed

This commit is contained in:
Danila Ponomarenko
2012-06-29 16:28:16 +04:00
parent 9ad9275b9a
commit 711d618f51
2 changed files with 16 additions and 25 deletions
@@ -47,12 +47,11 @@ public class BreakStringOnLineBreaksIntentionAction extends PsiElementBaseIntent
}
final int indexOfSlashN = text.indexOf("\\n");
final int indexOfSlashNSlashR = text.indexOf("\\n\\r");
if (indexOfSlashN == -1 || Comparing.equal(text.substring(indexOfSlashN, text.length()), "\\n\"")){
return false;
}
final int indexOfSlashNSlashR = text.indexOf("\\n\\r");
if (indexOfSlashNSlashR != -1 && Comparing.equal(text.substring(indexOfSlashNSlashR, text.length()), "\\n\\r\"")){
return false;
}
@@ -38,18 +38,15 @@ import java.util.Set;
public class PointlessBooleanExpressionInspection extends BaseInspection {
private static final Set<IElementType> booleanTokens = new HashSet<IElementType>(7);
static {
booleanTokens.add(JavaTokenType.ANDAND);
booleanTokens.add(JavaTokenType.AND);
booleanTokens.add(JavaTokenType.OROR);
booleanTokens.add(JavaTokenType.OR);
booleanTokens.add(JavaTokenType.XOR);
booleanTokens.add(JavaTokenType.EQEQ);
booleanTokens.add(JavaTokenType.NE);
}
private static final Set<IElementType> booleanTokens = new HashSet<IElementType>() {{
add(JavaTokenType.ANDAND);
add(JavaTokenType.AND);
add(JavaTokenType.OROR);
add(JavaTokenType.OR);
add(JavaTokenType.XOR);
add(JavaTokenType.EQEQ);
add(JavaTokenType.NE);
}};
/**
* @noinspection PublicField
@@ -172,10 +169,8 @@ public class PointlessBooleanExpressionInspection extends BaseInspection {
private static String createStringForNegatedExpression(PsiExpression exp) {
if (ComparisonUtils.isComparison(exp)) {
final PsiBinaryExpression binaryExpression =
(PsiBinaryExpression)exp;
final String negatedComparison =
ComparisonUtils.getNegatedComparison(binaryExpression.getOperationTokenType());
final PsiBinaryExpression binaryExpression = (PsiBinaryExpression)exp;
final String negatedComparison = ComparisonUtils.getNegatedComparison(binaryExpression.getOperationTokenType());
final PsiExpression lhs = binaryExpression.getLOperand();
final PsiExpression rhs = binaryExpression.getROperand();
assert rhs != null;
@@ -314,16 +309,13 @@ public class PointlessBooleanExpressionInspection extends BaseInspection {
}
final boolean isPointless;
if (sign.equals(JavaTokenType.EQEQ) ||
sign.equals(JavaTokenType.NE)) {
if (sign.equals(JavaTokenType.EQEQ) || sign.equals(JavaTokenType.NE)) {
isPointless = equalityExpressionIsPointless(operands);
}
else if (sign.equals(JavaTokenType.ANDAND) ||
sign.equals(JavaTokenType.AND)) {
else if (sign.equals(JavaTokenType.ANDAND) || sign.equals(JavaTokenType.AND)) {
isPointless = andExpressionIsPointless(operands);
}
else if (sign.equals(JavaTokenType.OROR) ||
sign.equals(JavaTokenType.OR)) {
else if (sign.equals(JavaTokenType.OROR) || sign.equals(JavaTokenType.OR)) {
isPointless = orExpressionIsPointless(operands);
}
else if (sign.equals(JavaTokenType.XOR)) {
@@ -384,7 +376,7 @@ public class PointlessBooleanExpressionInspection extends BaseInspection {
@Nullable
private Boolean evaluate(@Nullable PsiExpression expression) {
if (m_ignoreExpressionsContainingConstants && !(expression instanceof PsiLiteralExpression)) {
return false;
return null;
}
if (expression == null) {