diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/value/DfaConstValue.java b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/value/DfaConstValue.java index 5ed0c6b81dde..ca2e13620c92 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/value/DfaConstValue.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/value/DfaConstValue.java @@ -89,11 +89,10 @@ public class DfaConstValue extends DfaValue { if (TypeConversionUtil.isNumericType(type) && !TypeConversionUtil.isFloatOrDoubleType(type)) { value = TypeConversionUtil.computeCastTo(value, PsiType.LONG); } - Object key = constant != null ? constant : value; - DfaConstValue instance = myValues.get(key); + DfaConstValue instance = myValues.get(value); if (instance == null) { instance = new DfaConstValue(value, myFactory, constant); - myValues.put(key, instance); + myValues.put(value, instance); } return instance; diff --git a/java/java-tests/testData/inspection/dataFlow/fixture/SameComparisonTwice.java b/java/java-tests/testData/inspection/dataFlow/fixture/SameComparisonTwice.java new file mode 100644 index 000000000000..52abf5b39e46 --- /dev/null +++ b/java/java-tests/testData/inspection/dataFlow/fixture/SameComparisonTwice.java @@ -0,0 +1,38 @@ +import org.jetbrains.annotations.Contract; +import org.jetbrains.annotations.Nullable; + +class Doo { + + static final int TYPE_1 = 20; + static final int TYPE_2 = 20; + + public static void failedSecondCondition(int type) { + if(type != TYPE_1) { + return; + } + + if(type != TYPE_2) { + System.out.println(); + } + } + + +} + +class Doo2 { + + static final int TYPE_1 = 200; + static final int TYPE_2 = 200; + + public static void failedSecondCondition(int type) { + if(type != TYPE_1) { + return; + } + + if(type != TYPE_2) { + System.out.println(); + } + } + + +} diff --git a/java/java-tests/testSrc/com/intellij/codeInspection/DataFlowInspectionTest.java b/java/java-tests/testSrc/com/intellij/codeInspection/DataFlowInspectionTest.java index 0f2124d7d071..f636c11b37ab 100644 --- a/java/java-tests/testSrc/com/intellij/codeInspection/DataFlowInspectionTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInspection/DataFlowInspectionTest.java @@ -309,6 +309,8 @@ public class DataFlowInspectionTest extends LightCodeInsightFixtureTestCase { public void testUnusedCallDoesNotMakeUnknown() { doTest(); } public void testGettersAndPureNoFlushing() { doTest(); } + public void testSameComparisonTwice() { doTest(); } + public void testParametersAreNonnullByDefault() { myFixture.addClass("package javax.annotation; public @interface ParametersAreNonnullByDefault {}"); myFixture.addClass("package javax.annotation; public @interface ParametersAreNullableByDefault {}");