IDEA-89831 (inspection "Empty class" vs classes like com.google.inject.TypeLiteral)

This commit is contained in:
Bas Leijdekkers
2012-08-07 16:45:46 +02:00
parent 20cc91110e
commit b49ed13d43
2 changed files with 26 additions and 9 deletions
@@ -150,12 +150,8 @@ public class EmptyClassInspection extends BaseInspection {
if (initializers.length > 0) {
return;
}
if (ignoreClassWithParameterization) {
final PsiReferenceList extendsList = aClass.getExtendsList();
final PsiReferenceList implementsList = aClass.getImplementsList();
if (isSuperParameterization(extendsList) || isSuperParameterization(implementsList)) {
return;
}
if (ignoreClassWithParameterization && isSuperParametrization(aClass)) {
return;
}
if (AnnotationUtil.isAnnotated(aClass, ignorableAnnotations)) {
return;
@@ -166,7 +162,7 @@ public class EmptyClassInspection extends BaseInspection {
registerClassError(aClass, aClass);
}
private boolean isSuperParameterization(PsiReferenceList extendsList) {
private boolean hasTypeArguments(PsiReferenceList extendsList) {
if (extendsList == null) {
return false;
}
@@ -183,5 +179,26 @@ public class EmptyClassInspection extends BaseInspection {
}
return false;
}
private boolean isSuperParametrization(PsiClass aClass) {
if (!(aClass instanceof PsiAnonymousClass)) {
final PsiReferenceList extendsList = aClass.getExtendsList();
final PsiReferenceList implementsList = aClass.getImplementsList();
return hasTypeArguments(extendsList) || hasTypeArguments(implementsList);
}
final PsiAnonymousClass anonymousClass = (PsiAnonymousClass)aClass;
final PsiJavaCodeReferenceElement reference = anonymousClass.getBaseClassReference();
final PsiReferenceParameterList parameterList = reference.getParameterList();
if (parameterList == null) {
return false;
}
final PsiTypeElement[] elements = parameterList.getTypeParameterElements();
for (PsiTypeElement element : elements) {
if (element != null) {
return true;
}
}
return false;
}
}
}
@@ -1,9 +1,9 @@
package com.siyeh.igtest.classlayout.emptyclass;
public class EmptyClass {
{
System.out.println("");
final java.util.ArrayList<String> stringList = new java.util.ArrayList<String>() {};
System.out.println("");
}
}
class MyList extends java.util.ArrayList<String> {}