Interfaces are always abstract
This commit is contained in:
+10
-2
@@ -281,7 +281,6 @@ public class KotlinLightClassForExplicitDeclaration extends AbstractLightClass i
|
|||||||
Pair.create(PUBLIC_KEYWORD, PsiModifier.PUBLIC),
|
Pair.create(PUBLIC_KEYWORD, PsiModifier.PUBLIC),
|
||||||
Pair.create(INTERNAL_KEYWORD, PsiModifier.PUBLIC),
|
Pair.create(INTERNAL_KEYWORD, PsiModifier.PUBLIC),
|
||||||
Pair.create(PROTECTED_KEYWORD, PsiModifier.PROTECTED),
|
Pair.create(PROTECTED_KEYWORD, PsiModifier.PROTECTED),
|
||||||
Pair.create(ABSTRACT_KEYWORD, PsiModifier.ABSTRACT),
|
|
||||||
Pair.create(FINAL_KEYWORD, PsiModifier.FINAL));
|
Pair.create(FINAL_KEYWORD, PsiModifier.FINAL));
|
||||||
|
|
||||||
for (Pair<JetKeywordToken, String> tokenAndModifier : jetTokenToPsiModifier) {
|
for (Pair<JetKeywordToken, String> tokenAndModifier : jetTokenToPsiModifier) {
|
||||||
@@ -300,8 +299,12 @@ public class KotlinLightClassForExplicitDeclaration extends AbstractLightClass i
|
|||||||
psiModifiers.add(PsiModifier.PUBLIC); // For internal (default) visibility
|
psiModifiers.add(PsiModifier.PUBLIC); // For internal (default) visibility
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// FINAL
|
// 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);
|
psiModifiers.add(PsiModifier.FINAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -313,6 +316,11 @@ public class KotlinLightClassForExplicitDeclaration extends AbstractLightClass i
|
|||||||
return psiModifiers.toArray(new String[psiModifiers.size()]);
|
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
|
@Override
|
||||||
public boolean hasModifierProperty(@NonNls @NotNull String name) {
|
public boolean hasModifierProperty(@NonNls @NotNull String name) {
|
||||||
return getModifierList().hasModifierProperty(name);
|
return getModifierList().hasModifierProperty(name);
|
||||||
|
|||||||
@@ -206,7 +206,7 @@ public abstract class KotlinLightClassTest extends KotlinAsJavaTestBase {
|
|||||||
ENUM {
|
ENUM {
|
||||||
@Override
|
@Override
|
||||||
public boolean present(@NotNull PsiClass psiClass) {
|
public boolean present(@NotNull PsiClass psiClass) {
|
||||||
return psiClass.isInterface();
|
return psiClass.isEnum();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
ANNOTATION {
|
ANNOTATION {
|
||||||
|
|||||||
Reference in New Issue
Block a user