Interfaces are always abstract

This commit is contained in:
Andrey Breslav
2013-01-15 18:57:42 +04:00
parent 4549ad0a5e
commit dad59b20ba
2 changed files with 11 additions and 3 deletions
@@ -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<JetKeywordToken, String> 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);