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 8b2beae6d5d9..a1a1f142d1a3 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 @@ -253,10 +253,6 @@ public class DfaMemoryStateImpl implements DfaMemoryState { if (value instanceof DfaVariableValue) { setVariableState(var, getVariableState((DfaVariableValue)value)); } - else if (value instanceof DfaBoxedValue) { - setVariableState(var, getVariableState(var).withNullable(false)); - applyCondition(compareToNull(var, true)); - } } if (getVariableState(var).isNotNull()) { @@ -477,6 +473,7 @@ public class DfaMemoryStateImpl implements DfaMemoryState { @Override public boolean isNotNull(DfaValue dfaVar) { if (dfaVar instanceof DfaConstValue) return ((DfaConstValue)dfaVar).getValue() != null; + if (dfaVar instanceof DfaBoxedValue) return true; if (dfaVar instanceof DfaTypeValue) return ((DfaTypeValue)dfaVar).isNotNull(); if (dfaVar instanceof DfaVariableValue) { if (getVariableState((DfaVariableValue)dfaVar).isNotNull()) return true; diff --git a/java/java-tests/testSrc/com/intellij/codeInspection/NullityInferenceFromSourceTestCase.groovy b/java/java-tests/testSrc/com/intellij/codeInspection/NullityInferenceFromSourceTestCase.groovy index 42d63f461d8b..4e85aa7db68d 100644 --- a/java/java-tests/testSrc/com/intellij/codeInspection/NullityInferenceFromSourceTestCase.groovy +++ b/java/java-tests/testSrc/com/intellij/codeInspection/NullityInferenceFromSourceTestCase.groovy @@ -50,6 +50,18 @@ abstract class NullityInferenceFromSourceTestCase extends LightCodeInsightFixtur assert inferNullity(parse('String foo() { return bar(); }; String bar() { if (equals(2)) return null; return "a"; }; ')) == UNKNOWN } + void "test return boxed boolean constant"() { + assert inferNullity(parse('Object foo() { return true; }')) == NOT_NULL + } + + void "test return boxed boolean value"() { + assert inferNullity(parse('Object foo(Object o) { return o == null; }')) == NOT_NULL + } + + void "test return boxed integer"() { + assert inferNullity(parse('Object foo() { return 1; }')) == NOT_NULL + } + protected abstract Nullness inferNullity(PsiMethod method) private PsiMethod parse(String method) { @@ -60,18 +72,6 @@ abstract class NullityInferenceFromSourceTestCase extends LightCodeInsightFixtur Nullness inferNullity(PsiMethod method) { return NullableNotNullManager.isNotNull(method) ? NOT_NULL : NullableNotNullManager.isNullable(method) ? NULLABLE : UNKNOWN } - void "test return boxed boolean constant"() { - assert inferNullity(parse('Object foo() { return true; }')) == NOT_NULL - } - - void "test return boxed boolean value"() { - assert inferNullity(parse('Object foo(Object o) { return o == null; }')) == NOT_NULL - } - - void "test return boxed integer"() { - assert inferNullity(parse('Object foo() { return 1; }')) == NOT_NULL - } - } static class DfaInferenceTest extends NullityInferenceFromSourceTestCase {