[analysis api] remove KtClassKind.ENUM_ENTRY as enum entry is not a classifier
This commit is contained in:
+4
-14
@@ -9,6 +9,8 @@ import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext
|
|||||||
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.*
|
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.*
|
||||||
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.pointers.KtFe10DescNamedClassOrObjectSymbolSymbol
|
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.pointers.KtFe10DescNamedClassOrObjectSymbolSymbol
|
||||||
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.pointers.KtFe10NeverRestoringSymbolPointer
|
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.pointers.KtFe10NeverRestoringSymbolPointer
|
||||||
|
import org.jetbrains.kotlin.analysis.api.impl.base.symbols.toKtClassKind
|
||||||
|
import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion
|
||||||
import org.jetbrains.kotlin.analysis.api.symbols.KtClassKind
|
import org.jetbrains.kotlin.analysis.api.symbols.KtClassKind
|
||||||
import org.jetbrains.kotlin.analysis.api.symbols.KtNamedClassOrObjectSymbol
|
import org.jetbrains.kotlin.analysis.api.symbols.KtNamedClassOrObjectSymbol
|
||||||
import org.jetbrains.kotlin.analysis.api.symbols.KtTypeParameterSymbol
|
import org.jetbrains.kotlin.analysis.api.symbols.KtTypeParameterSymbol
|
||||||
@@ -16,9 +18,7 @@ import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolKind
|
|||||||
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtPsiBasedSymbolPointer
|
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtPsiBasedSymbolPointer
|
||||||
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
|
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
|
||||||
import org.jetbrains.kotlin.analysis.api.types.KtType
|
import org.jetbrains.kotlin.analysis.api.types.KtType
|
||||||
import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion
|
|
||||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.ClassKind
|
|
||||||
import org.jetbrains.kotlin.name.ClassId
|
import org.jetbrains.kotlin.name.ClassId
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
||||||
@@ -55,20 +55,10 @@ internal class KtFe10DescNamedClassOrObjectSymbol(
|
|||||||
|
|
||||||
override val classKind: KtClassKind
|
override val classKind: KtClassKind
|
||||||
get() = withValidityAssertion {
|
get() = withValidityAssertion {
|
||||||
if (descriptor.isCompanionObject) {
|
if (DescriptorUtils.isAnonymousObject(descriptor)) {
|
||||||
return KtClassKind.COMPANION_OBJECT
|
|
||||||
} else if (DescriptorUtils.isAnonymousObject(descriptor)) {
|
|
||||||
error("Should be an anonymous object")
|
error("Should be an anonymous object")
|
||||||
}
|
}
|
||||||
|
descriptor.kind.toKtClassKind(isCompanionObject = descriptor.isCompanionObject)
|
||||||
return when (descriptor.kind) {
|
|
||||||
ClassKind.CLASS -> KtClassKind.CLASS
|
|
||||||
ClassKind.INTERFACE -> KtClassKind.INTERFACE
|
|
||||||
ClassKind.ENUM_CLASS -> KtClassKind.ENUM_CLASS
|
|
||||||
ClassKind.ENUM_ENTRY -> KtClassKind.ENUM_ENTRY
|
|
||||||
ClassKind.ANNOTATION_CLASS -> KtClassKind.ANNOTATION_CLASS
|
|
||||||
ClassKind.OBJECT -> KtClassKind.OBJECT
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override val superTypes: List<KtType>
|
override val superTypes: List<KtType>
|
||||||
|
|||||||
+3
-5
@@ -18,6 +18,7 @@ import org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased.base.ktMod
|
|||||||
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased.base.ktSymbolKind
|
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased.base.ktSymbolKind
|
||||||
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased.base.ktVisibility
|
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased.base.ktVisibility
|
||||||
import org.jetbrains.kotlin.analysis.api.descriptors.utils.cached
|
import org.jetbrains.kotlin.analysis.api.descriptors.utils.cached
|
||||||
|
import org.jetbrains.kotlin.analysis.api.impl.base.symbols.invalidClassKindError
|
||||||
import org.jetbrains.kotlin.analysis.api.symbols.KtClassKind
|
import org.jetbrains.kotlin.analysis.api.symbols.KtClassKind
|
||||||
import org.jetbrains.kotlin.analysis.api.symbols.KtNamedClassOrObjectSymbol
|
import org.jetbrains.kotlin.analysis.api.symbols.KtNamedClassOrObjectSymbol
|
||||||
import org.jetbrains.kotlin.analysis.api.symbols.KtTypeParameterSymbol
|
import org.jetbrains.kotlin.analysis.api.symbols.KtTypeParameterSymbol
|
||||||
@@ -26,10 +27,7 @@ import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtPsiBasedSymbolPointe
|
|||||||
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
|
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
|
||||||
import org.jetbrains.kotlin.analysis.api.types.KtType
|
import org.jetbrains.kotlin.analysis.api.types.KtType
|
||||||
import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion
|
import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion
|
||||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
import org.jetbrains.kotlin.descriptors.*
|
||||||
import org.jetbrains.kotlin.descriptors.Modality
|
|
||||||
import org.jetbrains.kotlin.descriptors.Visibilities
|
|
||||||
import org.jetbrains.kotlin.descriptors.Visibility
|
|
||||||
import org.jetbrains.kotlin.lexer.KtTokens
|
import org.jetbrains.kotlin.lexer.KtTokens
|
||||||
import org.jetbrains.kotlin.name.ClassId
|
import org.jetbrains.kotlin.name.ClassId
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
@@ -72,7 +70,7 @@ internal class KtFe10PsiNamedClassOrObjectSymbol(
|
|||||||
override val classKind: KtClassKind
|
override val classKind: KtClassKind
|
||||||
get() = withValidityAssertion {
|
get() = withValidityAssertion {
|
||||||
when (psi) {
|
when (psi) {
|
||||||
is KtEnumEntry -> KtClassKind.ENUM_ENTRY
|
is KtEnumEntry -> invalidClassKindError(ClassKind.ENUM_ENTRY)
|
||||||
is KtObjectDeclaration -> when {
|
is KtObjectDeclaration -> when {
|
||||||
psi.isCompanion() -> KtClassKind.COMPANION_OBJECT
|
psi.isCompanion() -> KtClassKind.COMPANION_OBJECT
|
||||||
psi.isObjectLiteral() -> KtClassKind.ANONYMOUS_OBJECT
|
psi.isObjectLiteral() -> KtClassKind.ANONYMOUS_OBJECT
|
||||||
|
|||||||
+2
-8
@@ -11,6 +11,7 @@ import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForD
|
|||||||
import org.jetbrains.kotlin.analysis.api.fir.findPsi
|
import org.jetbrains.kotlin.analysis.api.fir.findPsi
|
||||||
import org.jetbrains.kotlin.analysis.api.fir.symbols.pointers.KtFirClassOrObjectInLibrarySymbolPointer
|
import org.jetbrains.kotlin.analysis.api.fir.symbols.pointers.KtFirClassOrObjectInLibrarySymbolPointer
|
||||||
import org.jetbrains.kotlin.analysis.api.fir.utils.cached
|
import org.jetbrains.kotlin.analysis.api.fir.utils.cached
|
||||||
|
import org.jetbrains.kotlin.analysis.api.impl.base.symbols.toKtClassKind
|
||||||
import org.jetbrains.kotlin.analysis.api.symbols.KtClassKind
|
import org.jetbrains.kotlin.analysis.api.symbols.KtClassKind
|
||||||
import org.jetbrains.kotlin.analysis.api.symbols.KtNamedClassOrObjectSymbol
|
import org.jetbrains.kotlin.analysis.api.symbols.KtNamedClassOrObjectSymbol
|
||||||
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolKind
|
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolKind
|
||||||
@@ -94,14 +95,7 @@ internal class KtFirNamedClassOrObjectSymbol(
|
|||||||
|
|
||||||
override val classKind: KtClassKind
|
override val classKind: KtClassKind
|
||||||
get() = withValidityAssertion {
|
get() = withValidityAssertion {
|
||||||
when (firSymbol.classKind) {
|
firSymbol.classKind.toKtClassKind(isCompanionObject = firSymbol.isCompanion)
|
||||||
ClassKind.INTERFACE -> KtClassKind.INTERFACE
|
|
||||||
ClassKind.ENUM_CLASS -> KtClassKind.ENUM_CLASS
|
|
||||||
ClassKind.ENUM_ENTRY -> KtClassKind.ENUM_ENTRY
|
|
||||||
ClassKind.ANNOTATION_CLASS -> KtClassKind.ANNOTATION_CLASS
|
|
||||||
ClassKind.CLASS -> KtClassKind.CLASS
|
|
||||||
ClassKind.OBJECT -> if (firSymbol.isCompanion) KtClassKind.COMPANION_OBJECT else KtClassKind.OBJECT
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override val symbolKind: KtSymbolKind
|
override val symbolKind: KtSymbolKind
|
||||||
|
|||||||
+27
@@ -0,0 +1,27 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||||
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jetbrains.kotlin.analysis.api.impl.base.symbols
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.analysis.api.symbols.KtClassKind
|
||||||
|
import org.jetbrains.kotlin.descriptors.ClassKind
|
||||||
|
|
||||||
|
fun ClassKind.toKtClassKind(isCompanionObject: Boolean): KtClassKind = when (this) {
|
||||||
|
ClassKind.INTERFACE -> KtClassKind.INTERFACE
|
||||||
|
ClassKind.ENUM_CLASS -> KtClassKind.ENUM_CLASS
|
||||||
|
ClassKind.ANNOTATION_CLASS -> KtClassKind.ANNOTATION_CLASS
|
||||||
|
ClassKind.CLASS -> KtClassKind.CLASS
|
||||||
|
ClassKind.OBJECT -> if (isCompanionObject) KtClassKind.COMPANION_OBJECT else KtClassKind.OBJECT
|
||||||
|
ClassKind.ENUM_ENTRY -> invalidClassKindError(this)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun invalidClassKindError(classKind: ClassKind): Nothing {
|
||||||
|
when (classKind) {
|
||||||
|
ClassKind.ENUM_ENTRY -> {
|
||||||
|
error("KtClassKind is not applicable for enum entry, as enum entry is a callable, not a classifier")
|
||||||
|
}
|
||||||
|
else -> error("Valid class kind")
|
||||||
|
}
|
||||||
|
}
|
||||||
-1
@@ -91,7 +91,6 @@ public abstract class KtNamedClassOrObjectSymbol : KtClassOrObjectSymbol(),
|
|||||||
public enum class KtClassKind {
|
public enum class KtClassKind {
|
||||||
CLASS,
|
CLASS,
|
||||||
ENUM_CLASS,
|
ENUM_CLASS,
|
||||||
ENUM_ENTRY,
|
|
||||||
ANNOTATION_CLASS,
|
ANNOTATION_CLASS,
|
||||||
OBJECT,
|
OBJECT,
|
||||||
COMPANION_OBJECT,
|
COMPANION_OBJECT,
|
||||||
|
|||||||
Reference in New Issue
Block a user