diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/miscGenerics/SuspiciousMethodCallUtil.java b/java/java-analysis-impl/src/com/intellij/codeInspection/miscGenerics/SuspiciousMethodCallUtil.java index d725158a5201..9197cf6145e6 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/miscGenerics/SuspiciousMethodCallUtil.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/miscGenerics/SuspiciousMethodCallUtil.java @@ -115,7 +115,7 @@ public class SuspiciousMethodCallUtil { argType = ((PsiPrimitiveType)argType).getBoxedType(methodCall); } - if (!(argType instanceof PsiClassType)) return null; + if (argType == null) return null; final JavaResolveResult resolveResult = methodExpression.advancedResolve(false); PsiMethod calleeMethod = (PsiMethod)resolveResult.getElement(); diff --git a/java/java-tests/testData/inspection/suspiciousCalls/NonClassArgTypes.java b/java/java-tests/testData/inspection/suspiciousCalls/NonClassArgTypes.java new file mode 100644 index 000000000000..f3270c74262f --- /dev/null +++ b/java/java-tests/testData/inspection/suspiciousCalls/NonClassArgTypes.java @@ -0,0 +1,31 @@ +import java.util.ArrayList; +import java.util.List; + +class Main { + void suspicious(Object[][] data) { + List stringList = new ArrayList<>(); + + stringList.remove(data); + stringList.remove(data[0]); + stringList.remove(data[0][0]); + + stringList.contains(data); + stringList.contains(data[0]); + stringList.contains(data[0][0]); + + M m = new M<>(); + stringList.contains(m.get()); + + M m1 = new M<>(); + stringList.contains(m1.get()); + + M m2 = new M<>(); + stringList.contains(m2.get()); + } + + class M { + public T get() { + return null; + } + } +} diff --git a/java/java-tests/testSrc/com/intellij/codeInspection/SuspiciousCollectionMethodCallsTest.java b/java/java-tests/testSrc/com/intellij/codeInspection/SuspiciousCollectionMethodCallsTest.java index 4d3ef19d9828..58c96b5562a1 100644 --- a/java/java-tests/testSrc/com/intellij/codeInspection/SuspiciousCollectionMethodCallsTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInspection/SuspiciousCollectionMethodCallsTest.java @@ -29,6 +29,10 @@ public class SuspiciousCollectionMethodCallsTest extends LightCodeInsightFixture doTest(); } + public void testNonClassArgTypes() throws Exception { + doTest(); + } + @NotNull @Override protected LightProjectDescriptor getProjectDescriptor() {