diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/value/DfaValueFactory.java b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/value/DfaValueFactory.java index c22f3d5178ce..ba7772ba2ca2 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/value/DfaValueFactory.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/value/DfaValueFactory.java @@ -115,19 +115,6 @@ public class DfaValueFactory { return getConstFactory().create(literal); } - private static boolean isNotNullExpression(PsiExpression initializer, PsiType type) { - if (initializer instanceof PsiNewExpression) { - return true; - } - if (initializer instanceof PsiPolyadicExpression) { - if (type != null && type.equalsToText(CommonClassNames.JAVA_LANG_STRING)) { - return true; - } - } - - return false; - } - @Nullable public DfaValue createReferenceValue(PsiReferenceExpression referenceExpression) { PsiElement psiSource = referenceExpression.resolve(); @@ -139,12 +126,6 @@ public class DfaValueFactory { if (variable.hasModifierProperty(PsiModifier.FINAL) && !variable.hasModifierProperty(PsiModifier.TRANSIENT)) { DfaValue constValue = getConstFactory().create(variable); if (constValue != null) return constValue; - - PsiExpression initializer = variable.getInitializer(); - PsiType type = initializer == null ? null : initializer.getType(); - if (initializer != null && type != null && isNotNullExpression(initializer, type)) { - return createTypeValue(type, Nullness.NOT_NULL); - } } if (!variable.hasModifierProperty(PsiModifier.VOLATILE) && isEffectivelyUnqualified(referenceExpression)) { diff --git a/java/java-tests/testData/inspection/dataFlow/fixture/FinalFieldDuringInitialization.java b/java/java-tests/testData/inspection/dataFlow/fixture/FinalFieldDuringInitialization.java new file mode 100644 index 000000000000..53546e3e2e04 --- /dev/null +++ b/java/java-tests/testData/inspection/dataFlow/fixture/FinalFieldDuringInitialization.java @@ -0,0 +1,13 @@ +class Test { + public static final Test INSTANCE = new Test(); + + public Test() { + if (INSTANCE == null) { + System.out.println("Instance is null"); + } + } + + public static void main(String[] args) { + System.out.println("Hello, world!"); + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/codeInspection/DataFlowInspectionTest.java b/java/java-tests/testSrc/com/intellij/codeInspection/DataFlowInspectionTest.java index 8de5e670edc2..4810d2e81cdb 100644 --- a/java/java-tests/testSrc/com/intellij/codeInspection/DataFlowInspectionTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInspection/DataFlowInspectionTest.java @@ -192,6 +192,7 @@ public class DataFlowInspectionTest extends LightCodeInsightFixtureTestCase { public void testLastConstantConditionInAnd() { doTest(); } public void testTransientFinalField() { doTest(); } + public void testFinalFieldDuringInitialization() { doTest(); } public void _testSymmetricUncheckedCast() { doTest(); } // http://youtrack.jetbrains.com/issue/IDEABKL-6871 public void testNullCheckDoesntAffectUncheckedCast() { doTest(); } public void testThrowNull() { doTest(); }