mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
hide generified api warning when derived class is used which 'raw'-inherits the changed jdk class
This commit is contained in:
+18
-1
@@ -269,7 +269,8 @@ public class Java15APIUsageInspectionBase extends BaseJavaBatchLocalInspectionTo
|
||||
final PsiReferenceParameterList parameterList = reference.getParameterList();
|
||||
if (parameterList != null && parameterList.getTypeParameterElements().length > 0) {
|
||||
for (String generifiedClass : ourGenerifiedClasses) {
|
||||
if (InheritanceUtil.isInheritor((PsiClass)resolved, generifiedClass)) {
|
||||
if (InheritanceUtil.isInheritor((PsiClass)resolved, generifiedClass) &&
|
||||
!isRawInheritance(generifiedClass, (PsiClass)resolved, new HashSet<PsiClass>())) {
|
||||
String message = InspectionsBundle.message("inspection.1.7.problem.descriptor", getJdkName(languageLevel));
|
||||
myHolder.registerProblem(reference, message);
|
||||
break;
|
||||
@@ -281,6 +282,22 @@ public class Java15APIUsageInspectionBase extends BaseJavaBatchLocalInspectionTo
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isRawInheritance(String generifiedClassQName, PsiClass currentClass, Set<PsiClass> visited) {
|
||||
for (PsiClassType classType : currentClass.getSuperTypes()) {
|
||||
if (classType.isRaw()) {
|
||||
return true;
|
||||
}
|
||||
final PsiClassType.ClassResolveResult resolveResult = classType.resolveGenerics();
|
||||
final PsiClass superClass = resolveResult.getElement();
|
||||
if (visited.add(superClass) && InheritanceUtil.isInheritor(superClass, generifiedClassQName)) {
|
||||
if (isRawInheritance(generifiedClassQName, superClass, visited)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private boolean isIgnored(PsiClass psiClass) {
|
||||
final String qualifiedName = psiClass.getQualifiedName();
|
||||
return qualifiedName != null && ourIgnored16ClassesAPI.contains(qualifiedName);
|
||||
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<problems/>
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
class Test {
|
||||
private AbstractCCM<String> myModel;
|
||||
}
|
||||
|
||||
abstract class AbstractCCM<T> extends javax.swing.AbstractListModel {}
|
||||
@@ -79,6 +79,15 @@ public class JavaAPIUsagesInspectionTest extends InspectionTestCase {
|
||||
});
|
||||
}
|
||||
|
||||
public void testRawInheritFromNewlyGenerified() throws Exception {
|
||||
IdeaTestUtil.withLevel(getModule(), LanguageLevel.JDK_1_6, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
doTest();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Sdk getTestProjectSdk() {
|
||||
return IdeaTestUtil.getMockJdk18();
|
||||
|
||||
Reference in New Issue
Block a user