diff --git a/java/java-impl/src/com/intellij/codeInspection/dataFlow/StandardDataFlowRunner.java b/java/java-impl/src/com/intellij/codeInspection/dataFlow/StandardDataFlowRunner.java index c09e4528c571..442a33403240 100644 --- a/java/java-impl/src/com/intellij/codeInspection/dataFlow/StandardDataFlowRunner.java +++ b/java/java-impl/src/com/intellij/codeInspection/dataFlow/StandardDataFlowRunner.java @@ -29,10 +29,7 @@ import com.intellij.codeInspection.dataFlow.instructions.InstanceofInstruction; import com.intellij.codeInspection.dataFlow.instructions.Instruction; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.util.Pair; -import com.intellij.psi.PsiElement; -import com.intellij.psi.PsiExpression; -import com.intellij.psi.PsiReturnStatement; -import com.intellij.psi.PsiMethod; +import com.intellij.psi.*; import gnu.trove.THashSet; import org.jetbrains.annotations.NotNull; @@ -68,7 +65,9 @@ public class StandardDataFlowRunner extends AnnotationsAwareDataFlowRunner { myIsInMethod = psiBlock.getParent() instanceof PsiMethod; if (myIsInMethod) { PsiMethod method = (PsiMethod)psiBlock.getParent(); - myInNullableMethod = NullableNotNullManager.isNullable(method); + PsiType returnType = method.getReturnType(); + myInNullableMethod = NullableNotNullManager.isNullable(method) || + returnType != null && returnType.equalsToText(CommonClassNames.JAVA_LANG_VOID); myInNotNullMethod = NullableNotNullManager.isNotNull(method); } diff --git a/java/java-psi-api/src/com/intellij/psi/CommonClassNames.java b/java/java-psi-api/src/com/intellij/psi/CommonClassNames.java index 50d680fe8e5d..17acf03571f8 100644 --- a/java/java-psi-api/src/com/intellij/psi/CommonClassNames.java +++ b/java/java-psi-api/src/com/intellij/psi/CommonClassNames.java @@ -27,6 +27,7 @@ public interface CommonClassNames { @NonNls String JAVA_LANG_CLASS = "java.lang.Class"; @NonNls String JAVA_LANG_OVERRIDE = "java.lang.Override"; @NonNls String JAVA_LANG_ENUM = "java.lang.Enum"; + @NonNls String JAVA_LANG_VOID = "java.lang.Void"; @NonNls String JAVA_LANG_THROWABLE = "java.lang.Throwable"; @NonNls String JAVA_LANG_EXCEPTION = "java.lang.Exception"; diff --git a/java/java-tests/testData/inspection/dataFlow/fixture/ReturningNullFromVoidMethod.java b/java/java-tests/testData/inspection/dataFlow/fixture/ReturningNullFromVoidMethod.java new file mode 100644 index 000000000000..e544bf18c7de --- /dev/null +++ b/java/java-tests/testData/inspection/dataFlow/fixture/ReturningNullFromVoidMethod.java @@ -0,0 +1,6 @@ +public class BrokenAlignment { + + Void test() { + return null; + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/codeInspection/DataFlowInspectionFixtureTest.java b/java/java-tests/testSrc/com/intellij/codeInspection/DataFlowInspectionFixtureTest.java index a03ad793c1b4..019628d57e9e 100644 --- a/java/java-tests/testSrc/com/intellij/codeInspection/DataFlowInspectionFixtureTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInspection/DataFlowInspectionFixtureTest.java @@ -86,5 +86,6 @@ public class DataFlowInspectionFixtureTest extends JavaCodeInsightFixtureTestCas public void testAssigningUnknownToNullable() throws Throwable { doTest(); } public void testSynchronizingOnNullable() throws Throwable { doTest(); } + public void testReturningNullFromVoidMethod() throws Throwable { doTest(); } }