diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/classlayout/EmptyClassInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/classlayout/EmptyClassInspection.java index 7b543f7fb266..469a46e63351 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/classlayout/EmptyClassInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/classlayout/EmptyClassInspection.java @@ -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; + } } } \ No newline at end of file diff --git a/plugins/InspectionGadgets/test/com/siyeh/igtest/classlayout/emptyclass/EmptyClass.java b/plugins/InspectionGadgets/test/com/siyeh/igtest/classlayout/emptyclass/EmptyClass.java index 8c52556a7922..bd48fce4ff15 100644 --- a/plugins/InspectionGadgets/test/com/siyeh/igtest/classlayout/emptyclass/EmptyClass.java +++ b/plugins/InspectionGadgets/test/com/siyeh/igtest/classlayout/emptyclass/EmptyClass.java @@ -1,9 +1,9 @@ package com.siyeh.igtest.classlayout.emptyclass; public class EmptyClass { - { - System.out.println(""); + final java.util.ArrayList stringList = new java.util.ArrayList() {}; + System.out.println(""); } } class MyList extends java.util.ArrayList {}