diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/classlayout/ClassMayBeInterfaceInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/classlayout/ClassMayBeInterfaceInspection.java index ef76238402a6..4196bcb80785 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/classlayout/ClassMayBeInterfaceInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/classlayout/ClassMayBeInterfaceInspection.java @@ -29,6 +29,8 @@ import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; import com.siyeh.ig.InspectionGadgetsFix; +import com.siyeh.ig.memory.InnerClassReferenceVisitor; +import com.siyeh.ig.psiutils.ClassUtils; import org.jdom.Element; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -210,6 +212,13 @@ public class ClassMayBeInterfaceInspection extends BaseInspection { if (!mayBeInterface(aClass)) { return; } + if (ClassUtils.isInnerClass(aClass)) { + final InnerClassReferenceVisitor visitor = new InnerClassReferenceVisitor(aClass); + aClass.accept(visitor); + if (!visitor.canInnerClassBeStatic()) { + return; + } + } registerClassError(aClass); } diff --git a/plugins/InspectionGadgets/test/com/siyeh/igtest/classlayout/ClassMayBeInterfaceInspection.java b/plugins/InspectionGadgets/test/com/siyeh/igtest/classlayout/ClassMayBeInterfaceInspection.java deleted file mode 100644 index ee7e0a7ca5dc..000000000000 --- a/plugins/InspectionGadgets/test/com/siyeh/igtest/classlayout/ClassMayBeInterfaceInspection.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.siyeh.igtest.classlayout; - -public abstract class ClassMayBeInterfaceInspection -{ - public static final int foo = 1; - - public abstract void bar(); -} diff --git a/plugins/InspectionGadgets/testsrc/com/siyeh/ig/classlayout/ClassMayBeInterfaceInspectionTest.java b/plugins/InspectionGadgets/testsrc/com/siyeh/ig/classlayout/ClassMayBeInterfaceInspectionTest.java index 1eca1dfa8e51..4e59a070e5b8 100644 --- a/plugins/InspectionGadgets/testsrc/com/siyeh/ig/classlayout/ClassMayBeInterfaceInspectionTest.java +++ b/plugins/InspectionGadgets/testsrc/com/siyeh/ig/classlayout/ClassMayBeInterfaceInspectionTest.java @@ -46,6 +46,17 @@ public class ClassMayBeInterfaceInspectionTest extends LightInspectionTestCase { " public class A {}\n" + "}"); } + + public void testMethodCantBeDefault() { + doTest("class Issue {\n" + + " public abstract class Inner {\n" + + " public Issue getParent() {\n" + + " return Issue.this;\n" + + " }\n" + + " }\n" + + "}"); + } + @Override protected InspectionProfileEntry getInspection() { final ClassMayBeInterfaceInspection inspection = new ClassMayBeInterfaceInspection();