don't warn about unimplemented Iterator.remove for type parameters

This commit is contained in:
Anna Kozlova
2015-10-28 16:05:02 +01:00
parent 97a72e496f
commit f894921d1c
3 changed files with 10 additions and 31 deletions
@@ -206,7 +206,7 @@ public class Java15APIUsageInspectionBase extends BaseJavaBatchLocalInspectionTo
@Override public void visitClass(PsiClass aClass) {
// Don't go into classes (anonymous, locals).
if (!aClass.hasModifierProperty(PsiModifier.ABSTRACT)) {
if (!aClass.hasModifierProperty(PsiModifier.ABSTRACT) && !(aClass instanceof PsiTypeParameter)) {
final Module module = ModuleUtilCore.findModuleForPsiElement(aClass);
final LanguageLevel effectiveLanguageLevel = module != null ? getEffectiveLanguageLevel(module) : null;
if (effectiveLanguageLevel != null && !effectiveLanguageLevel.isAtLeast(LanguageLevel.JDK_1_8)) {
@@ -25,5 +25,9 @@ public class Test implements Iterator<String> {
@Override
public void remove() {}
}
public <T extends Iterator<String>> T typedIterator() {
return (T) iterator();
}
}
@@ -40,12 +40,7 @@ public class JavaAPIUsagesInspectionTest extends InspectionTestCase {
}
public void testConstructor() throws Exception {
IdeaTestUtil.withLevel(getModule(), LanguageLevel.JDK_1_4, new Runnable() {
@Override
public void run() {
doTest();
}
});
IdeaTestUtil.withLevel(getModule(), LanguageLevel.JDK_1_4, this::doTest);
}
public void testIgnored() throws Exception {
@@ -53,39 +48,19 @@ public class JavaAPIUsagesInspectionTest extends InspectionTestCase {
}
public void testAnnotation() throws Exception {
IdeaTestUtil.withLevel(getModule(), LanguageLevel.JDK_1_6, new Runnable() {
@Override
public void run() {
doTest();
}
});
IdeaTestUtil.withLevel(getModule(), LanguageLevel.JDK_1_6, this::doTest);
}
public void testDefaultMethods() throws Exception {
IdeaTestUtil.withLevel(getModule(), LanguageLevel.JDK_1_6, new Runnable() {
@Override
public void run() {
doTest();
}
});
IdeaTestUtil.withLevel(getModule(), LanguageLevel.JDK_1_6, this::doTest);
}
public void testOverrideAnnotation() throws Exception {
IdeaTestUtil.withLevel(getModule(), LanguageLevel.JDK_1_6, new Runnable() {
@Override
public void run() {
doTest();
}
});
IdeaTestUtil.withLevel(getModule(), LanguageLevel.JDK_1_6, this::doTest);
}
public void testRawInheritFromNewlyGenerified() throws Exception {
IdeaTestUtil.withLevel(getModule(), LanguageLevel.JDK_1_6, new Runnable() {
@Override
public void run() {
doTest();
}
});
IdeaTestUtil.withLevel(getModule(), LanguageLevel.JDK_1_6, JavaAPIUsagesInspectionTest.this::doTest);
}
@Override