diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForAnonymousObject.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForAnonymousObject.kt index 3d219aa1f47..eefb31ee547 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForAnonymousObject.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForAnonymousObject.kt @@ -107,6 +107,11 @@ internal class SymbolLightClassForAnonymousObject : SymbolLightClassForClassLike override fun getNameIdentifier(): KtLightIdentifier? = null override fun getModifierList(): PsiModifierList? = null override fun hasModifierProperty(name: String): Boolean = name == PsiModifier.FINAL + + override fun isInterface(): Boolean = false + override fun isAnnotationType(): Boolean = false + override fun isEnum(): Boolean = false + override fun getContainingClass(): PsiClass? = null override fun getTypeParameters(): Array = PsiTypeParameter.EMPTY_ARRAY override fun getTypeParameterList(): PsiTypeParameterList? = null diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForClassLike.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForClassLike.kt index 9c5ae0c0dbf..5a43a9ee243 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForClassLike.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForClassLike.kt @@ -29,7 +29,6 @@ import org.jetbrains.kotlin.light.classes.symbol.* import org.jetbrains.kotlin.light.classes.symbol.annotations.hasDeprecatedAnnotation import org.jetbrains.kotlin.light.classes.symbol.parameters.SymbolLightTypeParameterList import org.jetbrains.kotlin.load.java.structure.LightClassOriginKind -import org.jetbrains.kotlin.psi.KtClass import org.jetbrains.kotlin.psi.KtClassBody import org.jetbrains.kotlin.psi.KtClassOrObject import org.jetbrains.kotlin.psi.KtObjectDeclaration @@ -88,24 +87,6 @@ abstract class SymbolLightClassForClassLike prote classOrObjectDeclaration?.let { it is KtObjectDeclaration } ?: withClassOrObjectSymbol { it.classKind.isObject } } - internal val isInterface: Boolean by lazyPub { - classOrObjectDeclaration?.let { it is KtClass && it.isInterface() } ?: withClassOrObjectSymbol { - it.classKind == KtClassKind.INTERFACE - } - } - - internal val isAnnotation: Boolean by lazyPub { - classOrObjectDeclaration?.let { it is KtClass && it.isAnnotation() } ?: withClassOrObjectSymbol { - it.classKind == KtClassKind.ANNOTATION_CLASS - } - } - - internal val isEnum: Boolean by lazyPub { - classOrObjectDeclaration?.let { it is KtClass && it.isEnum() } ?: withClassOrObjectSymbol { - it.classKind == KtClassKind.ENUM_CLASS - } - } - private val _isDeprecated: Boolean by lazyPub { withClassOrObjectSymbol { it.hasDeprecatedAnnotation() } } @@ -180,9 +161,9 @@ abstract class SymbolLightClassForClassLike prote override fun hasModifierProperty(@NonNls name: String): Boolean = modifierList?.hasModifierProperty(name) ?: false - override fun isInterface(): Boolean = isInterface - override fun isAnnotationType(): Boolean = isAnnotation - override fun isEnum(): Boolean = isEnum + abstract override fun isInterface(): Boolean + abstract override fun isAnnotationType(): Boolean + abstract override fun isEnum(): Boolean override fun isValid(): Boolean = classOrObjectDeclaration?.isValid ?: classOrObjectSymbolPointer.isValid(ktModule) diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForClassOrObject.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForClassOrObject.kt index 15d632150b7..62bdb63eea8 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForClassOrObject.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForClassOrObject.kt @@ -298,9 +298,16 @@ internal open class SymbolLightClassForClassOrObject : SymbolLightClassForNamedC } override fun isInterface(): Boolean = false - override fun isAnnotationType(): Boolean = false + private val _isEnum: Boolean by lazyPub { + classOrObjectDeclaration?.let { it is KtClass && it.isEnum() } ?: withClassOrObjectSymbol { + it.classKind == KtClassKind.ENUM_CLASS + } + } + + override fun isEnum(): Boolean = _isEnum + override fun copy(): SymbolLightClassForClassOrObject = SymbolLightClassForClassOrObject(classOrObjectDeclaration, classOrObjectSymbolPointer, ktModule, manager) } diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForInterface.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForInterface.kt index ccde24f7231..1b486832685 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForInterface.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForInterface.kt @@ -78,4 +78,5 @@ internal open class SymbolLightClassForInterface : SymbolLightClassForInterfaceO } override fun getExtendsList(): PsiReferenceList? = _extendsList + override fun isAnnotationType(): Boolean = false } diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForInterfaceDefaultImpls.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForInterfaceDefaultImpls.kt index af2a47f9f31..bc0a9caa54a 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForInterfaceDefaultImpls.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForInterfaceDefaultImpls.kt @@ -45,7 +45,6 @@ internal class SymbolLightClassForInterfaceDefaultImpls(private val containingCl override fun isInterface(): Boolean = false override fun isDeprecated(): Boolean = false override fun isAnnotationType(): Boolean = false - override fun isEnum(): Boolean = false override fun hasTypeParameters(): Boolean = false override fun isInheritor(baseClass: PsiClass, checkDeep: Boolean): Boolean = baseClass.qualifiedName == CommonClassNames.JAVA_LANG_OBJECT