diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/classlayout/EmptyClassInspectionBase.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/classlayout/EmptyClassInspectionBase.java index 490f08156919..993e411cfd38 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/classlayout/EmptyClassInspectionBase.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/classlayout/EmptyClassInspectionBase.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2013 JetBrains s.r.o. + * Copyright 2000-2015 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -29,11 +29,11 @@ import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; public class EmptyClassInspectionBase extends BaseInspection { - @SuppressWarnings({"PublicField"}) + @SuppressWarnings("PublicField") public final ExternalizableStringSet ignorableAnnotations = new ExternalizableStringSet(); - @SuppressWarnings({"PublicField"}) + @SuppressWarnings("PublicField") public boolean ignoreClassWithParameterization = false; - @SuppressWarnings({"PublicField"}) + @SuppressWarnings("PublicField") public boolean ignoreThrowables = true; @Override @@ -76,6 +76,7 @@ public class EmptyClassInspectionBase extends BaseInspection { @Override public void visitFile(PsiFile file) { + super.visitFile(file); if (!(file instanceof PsiJavaFile)) { return; } @@ -92,13 +93,20 @@ public class EmptyClassInspectionBase extends BaseInspection { @Override public void visitClass(@NotNull PsiClass aClass) { - //don't call super, to prevent drilldown + super.visitClass(aClass); if (FileTypeUtils.isInServerPageFile(aClass.getContainingFile())) { return; } if (aClass.isInterface() || aClass.isEnum() || aClass.isAnnotationType()) { return; } + if (!aClass.hasModifierProperty(PsiModifier.ABSTRACT)) { + for (PsiClass superClass : aClass.getSupers()) { + if (superClass.isInterface() || superClass.hasModifierProperty(PsiModifier.ABSTRACT)) { + return; + } + } + } if (aClass instanceof PsiTypeParameter) { return; } diff --git a/plugins/InspectionGadgets/test/com/siyeh/igtest/classlayout/empty_class/EmptyClass.java b/plugins/InspectionGadgets/test/com/siyeh/igtest/classlayout/empty_class/EmptyClass.java index 330143fd2981..1fc52b7034c4 100644 --- a/plugins/InspectionGadgets/test/com/siyeh/igtest/classlayout/empty_class/EmptyClass.java +++ b/plugins/InspectionGadgets/test/com/siyeh/igtest/classlayout/empty_class/EmptyClass.java @@ -1,5 +1,7 @@ package com.siyeh.igtest.classlayout.emptyclass; +import java.io.Serializable; + public class EmptyClass { { final java.util.ArrayList stringList = new java.util.ArrayList() {}; @@ -9,3 +11,12 @@ public class EmptyClass { class MyList extends java.util.ArrayList {} class MyException extends java.lang.Exception {} abstract class ReportMe implements java.util.List {} +abstract class Empty1 extends Serializable {} + +interface Interface { + default void method() { + new Interface() { }; + } +} +class EmptyClassTest implements Interface { +} \ No newline at end of file