diff --git a/compiler/jet.as.java.psi/src/org/jetbrains/jet/asJava/KotlinLightClassForExplicitDeclaration.java b/compiler/jet.as.java.psi/src/org/jetbrains/jet/asJava/KotlinLightClassForExplicitDeclaration.java index 37922456ca2..d139b602514 100644 --- a/compiler/jet.as.java.psi/src/org/jetbrains/jet/asJava/KotlinLightClassForExplicitDeclaration.java +++ b/compiler/jet.as.java.psi/src/org/jetbrains/jet/asJava/KotlinLightClassForExplicitDeclaration.java @@ -281,7 +281,6 @@ public class KotlinLightClassForExplicitDeclaration extends AbstractLightClass i Pair.create(PUBLIC_KEYWORD, PsiModifier.PUBLIC), Pair.create(INTERNAL_KEYWORD, PsiModifier.PUBLIC), Pair.create(PROTECTED_KEYWORD, PsiModifier.PROTECTED), - Pair.create(ABSTRACT_KEYWORD, PsiModifier.ABSTRACT), Pair.create(FINAL_KEYWORD, PsiModifier.FINAL)); for (Pair tokenAndModifier : jetTokenToPsiModifier) { @@ -300,8 +299,12 @@ public class KotlinLightClassForExplicitDeclaration extends AbstractLightClass i psiModifiers.add(PsiModifier.PUBLIC); // For internal (default) visibility } + // FINAL - if (!classOrObject.hasModifier(OPEN_KEYWORD) && !classOrObject.hasModifier(ABSTRACT_KEYWORD)) { + if (isAbstract(classOrObject)) { + psiModifiers.add(PsiModifier.ABSTRACT); + } + else if (!classOrObject.hasModifier(OPEN_KEYWORD)) { psiModifiers.add(PsiModifier.FINAL); } @@ -313,6 +316,11 @@ public class KotlinLightClassForExplicitDeclaration extends AbstractLightClass i return psiModifiers.toArray(new String[psiModifiers.size()]); } + private boolean isAbstract(@NotNull JetClassOrObject object) { + return object.hasModifier(ABSTRACT_KEYWORD) || + classOrObject instanceof JetClass && ((JetClass) classOrObject).isTrait(); + } + @Override public boolean hasModifierProperty(@NonNls @NotNull String name) { return getModifierList().hasModifierProperty(name); diff --git a/compiler/tests/org/jetbrains/jet/asJava/KotlinLightClassTest.java b/compiler/tests/org/jetbrains/jet/asJava/KotlinLightClassTest.java index 9e495aefddb..b0b5d79f19f 100644 --- a/compiler/tests/org/jetbrains/jet/asJava/KotlinLightClassTest.java +++ b/compiler/tests/org/jetbrains/jet/asJava/KotlinLightClassTest.java @@ -206,7 +206,7 @@ public abstract class KotlinLightClassTest extends KotlinAsJavaTestBase { ENUM { @Override public boolean present(@NotNull PsiClass psiClass) { - return psiClass.isInterface(); + return psiClass.isEnum(); } }, ANNOTATION {