enum constants should be checked to implement enum interfaces

This commit is contained in:
Anna.Kozlova
2016-07-22 15:05:47 +02:00
parent 6644d0c0d7
commit f9c6e0fda2
3 changed files with 13 additions and 1 deletions
@@ -45,7 +45,7 @@ public class ClassUtil {
@Nullable
public static PsiMethod getAnyMethodToImplement(@NotNull PsiClass aClass) {
final PsiClass superClass = aClass instanceof PsiAnonymousClass ? PsiUtil.resolveClassInClassTypeOnly(((PsiAnonymousClass)aClass).getBaseClassType()) : aClass.getSuperClass();
if (superClass != null && !superClass.hasModifierProperty(PsiModifier.ABSTRACT) && aClass.getImplementsListTypes().length == 0) {
if (superClass != null && !superClass.hasModifierProperty(PsiModifier.ABSTRACT) && !superClass.isEnum() && aClass.getImplementsListTypes().length == 0) {
return null;
}
Set<PsiMethod> alreadyImplemented = new THashSet<PsiMethod>();
@@ -0,0 +1,8 @@
interface A {
void m();
}
enum E implements A {
<error descr="Class 'Anonymous class derived from E' must implement abstract method 'm()' in 'A'">F</error>() {};
}
@@ -78,4 +78,8 @@ public class LightAdvHighlightingJdk6Test extends LightDaemonAnalyzerTestCase {
public void testThisInArgListOfAnonymous() {
doTest(false, false);
}
public void testEnumConstantWithoutInterfaceImplementation() throws Exception {
doTest(false, false);
}
}