FIR IDE: simplify containing declaration provider

This commit is contained in:
Ilya Kirillov
2020-08-14 14:53:34 +03:00
parent 37ac654444
commit 018dd673b3
42 changed files with 241 additions and 276 deletions
@@ -47,7 +47,7 @@ object DebugSymbolRenderer {
is KtSymbol -> {
val symbolTag = when (value) {
is KtClassLikeSymbol -> renderValue(value.classIdIfNonLocal ?: "<local>/${value.name}")
is KtFunctionSymbol -> renderValue(value.fqNameIfNonLocal ?: "<local>/${value.name}")
is KtFunctionSymbol -> renderValue(value.callableIdIfNonLocal ?: "<local>/${value.name}")
is KtConstructorSymbol -> "<constructor>"
is KtNamedSymbol -> renderValue(value.name)
else -> TODO(value::class.toString())
@@ -22,9 +22,6 @@ abstract class KtTypeAliasSymbol : KtClassLikeSymbol() {
abstract override val classIdIfNonLocal: ClassId
final override val symbolKind: KtSymbolKind get() = KtSymbolKind.TOP_LEVEL
final override val containingNonLocalClassIdIfMember: ClassId? get() = null
abstract override val containingPackageFqNameIfTopLevel: FqName
abstract override fun createPointer(): KtSymbolPointer<KtTypeAliasSymbol>
}
@@ -19,8 +19,6 @@ sealed class KtFunctionLikeSymbol : KtCallableSymbol(), KtTypedSymbol, KtSymbolW
abstract class KtAnonymousFunctionSymbol : KtFunctionLikeSymbol() {
final override val symbolKind: KtSymbolKind get() = KtSymbolKind.LOCAL
final override val containingNonLocalClassIdIfMember: ClassId? get() = null
final override val containingPackageFqNameIfTopLevel: FqName? get() = null
abstract override fun createPointer(): KtSymbolPointer<KtAnonymousFunctionSymbol>
}
@@ -30,7 +28,7 @@ abstract class KtFunctionSymbol : KtFunctionLikeSymbol(),
KtPossibleExtensionSymbol,
KtSymbolWithTypeParameters,
KtSymbolWithModality<KtCommonSymbolModality> {
abstract val fqNameIfNonLocal: FqName?
abstract val callableIdIfNonLocal: FqName?
abstract val isSuspend: Boolean
abstract val isOperator: Boolean
@@ -42,11 +40,11 @@ abstract class KtFunctionSymbol : KtFunctionLikeSymbol(),
abstract class KtConstructorSymbol : KtFunctionLikeSymbol() {
abstract val isPrimary: Boolean
abstract val containingClassIdIfNonLocal: ClassId?
final override val symbolKind: KtSymbolKind get() = KtSymbolKind.MEMBER
abstract override val valueParameters: List<KtConstructorParameterSymbol>
final override val symbolKind: KtSymbolKind get() = KtSymbolKind.MEMBER
final override val containingPackageFqNameIfTopLevel: FqName? get() = null
abstract override fun createPointer(): KtSymbolPointer<KtConstructorSymbol>
}
@@ -17,14 +17,12 @@ abstract class KtVariableLikeSymbol : KtCallableSymbol(), KtTypedSymbol, KtNamed
abstract class KtEnumEntrySymbol : KtVariableLikeSymbol(), KtSymbolWithKind {
final override val symbolKind: KtSymbolKind get() = KtSymbolKind.MEMBER
final override val containingPackageFqNameIfTopLevel: FqName? get() = null
abstract val containingEnumClassIdIfNonLocal: ClassId?
abstract override fun createPointer(): KtSymbolPointer<KtEnumEntrySymbol>
}
abstract class KtParameterSymbol : KtVariableLikeSymbol() {
final override val containingPackageFqNameIfTopLevel: FqName? get() = null
abstract val hasDefaultValue: Boolean
abstract override fun createPointer(): KtSymbolPointer<KtParameterSymbol>
@@ -37,7 +35,8 @@ abstract class KtVariableSymbol : KtVariableLikeSymbol() {
abstract class KtJavaFieldSymbol : KtVariableSymbol(), KtSymbolWithModality<KtCommonSymbolModality>, KtSymbolWithKind {
final override val symbolKind: KtSymbolKind get() = KtSymbolKind.MEMBER
final override val containingPackageFqNameIfTopLevel: FqName? get() = null
abstract val callableIdIfNonLocal: FqName?
abstract override fun createPointer(): KtSymbolPointer<KtJavaFieldSymbol>
}
@@ -48,13 +47,12 @@ abstract class KtPropertySymbol : KtVariableSymbol(),
KtSymbolWithModality<KtCommonSymbolModality>,
KtSymbolWithKind {
abstract val callableIdIfNonLocal: FqName?
abstract override fun createPointer(): KtSymbolPointer<KtPropertySymbol>
}
abstract class KtLocalVariableSymbol : KtVariableSymbol(), KtSymbolWithKind {
final override val containingPackageFqNameIfTopLevel: FqName? get() = null
final override val containingNonLocalClassIdIfMember: ClassId? get() = null
abstract override fun createPointer(): KtSymbolPointer<KtLocalVariableSymbol>
}
@@ -62,7 +60,6 @@ abstract class KtFunctionParameterSymbol : KtParameterSymbol(), KtSymbolWithKind
abstract val isVararg: Boolean
override val symbolKind: KtSymbolKind get() = KtSymbolKind.NON_PROPERTY_PARAMETER
override val containingNonLocalClassIdIfMember: ClassId? get() = null
abstract override fun createPointer(): KtSymbolPointer<KtFunctionParameterSymbol>
}
@@ -9,25 +9,12 @@ import org.jetbrains.kotlin.idea.frontend.api.symbols.KtSymbol
import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.FqName
/**
* [KtSymbol] which can possibly be class member, top level or local declaration
* Contracts:
* [containingNonLocalClassIdIfMember] != null iff [symbolKind] == [KtSymbolKind.MEMBER]
* [containingPackageFqNameIfTopLevel] != null iff [symbolKind] == [KtSymbolKind.TOP_LEVEL]
*/
interface KtSymbolWithKind : KtSymbol {
val symbolKind: KtSymbolKind
val containingNonLocalClassIdIfMember: ClassId?
val containingPackageFqNameIfTopLevel: FqName?
}
enum class KtSymbolKind {
TOP_LEVEL, MEMBER, LOCAL, NON_PROPERTY_PARAMETER
}
val KtSymbol.containingClassIdIfMember: ClassId?
get() = (this as? KtSymbolWithKind)?.containingClassIdIfMember
val KtSymbol.containingPackageFqNameIfTopLevel: FqName?
get() = (this as? KtSymbolWithKind)?.containingPackageFqNameIfTopLevel