From 6942d1c534b34fd0e30f49ede5f268df1d5ef2fc Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Fri, 6 Sep 2013 15:55:31 +0200 Subject: [PATCH] IDEA-99829 (Problem with inspection "Raw use of parameterized class" option "Ignore where a type parameter would not compile.) --- .../ig/migration/RawUseOfParameterizedTypeInspection.java | 8 +++++--- .../RawUseOfParameterizedType.java | 4 ++-- .../migration/raw_use_of_parameterized_type/expected.xml | 7 +++++++ .../RawUseOfParameterizedTypeInspectionTest.java | 1 + 4 files changed, 15 insertions(+), 5 deletions(-) diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/migration/RawUseOfParameterizedTypeInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/migration/RawUseOfParameterizedTypeInspection.java index 6c86f0055acc..450ee2c19e95 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/migration/RawUseOfParameterizedTypeInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/migration/RawUseOfParameterizedTypeInspection.java @@ -17,7 +17,6 @@ package com.siyeh.ig.migration; import com.intellij.codeInspection.ui.MultipleCheckboxOptionsPanel; import com.intellij.lang.java.JavaLanguage; -import com.intellij.openapi.util.WriteExternalException; import com.intellij.psi.*; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.psi.util.PsiUtil; @@ -25,7 +24,6 @@ import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; import com.siyeh.ig.psiutils.MethodUtils; -import org.jdom.Element; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -89,6 +87,10 @@ public class RawUseOfParameterizedTypeInspection extends BaseInspection { if (ignoreObjectConstruction) { return; } + if (ignoreUncompilable && (expression.getArrayInitializer() != null || expression.getArrayDimensions().length > 0)) { + //array creation can (almost) never be generic + return; + } final PsiJavaCodeReferenceElement classReference = expression.getClassOrAnonymousClassReference(); checkReferenceElement(classReference); } @@ -99,7 +101,7 @@ public class RawUseOfParameterizedTypeInspection extends BaseInspection { return; } final PsiType type = typeElement.getType(); - if (type instanceof PsiArrayType) { + if (!(type instanceof PsiClassType)) { return; } super.visitTypeElement(typeElement); diff --git a/plugins/InspectionGadgets/test/com/siyeh/igtest/migration/raw_use_of_parameterized_type/RawUseOfParameterizedType.java b/plugins/InspectionGadgets/test/com/siyeh/igtest/migration/raw_use_of_parameterized_type/RawUseOfParameterizedType.java index 05ad8adcb62e..8ea536b4a914 100644 --- a/plugins/InspectionGadgets/test/com/siyeh/igtest/migration/raw_use_of_parameterized_type/RawUseOfParameterizedType.java +++ b/plugins/InspectionGadgets/test/com/siyeh/igtest/migration/raw_use_of_parameterized_type/RawUseOfParameterizedType.java @@ -12,9 +12,9 @@ import java.util.concurrent.Callable; } class RawUseOfParameterizedType { void array() { - final ArrayList[] array = new ArrayList[10]; + final ArrayList[] array = + new ArrayList[10]; } - void anonymous() { new Callable() { @Override diff --git a/plugins/InspectionGadgets/test/com/siyeh/igtest/migration/raw_use_of_parameterized_type/expected.xml b/plugins/InspectionGadgets/test/com/siyeh/igtest/migration/raw_use_of_parameterized_type/expected.xml index baf51dbec7fb..8640dafccfb1 100644 --- a/plugins/InspectionGadgets/test/com/siyeh/igtest/migration/raw_use_of_parameterized_type/expected.xml +++ b/plugins/InspectionGadgets/test/com/siyeh/igtest/migration/raw_use_of_parameterized_type/expected.xml @@ -15,6 +15,13 @@ Raw use of parameterized class <code>ArrayList</code> #loc + + RawUseOfParameterizedType.java + 19 + Raw use of parameterized class + Raw use of parameterized class <code>Callable</code> #loc + + RawUseOfParameterizedType.java 32 diff --git a/plugins/InspectionGadgets/testsrc/com/siyeh/ig/migration/RawUseOfParameterizedTypeInspectionTest.java b/plugins/InspectionGadgets/testsrc/com/siyeh/ig/migration/RawUseOfParameterizedTypeInspectionTest.java index b1d68f895894..4e13d1f443ea 100644 --- a/plugins/InspectionGadgets/testsrc/com/siyeh/ig/migration/RawUseOfParameterizedTypeInspectionTest.java +++ b/plugins/InspectionGadgets/testsrc/com/siyeh/ig/migration/RawUseOfParameterizedTypeInspectionTest.java @@ -6,6 +6,7 @@ public class RawUseOfParameterizedTypeInspectionTest extends IGInspectionTestCas public void test() throws Exception { final RawUseOfParameterizedTypeInspection tool = new RawUseOfParameterizedTypeInspection(); + tool.ignoreObjectConstruction = false; tool.ignoreUncompilable = true; tool.ignoreParametersOfOverridingMethods = true; doTest("com/siyeh/igtest/migration/raw_use_of_parameterized_type", tool);