diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/migration/RawUseOfParameterizedTypeInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/migration/RawUseOfParameterizedTypeInspection.java index d3847c8a8d38..56f6691b927a 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/migration/RawUseOfParameterizedTypeInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/migration/RawUseOfParameterizedTypeInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2012 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2013 Dave Griffith, Bas Leijdekkers * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,6 +23,7 @@ import com.intellij.psi.util.PsiUtil; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; +import com.siyeh.ig.psiutils.MethodUtils; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -115,6 +116,21 @@ public class RawUseOfParameterizedTypeInspection extends BaseInspection { return; } } + if (parent instanceof PsiParameter) { + final PsiParameter parameter = (PsiParameter)parent; + final PsiElement declarationScope = parameter.getDeclarationScope(); + if (declarationScope instanceof PsiMethod) { + final PsiMethod method = (PsiMethod)declarationScope; + if (MethodUtils.hasSuper(method)) { + return; + } + } + } else if (parent instanceof PsiMethod) { + final PsiMethod method = (PsiMethod)parent; + if (MethodUtils.hasSuper(method)) { + return; + } + } final PsiJavaCodeReferenceElement referenceElement = typeElement.getInnermostComponentReferenceElement(); checkReferenceElement(referenceElement); } @@ -164,11 +180,7 @@ public class RawUseOfParameterizedTypeInspection extends BaseInspection { } private boolean hasNeededLanguageLevel(PsiElement element) { - if (element.getLanguage() != JavaLanguage.INSTANCE) { - return false; - } - return PsiUtil.isLanguageLevel5OrHigher(element); + return element.getLanguage() == JavaLanguage.INSTANCE && PsiUtil.isLanguageLevel5OrHigher(element); } } } - 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 efcd4816fdd2..05ad8adcb62e 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 @@ -28,3 +28,13 @@ class RawUseOfParameterizedType { Map.Entry entry; } } +interface X { + List foo(Map map); +} +class Y implements X { + + @Override + public List foo(Map map) { + return null; + } +} 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 da0c362c10d3..0b2837466f0c 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 @@ -14,4 +14,18 @@ Raw use of parameterized class Raw use of parameterized class <code>ArrayList</code> #loc + + + RawUseOfParameterizedType.java + 32 + Raw use of parameterized class + Raw use of parameterized class <code>List</code> #loc + + + + RawUseOfParameterizedType.java + 32 + Raw use of parameterized class + Raw use of parameterized class <code>Map</code> #loc + \ No newline at end of file