diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/DfaMemoryStateImpl.java b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/DfaMemoryStateImpl.java
index f85ba17bf7cf..6f466384c8ae 100644
--- a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/DfaMemoryStateImpl.java
+++ b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/DfaMemoryStateImpl.java
@@ -549,7 +549,7 @@ public class DfaMemoryStateImpl implements DfaMemoryState {
public DfaConstValue getConstantValue(DfaVariableValue value) {
DfaConstValue result = null;
for (DfaValue equal : getEqClassesFor(value)) {
- if (equal == value) continue;
+ if (equal instanceof DfaVariableValue) continue;
DfaConstValue constValue = asConstantValue(equal);
if (constValue == null) return null;
result = constValue;
diff --git a/java/java-tests/testData/inspection/dataFlow/fixture/ReportConstantReferencesAfterFinalFieldAccess.java b/java/java-tests/testData/inspection/dataFlow/fixture/ReportConstantReferencesAfterFinalFieldAccess.java
new file mode 100644
index 000000000000..9957eb710fa6
--- /dev/null
+++ b/java/java-tests/testData/inspection/dataFlow/fixture/ReportConstantReferencesAfterFinalFieldAccess.java
@@ -0,0 +1,18 @@
+public class Foo {
+ private final boolean field = hashCode() == 2;
+
+ public void main(boolean b) {
+ if (!b) {
+ System.out.println(b);
+
+ }
+ if (field) {
+ System.out.println(b);
+ }
+ if (b) {
+ System.out.println(b);
+ }
+ }
+
+}
+
diff --git a/java/java-tests/testSrc/com/intellij/codeInspection/DataFlowInspectionTest.java b/java/java-tests/testSrc/com/intellij/codeInspection/DataFlowInspectionTest.java
index dfa3bcbed316..74cbba71ac53 100644
--- a/java/java-tests/testSrc/com/intellij/codeInspection/DataFlowInspectionTest.java
+++ b/java/java-tests/testSrc/com/intellij/codeInspection/DataFlowInspectionTest.java
@@ -147,12 +147,14 @@ public class DataFlowInspectionTest extends LightCodeInsightFixtureTestCase {
}
public void testReportConstantReferences() {
- doTestReplaceConstantReferences();
+ doTestReportConstantReferences();
myFixture.launchAction(myFixture.findSingleIntention("Replace with 'null'"));
myFixture.checkResultByFile(getTestName(false) + "_after.java");
}
- private void doTestReplaceConstantReferences() {
+ public void testReportConstantReferencesAfterFinalFieldAccess() { doTestReportConstantReferences(); }
+
+ private void doTestReportConstantReferences() {
DataFlowInspection inspection = new DataFlowInspection();
inspection.SUGGEST_NULLABLE_ANNOTATIONS = true;
myFixture.enableInspections(inspection);
@@ -160,27 +162,27 @@ public class DataFlowInspectionTest extends LightCodeInsightFixtureTestCase {
}
public void testReportConstantReferences_ReplaceWithString() {
- doTestReplaceConstantReferences();
+ doTestReportConstantReferences();
myFixture.launchAction(myFixture.findSingleIntention("Replace with 'CONST'"));
myFixture.checkResultByFile(getTestName(false) + "_after.java");
}
public void testReportConstantReferences_ReplaceWithIntConstant() {
- doTestReplaceConstantReferences();
+ doTestReportConstantReferences();
myFixture.launchAction(myFixture.findSingleIntention("Replace with 'CONST'"));
myFixture.checkResultByFile(getTestName(false) + "_after.java");
}
public void testReportConstantReferences_ReplaceWithEnum() {
myFixture.addClass("package foo; public enum MyEnum { FOO }");
- doTestReplaceConstantReferences();
+ doTestReportConstantReferences();
myFixture.launchAction(myFixture.findSingleIntention("Replace with 'FOO'"));
myFixture.checkResultByFile(getTestName(false) + "_after.java");
}
public void testReportConstantReferences_NotInComplexAssignment() {
myFixture.addClass("package foo; public enum MyEnum { FOO }");
- doTestReplaceConstantReferences();
+ doTestReportConstantReferences();
assertEmpty(myFixture.filterAvailableIntentions("Replace with"));
}
- public void testReportConstantReferences_Switch() { doTestReplaceConstantReferences(); }
+ public void testReportConstantReferences_Switch() { doTestReportConstantReferences(); }
public void testCheckFieldInitializers() {
doTest();