Light Classes: Do not add "final" modifier to enum light classes

This commit is contained in:
Alexey Sedunov
2014-11-14 16:33:17 +03:00
parent 7170209760
commit a6479bfc90
3 changed files with 4 additions and 3 deletions
@@ -142,7 +142,8 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen {
}
if (!jetClass.hasModifier(JetTokens.OPEN_KEYWORD) && !isAbstract) {
isFinal = true;
// Light-class mode: Do not make enum classes final since PsiClass corresponding to enum is expected to be inheritable from
isFinal = !(jetClass.isEnum() && state.getClassBuilderMode() == ClassBuilderMode.LIGHT_CLASSES);
}
isStatic = !jetClass.isInner();
}
@@ -431,7 +431,7 @@ public class KotlinLightClassForExplicitDeclaration extends KotlinWrappingLightC
if (isAbstract(classOrObject)) {
psiModifiers.add(PsiModifier.ABSTRACT);
}
else if (!classOrObject.hasModifier(OPEN_KEYWORD)) {
else if (!(classOrObject.hasModifier(OPEN_KEYWORD) || (classOrObject instanceof JetClass && ((JetClass) classOrObject).isEnum()))) {
psiModifiers.add(PsiModifier.FINAL);
}
@@ -76,7 +76,7 @@ public abstract class KotlinLightClassStructureTest extends KotlinAsJavaTestBase
}
public void testEnum() {
checkModifiers("test.Enum", PUBLIC, FINAL, ENUM);
checkModifiers("test.Enum", PUBLIC, ENUM);
}
public void testTrait() {