diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/StandardInstructionVisitor.java b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/StandardInstructionVisitor.java index 7276f8e4c8cf..8c7b478a2ced 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/StandardInstructionVisitor.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/StandardInstructionVisitor.java @@ -353,7 +353,7 @@ public class StandardInstructionVisitor extends InstructionVisitor { return qualifierValue; } - if (type != null && (type instanceof PsiClassType || type.getArrayDimensions() > 0)) { + if (type != null && !(type instanceof PsiPrimitiveType)) { Nullness nullability = myReturnTypeNullability.get(instruction); if (nullability == Nullness.UNKNOWN && factory.isUnknownMembersAreNullable()) { nullability = Nullness.NULLABLE; diff --git a/java/java-tests/testData/inspection/dataFlow/fixture/CapturedWildcardNotNull.java b/java/java-tests/testData/inspection/dataFlow/fixture/CapturedWildcardNotNull.java new file mode 100644 index 000000000000..9ff5d29115c4 --- /dev/null +++ b/java/java-tests/testData/inspection/dataFlow/fixture/CapturedWildcardNotNull.java @@ -0,0 +1,17 @@ +import org.jetbrains.annotations.NotNull; + +abstract class Foo { + @NotNull + abstract T get(@NotNull Class type); + + void foo(Field field) { + Object value = get(field.getType()); + if (value != null) { + + } + } +} + +interface Field { + Class getType(); +} diff --git a/java/java-tests/testSrc/com/intellij/codeInspection/DataFlowInspection8Test.java b/java/java-tests/testSrc/com/intellij/codeInspection/DataFlowInspection8Test.java index 3e74e64e0b02..e5409241d5cb 100644 --- a/java/java-tests/testSrc/com/intellij/codeInspection/DataFlowInspection8Test.java +++ b/java/java-tests/testSrc/com/intellij/codeInspection/DataFlowInspection8Test.java @@ -100,4 +100,6 @@ public class DataFlowInspection8Test extends DataFlowInspectionTestCase { nnnManager.setNullables(); }); } + + public void testCapturedWildcardNotNull() { doTest(); } } \ 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 d2be15f37aec..a513e17845f0 100644 --- a/java/java-tests/testSrc/com/intellij/codeInspection/DataFlowInspectionTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInspection/DataFlowInspectionTest.java @@ -410,4 +410,6 @@ public class DataFlowInspectionTest extends DataFlowInspectionTestCase { public void testNullLiteralArgumentValueUsedAsReturnValue() { doTest(); } + + public void testCapturedWildcardNotNull() { doTest(); } }