don't report negated compile-time constants as always true/false (IDEA-118388)

This commit is contained in:
peter
2014-12-03 17:40:04 +01:00
parent e74aa2d864
commit 590c6bfc19
3 changed files with 20 additions and 0 deletions
@@ -536,6 +536,10 @@ public class DataFlowInspectionBase extends BaseJavaBatchLocalInspectionTool {
}
private static boolean isCompileConstantInIfCondition(PsiElement element) {
if (element instanceof PsiPrefixExpression && ((PsiPrefixExpression)element).getOperationTokenType() == JavaTokenType.EXCL) {
return isCompileConstantInIfCondition(((PsiPrefixExpression)element).getOperand());
}
if (!(element instanceof PsiReferenceExpression)) return false;
PsiElement resolved = ((PsiReferenceExpression)element).resolve();
if (!(resolved instanceof PsiField)) return false;
@@ -0,0 +1,14 @@
class Fun {
public static final boolean isDebug = true;
void foo() {
if (isDebug) {
System.out.println();
}
}
void fooNegated() {
if (!isDebug) {
System.out.println();
}
}
}
@@ -184,6 +184,8 @@ public class DataFlowInspectionTest extends LightCodeInsightFixtureTestCase {
public void testUnknownFloatMayBeNaN() { doTest(); }
public void testFloatEquality() { doTest(); }
public void testLastConstantConditionInAnd() { doTest(); }
public void testCompileTimeConstant() { doTest(); }
public void testTransientFinalField() { doTest(); }
public void testRememberLocalTransientFieldState() { doTest(); }