[Analysis API] Add a weak reference cache to KaSymbolPointer Before that change, the original symbol was restored from scratch on every pointer access. Now, if the cached symbol is returned if it's not garbage collected yet and is still valid. ^KT-67148 fixed
diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/KaFe10FileSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/KaFe10FileSymbol.kt index 3758723..0dc16cc 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/KaFe10FileSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/KaFe10FileSymbol.kt
@@ -8,10 +8,10 @@ import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext import org.jetbrains.kotlin.analysis.api.descriptors.symbols.base.KaFe10AnnotatedSymbol import org.jetbrains.kotlin.analysis.api.descriptors.symbols.pointers.KaFe10NeverRestoringSymbolPointer +import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBasePsiSymbolPointer import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.api.symbols.KaFileSymbol import org.jetbrains.kotlin.analysis.api.symbols.KaSymbolOrigin -import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaPsiBasedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer import org.jetbrains.kotlin.descriptors.annotations.Annotations import org.jetbrains.kotlin.psi.KtFile @@ -30,7 +30,7 @@ get() = withValidityAssertion { if (file.isCompiled) KaSymbolOrigin.LIBRARY else KaSymbolOrigin.SOURCE } override fun createPointer(): KaSymbolPointer<KaFileSymbol> = withValidityAssertion { - KaPsiBasedSymbolPointer.createForSymbolFromSource<KaFileSymbol>(this) ?: KaFe10NeverRestoringSymbolPointer() + KaBasePsiSymbolPointer.createForSymbolFromSource<KaFileSymbol>(this) ?: KaFe10NeverRestoringSymbolPointer() } override fun equals(other: Any?): Boolean {
diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/KaFe10PackageSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/KaFe10PackageSymbol.kt index 30f38f7..c770d4d 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/KaFe10PackageSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/KaFe10PackageSymbol.kt
@@ -31,7 +31,7 @@ } override fun createPointer(): KaSymbolPointer<KaPackageSymbol> = withValidityAssertion { - KaFe10PackageSymbolPointer(fqName) + KaFe10PackageSymbolPointer(fqName, this) } override val origin: KaSymbolOrigin
diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescAnonymousFunctionSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescAnonymousFunctionSymbol.kt index 9ba88f0..a7f4542 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescAnonymousFunctionSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescAnonymousFunctionSymbol.kt
@@ -11,11 +11,11 @@ import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.* import org.jetbrains.kotlin.analysis.api.descriptors.symbols.isEqualTo import org.jetbrains.kotlin.analysis.api.descriptors.symbols.pointers.KaFe10NeverRestoringSymbolPointer +import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBasePsiSymbolPointer import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.api.symbols.KaAnonymousFunctionSymbol import org.jetbrains.kotlin.analysis.api.symbols.KaReceiverParameterSymbol import org.jetbrains.kotlin.analysis.api.symbols.KaValueParameterSymbol -import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaPsiBasedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer import org.jetbrains.kotlin.analysis.api.types.KaType import org.jetbrains.kotlin.descriptors.FunctionDescriptor @@ -46,7 +46,7 @@ get() = withValidityAssertion { descriptor.createContextReceivers(analysisContext) } override fun createPointer(): KaSymbolPointer<KaAnonymousFunctionSymbol> = withValidityAssertion { - KaPsiBasedSymbolPointer.createForSymbolFromSource<KaAnonymousFunctionSymbol>(this) ?: KaFe10NeverRestoringSymbolPointer() + KaBasePsiSymbolPointer.createForSymbolFromSource<KaAnonymousFunctionSymbol>(this) ?: KaFe10NeverRestoringSymbolPointer() } override fun equals(other: Any?): Boolean = isEqualTo(other)
diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescAnonymousObjectSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescAnonymousObjectSymbol.kt index babbf96..7c811a7 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescAnonymousObjectSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescAnonymousObjectSymbol.kt
@@ -11,9 +11,9 @@ import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.toKtType import org.jetbrains.kotlin.analysis.api.descriptors.symbols.isEqualTo import org.jetbrains.kotlin.analysis.api.descriptors.symbols.pointers.KaFe10NeverRestoringSymbolPointer +import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBasePsiSymbolPointer import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.api.symbols.KaAnonymousObjectSymbol -import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaPsiBasedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer import org.jetbrains.kotlin.analysis.api.types.KaType import org.jetbrains.kotlin.descriptors.ClassDescriptor @@ -26,7 +26,7 @@ get() = withValidityAssertion { descriptor.typeConstructor.supertypes.map { it.toKtType(analysisContext) } } override fun createPointer(): KaSymbolPointer<KaAnonymousObjectSymbol> = withValidityAssertion { - KaPsiBasedSymbolPointer.createForSymbolFromSource<KaAnonymousObjectSymbol>(this) ?: KaFe10NeverRestoringSymbolPointer() + KaBasePsiSymbolPointer.createForSymbolFromSource<KaAnonymousObjectSymbol>(this) ?: KaFe10NeverRestoringSymbolPointer() } override fun equals(other: Any?): Boolean = isEqualTo(other)
diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescConstructorSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescConstructorSymbol.kt index 8eaf495f..e04162e 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescConstructorSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescConstructorSymbol.kt
@@ -11,11 +11,11 @@ import org.jetbrains.kotlin.analysis.api.descriptors.symbols.isEqualTo import org.jetbrains.kotlin.analysis.api.descriptors.symbols.pointers.KaFe10DescFunctionSymbolPointer import org.jetbrains.kotlin.analysis.api.descriptors.symbols.pointers.KaFe10NeverRestoringSymbolPointer +import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBasePsiSymbolPointer import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.api.symbols.KaConstructorSymbol import org.jetbrains.kotlin.analysis.api.symbols.KaTypeParameterSymbol import org.jetbrains.kotlin.analysis.api.symbols.KaValueParameterSymbol -import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaPsiBasedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer import org.jetbrains.kotlin.analysis.api.types.KaType import org.jetbrains.kotlin.descriptors.ConstructorDescriptor @@ -59,14 +59,14 @@ } override fun createPointer(): KaSymbolPointer<KaConstructorSymbol> = withValidityAssertion { - KaPsiBasedSymbolPointer.createForSymbolFromSource<KaConstructorSymbol>(this)?.let { + KaBasePsiSymbolPointer.createForSymbolFromSource<KaConstructorSymbol>(this)?.let { return it } val callableId = descriptor.callableIdIfNotLocal if (callableId != null) { val signature = descriptor.getSymbolPointerSignature() - return KaFe10DescFunctionSymbolPointer(callableId, signature) + return KaFe10DescFunctionSymbolPointer(callableId, signature, this) } return KaFe10NeverRestoringSymbolPointer()
diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescDefaultBackingFieldSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescDefaultBackingFieldSymbol.kt index a3d4c9b..37bbfb2 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescDefaultBackingFieldSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescDefaultBackingFieldSymbol.kt
@@ -11,18 +11,15 @@ import org.jetbrains.kotlin.analysis.api.descriptors.symbols.base.KaFe10Symbol import org.jetbrains.kotlin.analysis.api.descriptors.symbols.pointers.KaFe10NeverRestoringSymbolPointer import org.jetbrains.kotlin.analysis.api.descriptors.symbols.pointers.KaFe10PsiDefaultBackingFieldSymbolPointer +import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBasePsiSymbolPointer import org.jetbrains.kotlin.analysis.api.lifetime.KaLifetimeToken import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.api.symbols.KaBackingFieldSymbol import org.jetbrains.kotlin.analysis.api.symbols.KaKotlinPropertySymbol import org.jetbrains.kotlin.analysis.api.symbols.KaPropertySymbol -import org.jetbrains.kotlin.analysis.api.symbols.KaSymbolModality -import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaPsiBasedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer import org.jetbrains.kotlin.analysis.api.types.KaType import org.jetbrains.kotlin.descriptors.FieldDescriptor -import org.jetbrains.kotlin.descriptors.Visibilities -import org.jetbrains.kotlin.descriptors.Visibility import org.jetbrains.kotlin.descriptors.annotations.Annotations internal class KaFe10DescDefaultBackingFieldSymbol( @@ -31,8 +28,8 @@ override val analysisContext: Fe10AnalysisContext ) : KaBackingFieldSymbol(), KaFe10Symbol { override fun createPointer(): KaSymbolPointer<KaBackingFieldSymbol> = withValidityAssertion { - KaPsiBasedSymbolPointer.createForSymbolFromSource<KaPropertySymbol>(owningProperty) - ?.let { KaFe10PsiDefaultBackingFieldSymbolPointer(it) } + KaBasePsiSymbolPointer.createForSymbolFromSource<KaPropertySymbol>(owningProperty) + ?.let { KaFe10PsiDefaultBackingFieldSymbolPointer(it, this) } ?: KaFe10NeverRestoringSymbolPointer() }
diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescEnumEntrySymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescEnumEntrySymbol.kt index e5e42b1..64274f6 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescEnumEntrySymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescEnumEntrySymbol.kt
@@ -13,10 +13,10 @@ import org.jetbrains.kotlin.analysis.api.descriptors.symbols.isEqualTo import org.jetbrains.kotlin.analysis.api.descriptors.symbols.pointers.KaFe10DescEnumEntrySymbolPointer import org.jetbrains.kotlin.analysis.api.descriptors.symbols.pointers.KaFe10NeverRestoringSymbolPointer +import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBasePsiSymbolPointer import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.api.symbols.KaEnumEntryInitializerSymbol import org.jetbrains.kotlin.analysis.api.symbols.KaEnumEntrySymbol -import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaPsiBasedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer import org.jetbrains.kotlin.analysis.api.types.KaType import org.jetbrains.kotlin.descriptors.ClassDescriptor @@ -55,13 +55,13 @@ get() = this override fun createPointer(): KaSymbolPointer<KaEnumEntrySymbol> = withValidityAssertion { - KaPsiBasedSymbolPointer.createForSymbolFromSource<KaEnumEntrySymbol>(this)?.let { + KaBasePsiSymbolPointer.createForSymbolFromSource<KaEnumEntrySymbol>(this)?.let { return it } val enumClassId = enumDescriptor.classId if (enumClassId != null) { - return KaFe10DescEnumEntrySymbolPointer(enumClassId, descriptor.name) + return KaFe10DescEnumEntrySymbolPointer(enumClassId, descriptor.name, this) } return KaFe10NeverRestoringSymbolPointer()
diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescJavaFieldSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescJavaFieldSymbol.kt index a1dba63..1411e06 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescJavaFieldSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescJavaFieldSymbol.kt
@@ -13,9 +13,9 @@ import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.toKtType import org.jetbrains.kotlin.analysis.api.descriptors.symbols.isEqualTo import org.jetbrains.kotlin.analysis.api.descriptors.symbols.pointers.KaFe10NeverRestoringSymbolPointer +import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBasePsiSymbolPointer import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.api.symbols.KaJavaFieldSymbol -import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaPsiBasedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer import org.jetbrains.kotlin.analysis.api.types.KaType import org.jetbrains.kotlin.descriptors.Visibility @@ -47,7 +47,7 @@ get() = withValidityAssertion { descriptor.returnType.toKtType(analysisContext) } override fun createPointer(): KaSymbolPointer<KaJavaFieldSymbol> = withValidityAssertion { - KaPsiBasedSymbolPointer.createForSymbolFromSource<KaJavaFieldSymbol>(this) ?: KaFe10NeverRestoringSymbolPointer() + KaBasePsiSymbolPointer.createForSymbolFromSource<KaJavaFieldSymbol>(this) ?: KaFe10NeverRestoringSymbolPointer() } override fun equals(other: Any?): Boolean = isEqualTo(other)
diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescKotlinPropertySymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescKotlinPropertySymbol.kt index aaff975..7e61320 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescKotlinPropertySymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescKotlinPropertySymbol.kt
@@ -12,9 +12,9 @@ import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.* import org.jetbrains.kotlin.analysis.api.descriptors.symbols.isEqualTo import org.jetbrains.kotlin.analysis.api.descriptors.symbols.pointers.KaFe10NeverRestoringSymbolPointer +import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBasePsiSymbolPointer import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.api.symbols.* -import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaPsiBasedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer import org.jetbrains.kotlin.analysis.api.types.KaType import org.jetbrains.kotlin.descriptors.FunctionDescriptor @@ -141,7 +141,7 @@ get() = withValidityAssertion { descriptor.isDelegated } override fun createPointer(): KaSymbolPointer<KaKotlinPropertySymbol> = withValidityAssertion { - KaPsiBasedSymbolPointer.createForSymbolFromSource<KaKotlinPropertySymbol>(this) ?: KaFe10NeverRestoringSymbolPointer() + KaBasePsiSymbolPointer.createForSymbolFromSource<KaKotlinPropertySymbol>(this) ?: KaFe10NeverRestoringSymbolPointer() } override fun equals(other: Any?): Boolean = isEqualTo(other)
diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescLocalVariableSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescLocalVariableSymbol.kt index 79182d6..ad5ed17 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescLocalVariableSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescLocalVariableSymbol.kt
@@ -11,9 +11,9 @@ import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.toKtType import org.jetbrains.kotlin.analysis.api.descriptors.symbols.isEqualTo import org.jetbrains.kotlin.analysis.api.descriptors.symbols.pointers.KaFe10NeverRestoringSymbolPointer +import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBasePsiSymbolPointer import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.api.symbols.KaLocalVariableSymbol -import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaPsiBasedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer import org.jetbrains.kotlin.analysis.api.types.KaType import org.jetbrains.kotlin.descriptors.impl.LocalVariableDescriptor @@ -33,7 +33,7 @@ get() = withValidityAssertion { descriptor.type.toKtType(analysisContext) } override fun createPointer(): KaSymbolPointer<KaLocalVariableSymbol> = withValidityAssertion { - KaPsiBasedSymbolPointer.createForSymbolFromSource<KaLocalVariableSymbol>(this) ?: KaFe10NeverRestoringSymbolPointer() + KaBasePsiSymbolPointer.createForSymbolFromSource<KaLocalVariableSymbol>(this) ?: KaFe10NeverRestoringSymbolPointer() } override fun equals(other: Any?): Boolean = isEqualTo(other)
diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescNamedClassSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescNamedClassSymbol.kt index d1c95ed..c648a42 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescNamedClassSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescNamedClassSymbol.kt
@@ -12,14 +12,10 @@ import org.jetbrains.kotlin.analysis.api.descriptors.symbols.isEqualTo import org.jetbrains.kotlin.analysis.api.descriptors.symbols.pointers.KaFe10DescNamedClassSymbolPointer import org.jetbrains.kotlin.analysis.api.descriptors.symbols.pointers.KaFe10NeverRestoringSymbolPointer +import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBasePsiSymbolPointer 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.KaClassKind -import org.jetbrains.kotlin.analysis.api.symbols.KaNamedClassSymbol -import org.jetbrains.kotlin.analysis.api.symbols.KaSymbolLocation -import org.jetbrains.kotlin.analysis.api.symbols.KaSymbolModality -import org.jetbrains.kotlin.analysis.api.symbols.KaTypeParameterSymbol -import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaPsiBasedSymbolPointer +import org.jetbrains.kotlin.analysis.api.symbols.* import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer import org.jetbrains.kotlin.analysis.api.types.KaType import org.jetbrains.kotlin.descriptors.ClassDescriptor @@ -96,13 +92,13 @@ get() = withValidityAssertion { descriptor.declaredTypeParameters.map { KaFe10DescTypeParameterSymbol(it, analysisContext) } } override fun createPointer(): KaSymbolPointer<KaNamedClassSymbol> = withValidityAssertion { - KaPsiBasedSymbolPointer.createForSymbolFromSource<KaNamedClassSymbol>(this)?.let { + KaBasePsiSymbolPointer.createForSymbolFromSource<KaNamedClassSymbol>(this)?.let { return it } val classId = descriptor.classId if (classId != null) { - return KaFe10DescNamedClassSymbolPointer(classId) + return KaFe10DescNamedClassSymbolPointer(classId, this) } return KaFe10NeverRestoringSymbolPointer()
diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescNamedFunctionSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescNamedFunctionSymbol.kt index 2718650..340fc33 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescNamedFunctionSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescNamedFunctionSymbol.kt
@@ -15,15 +15,10 @@ import org.jetbrains.kotlin.analysis.api.descriptors.symbols.pointers.KaFe10DescFunctionSymbolPointer import org.jetbrains.kotlin.analysis.api.descriptors.symbols.pointers.KaFe10NeverRestoringSymbolPointer import org.jetbrains.kotlin.analysis.api.descriptors.utils.cached +import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBasePsiSymbolPointer import org.jetbrains.kotlin.analysis.api.impl.base.util.kotlinFunctionInvokeCallableIds import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion -import org.jetbrains.kotlin.analysis.api.symbols.KaNamedFunctionSymbol -import org.jetbrains.kotlin.analysis.api.symbols.KaReceiverParameterSymbol -import org.jetbrains.kotlin.analysis.api.symbols.KaSymbolLocation -import org.jetbrains.kotlin.analysis.api.symbols.KaSymbolModality -import org.jetbrains.kotlin.analysis.api.symbols.KaTypeParameterSymbol -import org.jetbrains.kotlin.analysis.api.symbols.KaValueParameterSymbol -import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaPsiBasedSymbolPointer +import org.jetbrains.kotlin.analysis.api.symbols.* import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer import org.jetbrains.kotlin.analysis.api.types.KaType import org.jetbrains.kotlin.contracts.description.ContractProviderKey @@ -135,14 +130,14 @@ get() = withValidityAssertion { descriptor.typeParameters.map { KaFe10DescTypeParameterSymbol(it, analysisContext) } } override fun createPointer(): KaSymbolPointer<KaNamedFunctionSymbol> = withValidityAssertion { - KaPsiBasedSymbolPointer.createForSymbolFromSource<KaNamedFunctionSymbol>(this)?.let { + KaBasePsiSymbolPointer.createForSymbolFromSource<KaNamedFunctionSymbol>(this)?.let { return it } val callableId = descriptor.callableIdIfNotLocal if (callableId != null) { val signature = descriptor.getSymbolPointerSignature() - return KaFe10DescFunctionSymbolPointer(callableId, signature) + return KaFe10DescFunctionSymbolPointer(callableId, signature, this) } return KaFe10NeverRestoringSymbolPointer()
diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescPropertyGetterSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescPropertyGetterSymbol.kt index 29cfc80..4f6dc5f 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescPropertyGetterSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescPropertyGetterSymbol.kt
@@ -10,11 +10,11 @@ import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.* import org.jetbrains.kotlin.analysis.api.descriptors.symbols.isEqualTo import org.jetbrains.kotlin.analysis.api.descriptors.symbols.pointers.KaFe10NeverRestoringSymbolPointer +import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBasePsiSymbolPointer import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.api.symbols.KaPropertyGetterSymbol import org.jetbrains.kotlin.analysis.api.symbols.KaReceiverParameterSymbol import org.jetbrains.kotlin.analysis.api.symbols.KaSymbolModality -import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaPsiBasedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer import org.jetbrains.kotlin.analysis.api.types.KaType import org.jetbrains.kotlin.descriptors.PropertyGetterDescriptor @@ -58,7 +58,7 @@ get() = withValidityAssertion { descriptor.extensionReceiverParameter?.toKtReceiverParameterSymbol(analysisContext) } override fun createPointer(): KaSymbolPointer<KaPropertyGetterSymbol> = withValidityAssertion { - KaPsiBasedSymbolPointer.createForSymbolFromSource<KaPropertyGetterSymbol>(this) ?: KaFe10NeverRestoringSymbolPointer() + KaBasePsiSymbolPointer.createForSymbolFromSource<KaPropertyGetterSymbol>(this) ?: KaFe10NeverRestoringSymbolPointer() } override fun equals(other: Any?): Boolean = isEqualTo(other)
diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescPropertySetterSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescPropertySetterSymbol.kt index 03c16ba..027a6e9 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescPropertySetterSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescPropertySetterSymbol.kt
@@ -10,12 +10,12 @@ import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.* import org.jetbrains.kotlin.analysis.api.descriptors.symbols.isEqualTo import org.jetbrains.kotlin.analysis.api.descriptors.symbols.pointers.KaFe10NeverRestoringSymbolPointer +import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBasePsiSymbolPointer import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.api.symbols.KaPropertySetterSymbol import org.jetbrains.kotlin.analysis.api.symbols.KaReceiverParameterSymbol import org.jetbrains.kotlin.analysis.api.symbols.KaSymbolModality import org.jetbrains.kotlin.analysis.api.symbols.KaValueParameterSymbol -import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaPsiBasedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer import org.jetbrains.kotlin.analysis.api.types.KaType import org.jetbrains.kotlin.descriptors.PropertySetterDescriptor @@ -64,7 +64,7 @@ get() = withValidityAssertion { descriptor.extensionReceiverParameter?.toKtReceiverParameterSymbol(analysisContext) } override fun createPointer(): KaSymbolPointer<KaPropertySetterSymbol> = withValidityAssertion { - KaPsiBasedSymbolPointer.createForSymbolFromSource<KaPropertySetterSymbol>(this) ?: KaFe10NeverRestoringSymbolPointer() + KaBasePsiSymbolPointer.createForSymbolFromSource<KaPropertySetterSymbol>(this) ?: KaFe10NeverRestoringSymbolPointer() } override fun equals(other: Any?): Boolean = isEqualTo(other)
diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescSamConstructorSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescSamConstructorSymbol.kt index 7cc8733..8204c28 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescSamConstructorSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescSamConstructorSymbol.kt
@@ -12,9 +12,9 @@ import org.jetbrains.kotlin.analysis.api.descriptors.symbols.isEqualTo import org.jetbrains.kotlin.analysis.api.descriptors.symbols.pointers.KaFe10DescSamConstructorSymbolPointer import org.jetbrains.kotlin.analysis.api.descriptors.symbols.pointers.KaFe10NeverRestoringSymbolPointer +import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBasePsiSymbolPointer import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.api.symbols.* -import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaPsiBasedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer import org.jetbrains.kotlin.analysis.api.types.KaType import org.jetbrains.kotlin.descriptors.Visibility @@ -72,13 +72,13 @@ override fun createPointer(): KaSymbolPointer<KaSamConstructorSymbol> = withValidityAssertion { - KaPsiBasedSymbolPointer.createForSymbolFromSource<KaSamConstructorSymbol>(this)?.let { + KaBasePsiSymbolPointer.createForSymbolFromSource<KaSamConstructorSymbol>(this)?.let { return it } val classId = descriptor.baseDescriptorForSynthetic.classId if (classId != null) { - return KaFe10DescSamConstructorSymbolPointer(classId) + return KaFe10DescSamConstructorSymbolPointer(classId, this) } return KaFe10NeverRestoringSymbolPointer()
diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescSyntheticFieldSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescSyntheticFieldSymbol.kt index 21a3f04..1f0cd65 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescSyntheticFieldSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescSyntheticFieldSymbol.kt
@@ -9,21 +9,17 @@ import org.jetbrains.kotlin.analysis.api.descriptors.symbols.base.KaFe10AnnotatedSymbol import org.jetbrains.kotlin.analysis.api.descriptors.symbols.base.KaFe10Symbol import org.jetbrains.kotlin.analysis.api.descriptors.symbols.calculateHashCode -import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.kaSymbolModality -import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.ktVisibility import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.toKtType import org.jetbrains.kotlin.analysis.api.descriptors.symbols.isEqualTo import org.jetbrains.kotlin.analysis.api.descriptors.symbols.pointers.KaFe10DescSyntheticFieldSymbolPointer import org.jetbrains.kotlin.analysis.api.descriptors.symbols.pointers.KaFe10NeverRestoringSymbolPointer +import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBasePsiSymbolPointer import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.api.symbols.KaBackingFieldSymbol import org.jetbrains.kotlin.analysis.api.symbols.KaKotlinPropertySymbol import org.jetbrains.kotlin.analysis.api.symbols.KaPropertyAccessorSymbol -import org.jetbrains.kotlin.analysis.api.symbols.KaSymbolModality -import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaPsiBasedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer import org.jetbrains.kotlin.analysis.api.types.KaType -import org.jetbrains.kotlin.descriptors.Visibility import org.jetbrains.kotlin.descriptors.annotations.Annotations import org.jetbrains.kotlin.descriptors.impl.PropertyDescriptorImpl import org.jetbrains.kotlin.descriptors.impl.SyntheticFieldDescriptor @@ -50,9 +46,9 @@ override fun createPointer(): KaSymbolPointer<KaBackingFieldSymbol> = withValidityAssertion { val accessorPsi = descriptor.containingDeclaration.toSourceElement.getPsi() if (accessorPsi is KtPropertyAccessor) { - val accessorPointer = KaPsiBasedSymbolPointer.createForSymbolFromPsi<KaPropertyAccessorSymbol>(accessorPsi) + val accessorPointer = KaBasePsiSymbolPointer.createForSymbolFromPsi<KaPropertyAccessorSymbol>(accessorPsi) if (accessorPointer != null) { - return KaFe10DescSyntheticFieldSymbolPointer(accessorPointer) + return KaFe10DescSyntheticFieldSymbolPointer(accessorPointer, this) } }
diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescSyntheticJavaPropertySymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescSyntheticJavaPropertySymbol.kt index 343078e..27f18fc 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescSyntheticJavaPropertySymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescSyntheticJavaPropertySymbol.kt
@@ -11,9 +11,9 @@ import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.* import org.jetbrains.kotlin.analysis.api.descriptors.symbols.isEqualTo import org.jetbrains.kotlin.analysis.api.descriptors.symbols.pointers.KaFe10NeverRestoringSymbolPointer +import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBasePsiSymbolPointer import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.api.symbols.* -import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaPsiBasedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer import org.jetbrains.kotlin.analysis.api.types.KaType import org.jetbrains.kotlin.descriptors.Visibility @@ -106,7 +106,7 @@ get() = withValidityAssertion { descriptor.typeParameters.map { it.toKtTypeParameter(analysisContext) } } override fun createPointer(): KaSymbolPointer<KaSyntheticJavaPropertySymbol> = withValidityAssertion { - KaPsiBasedSymbolPointer.createForSymbolFromSource<KaSyntheticJavaPropertySymbol>(this) ?: KaFe10NeverRestoringSymbolPointer() + KaBasePsiSymbolPointer.createForSymbolFromSource<KaSyntheticJavaPropertySymbol>(this) ?: KaFe10NeverRestoringSymbolPointer() } override fun equals(other: Any?): Boolean = isEqualTo(other)
diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescSyntheticJavaPropertySymbolForOverride.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescSyntheticJavaPropertySymbolForOverride.kt index 7670046..d833c62 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescSyntheticJavaPropertySymbolForOverride.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescSyntheticJavaPropertySymbolForOverride.kt
@@ -11,9 +11,9 @@ import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.* import org.jetbrains.kotlin.analysis.api.descriptors.symbols.isEqualTo import org.jetbrains.kotlin.analysis.api.descriptors.symbols.pointers.KaFe10NeverRestoringSymbolPointer +import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBasePsiSymbolPointer import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.api.symbols.* -import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaPsiBasedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer import org.jetbrains.kotlin.analysis.api.types.KaType import org.jetbrains.kotlin.descriptors.Visibility @@ -105,7 +105,7 @@ get() = withValidityAssertion { descriptor.typeParameters.map { it.toKtTypeParameter(analysisContext) } } override fun createPointer(): KaSymbolPointer<KaSyntheticJavaPropertySymbol> = withValidityAssertion { - KaPsiBasedSymbolPointer.createForSymbolFromSource<KaSyntheticJavaPropertySymbol>(this) ?: KaFe10NeverRestoringSymbolPointer() + KaBasePsiSymbolPointer.createForSymbolFromSource<KaSyntheticJavaPropertySymbol>(this) ?: KaFe10NeverRestoringSymbolPointer() } override fun equals(other: Any?): Boolean = isEqualTo(other)
diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescTypeAliasSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescTypeAliasSymbol.kt index b75b763..881c17e 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescTypeAliasSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescTypeAliasSymbol.kt
@@ -10,11 +10,11 @@ import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.* import org.jetbrains.kotlin.analysis.api.descriptors.symbols.isEqualTo import org.jetbrains.kotlin.analysis.api.descriptors.symbols.pointers.KaFe10NeverRestoringSymbolPointer +import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBasePsiSymbolPointer import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.api.symbols.KaSymbolLocation import org.jetbrains.kotlin.analysis.api.symbols.KaTypeAliasSymbol import org.jetbrains.kotlin.analysis.api.symbols.KaTypeParameterSymbol -import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaPsiBasedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer import org.jetbrains.kotlin.analysis.api.types.KaType import org.jetbrains.kotlin.descriptors.TypeAliasDescriptor @@ -48,7 +48,7 @@ override val isExpect: Boolean get() = withValidityAssertion { descriptor.isExpect } override fun createPointer(): KaSymbolPointer<KaTypeAliasSymbol> = withValidityAssertion { - KaPsiBasedSymbolPointer.createForSymbolFromSource<KaTypeAliasSymbol>(this) ?: KaFe10NeverRestoringSymbolPointer() + KaBasePsiSymbolPointer.createForSymbolFromSource<KaTypeAliasSymbol>(this) ?: KaFe10NeverRestoringSymbolPointer() } override fun equals(other: Any?): Boolean = isEqualTo(other)
diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescTypeParameterSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescTypeParameterSymbol.kt index b0e95a7..0feabfe 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescTypeParameterSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescTypeParameterSymbol.kt
@@ -12,10 +12,10 @@ import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.toKtType import org.jetbrains.kotlin.analysis.api.descriptors.symbols.isEqualTo import org.jetbrains.kotlin.analysis.api.descriptors.symbols.pointers.KaFe10NeverRestoringSymbolPointer +import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBasePsiSymbolPointer import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.api.symbols.KaSymbolLocation import org.jetbrains.kotlin.analysis.api.symbols.KaTypeParameterSymbol -import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaPsiBasedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer import org.jetbrains.kotlin.analysis.api.types.KaType import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor @@ -43,7 +43,7 @@ get() = withValidityAssertion { descriptor.kaSymbolLocation } override fun createPointer(): KaSymbolPointer<KaTypeParameterSymbol> = withValidityAssertion { - KaPsiBasedSymbolPointer.createForSymbolFromSource<KaTypeParameterSymbol>(this) ?: KaFe10NeverRestoringSymbolPointer() + KaBasePsiSymbolPointer.createForSymbolFromSource<KaTypeParameterSymbol>(this) ?: KaFe10NeverRestoringSymbolPointer() } override fun equals(other: Any?): Boolean = isEqualTo(other)
diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescValueParameterSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescValueParameterSymbol.kt index 1cec029..368a97e9 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescValueParameterSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DescValueParameterSymbol.kt
@@ -12,9 +12,9 @@ import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.toKtType import org.jetbrains.kotlin.analysis.api.descriptors.symbols.isEqualTo import org.jetbrains.kotlin.analysis.api.descriptors.symbols.pointers.KaFe10NeverRestoringSymbolPointer +import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBasePsiSymbolPointer import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.api.symbols.KaValueParameterSymbol -import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaPsiBasedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer import org.jetbrains.kotlin.analysis.api.types.KaType import org.jetbrains.kotlin.builtins.StandardNames @@ -74,7 +74,7 @@ } override fun createPointer(): KaSymbolPointer<KaValueParameterSymbol> = withValidityAssertion { - KaPsiBasedSymbolPointer.createForSymbolFromSource<KaValueParameterSymbol>(this) ?: KaFe10NeverRestoringSymbolPointer() + KaBasePsiSymbolPointer.createForSymbolFromSource<KaValueParameterSymbol>(this) ?: KaFe10NeverRestoringSymbolPointer() } override fun equals(other: Any?): Boolean = isEqualTo(other)
diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DynamicFunctionDescValueParameterSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DynamicFunctionDescValueParameterSymbol.kt index a809e22..8a5524f 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DynamicFunctionDescValueParameterSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10DynamicFunctionDescValueParameterSymbol.kt
@@ -13,6 +13,7 @@ import org.jetbrains.kotlin.analysis.api.descriptors.symbols.base.KaFe10Symbol import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.toKtType import org.jetbrains.kotlin.analysis.api.impl.base.annotations.KaBaseEmptyAnnotationList +import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBaseCachedSymbolPointer import org.jetbrains.kotlin.analysis.api.lifetime.KaLifetimeToken import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.api.symbols.KaNamedFunctionSymbol @@ -68,16 +69,19 @@ get() = withValidityAssertion { createDynamicType(analysisContext.builtIns).toKtType(analysisContext) } override fun createPointer(): KaSymbolPointer<KaValueParameterSymbol> = withValidityAssertion { - Pointer(owner.createPointer()) + Pointer(owner.createPointer(), this) } override fun equals(other: Any?): Boolean = other is KaFe10DynamicFunctionDescValueParameterSymbol && other.owner == this.owner override fun hashCode(): Int = owner.hashCode() - private class Pointer(val ownerPointer: KaSymbolPointer<KaNamedFunctionSymbol>) : KaSymbolPointer<KaValueParameterSymbol>() { + private class Pointer( + val ownerPointer: KaSymbolPointer<KaNamedFunctionSymbol>, + originalSymbol: KaValueParameterSymbol?, + ) : KaBaseCachedSymbolPointer<KaValueParameterSymbol>(originalSymbol) { @KaImplementationDetail - override fun restoreSymbol(analysisSession: KaSession): KaValueParameterSymbol? { + override fun restoreIfNotCached(analysisSession: KaSession): KaValueParameterSymbol? { val owner = ownerPointer.restoreSymbol(analysisSession) as? KaFe10DescNamedFunctionSymbol ?: return null return KaFe10DynamicFunctionDescValueParameterSymbol(owner) }
diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10ReceiverParameterSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10ReceiverParameterSymbol.kt index d81de41..9f63fde 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10ReceiverParameterSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KaFe10ReceiverParameterSymbol.kt
@@ -39,7 +39,7 @@ get() = withValidityAssertion { descriptor.ktVisibility } override fun createPointer(): KaSymbolPointer<KaReceiverParameterSymbol> = withValidityAssertion { - KaBaseReceiverParameterSymbolPointer(owningCallableSymbol.createPointer()) + KaBaseReceiverParameterSymbolPointer(owningCallableSymbol.createPointer(), this) } override fun equals(other: Any?): Boolean = isEqualTo(other)
diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/pointers/KaFe10DescEnumEntrySymbolPointer.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/pointers/KaFe10DescEnumEntrySymbolPointer.kt index 83b4436..4c272c4 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/pointers/KaFe10DescEnumEntrySymbolPointer.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/pointers/KaFe10DescEnumEntrySymbolPointer.kt
@@ -9,6 +9,7 @@ import org.jetbrains.kotlin.analysis.api.KaSession import org.jetbrains.kotlin.analysis.api.descriptors.KaFe10Session import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.KaFe10DescEnumEntrySymbol +import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBaseCachedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.KaEnumEntrySymbol import org.jetbrains.kotlin.analysis.api.symbols.KaSymbol import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer @@ -22,9 +23,10 @@ internal class KaFe10DescEnumEntrySymbolPointer( private val classId: ClassId, private val entryName: Name, -) : KaSymbolPointer<KaEnumEntrySymbol>() { + originalSymbol: KaEnumEntrySymbol?, +) : KaBaseCachedSymbolPointer<KaEnumEntrySymbol>(originalSymbol) { @KaImplementationDetail - override fun restoreSymbol(analysisSession: KaSession): KaEnumEntrySymbol? { + override fun restoreIfNotCached(analysisSession: KaSession): KaEnumEntrySymbol? { check(analysisSession is KaFe10Session) val analysisContext = analysisSession.analysisContext
diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/pointers/KaFe10DescFunctionSymbolPointer.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/pointers/KaFe10DescFunctionSymbolPointer.kt index e993489..1b685ca 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/pointers/KaFe10DescFunctionSymbolPointer.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/pointers/KaFe10DescFunctionSymbolPointer.kt
@@ -10,6 +10,7 @@ import org.jetbrains.kotlin.analysis.api.descriptors.KaFe10Session import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.getSymbolPointerSignature import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.toKtCallableSymbol +import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBaseCachedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.KaFunctionSymbol import org.jetbrains.kotlin.analysis.api.symbols.KaSymbol import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer @@ -22,10 +23,11 @@ internal class KaFe10DescFunctionSymbolPointer<T : KaFunctionSymbol>( private val callableId: CallableId, - private val signature: String -) : KaSymbolPointer<T>() { + private val signature: String, + originalSymbol: T? +) : KaBaseCachedSymbolPointer<T>(originalSymbol) { @KaImplementationDetail - override fun restoreSymbol(analysisSession: KaSession): T? { + override fun restoreIfNotCached(analysisSession: KaSession): T? { check(analysisSession is KaFe10Session) val analysisContext = analysisSession.analysisContext
diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/pointers/KaFe10DescNamedClassSymbolPointer.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/pointers/KaFe10DescNamedClassSymbolPointer.kt index 18b7ddb..3df54b2 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/pointers/KaFe10DescNamedClassSymbolPointer.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/pointers/KaFe10DescNamedClassSymbolPointer.kt
@@ -9,15 +9,19 @@ import org.jetbrains.kotlin.analysis.api.KaSession import org.jetbrains.kotlin.analysis.api.descriptors.KaFe10Session import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.KaFe10DescNamedClassSymbol +import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBaseCachedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.KaNamedClassSymbol import org.jetbrains.kotlin.analysis.api.symbols.KaSymbol import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer import org.jetbrains.kotlin.descriptors.findClassAcrossModuleDependencies import org.jetbrains.kotlin.name.ClassId -internal class KaFe10DescNamedClassSymbolPointer(private val classId: ClassId) : KaSymbolPointer<KaNamedClassSymbol>() { +internal class KaFe10DescNamedClassSymbolPointer( + private val classId: ClassId, + originalSymbol: KaNamedClassSymbol?, +) : KaBaseCachedSymbolPointer<KaNamedClassSymbol>(originalSymbol) { @KaImplementationDetail - override fun restoreSymbol(analysisSession: KaSession): KaNamedClassSymbol? { + override fun restoreIfNotCached(analysisSession: KaSession): KaNamedClassSymbol? { check(analysisSession is KaFe10Session) val analysisContext = analysisSession.analysisContext
diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/pointers/KaFe10DescSamConstructorSymbolPointer.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/pointers/KaFe10DescSamConstructorSymbolPointer.kt index 124e8b5..31cfd66 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/pointers/KaFe10DescSamConstructorSymbolPointer.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/pointers/KaFe10DescSamConstructorSymbolPointer.kt
@@ -9,6 +9,7 @@ import org.jetbrains.kotlin.analysis.api.KaSession import org.jetbrains.kotlin.analysis.api.descriptors.KaFe10Session import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.KaFe10DescSamConstructorSymbol +import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBaseCachedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.KaSamConstructorSymbol import org.jetbrains.kotlin.analysis.api.symbols.KaSymbol import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer @@ -18,9 +19,12 @@ import org.jetbrains.kotlin.resolve.sam.createSamConstructorFunction import org.jetbrains.kotlin.resolve.sam.getSingleAbstractMethodOrNull -internal class KaFe10DescSamConstructorSymbolPointer(private val classId: ClassId) : KaSymbolPointer<KaSamConstructorSymbol>() { +internal class KaFe10DescSamConstructorSymbolPointer( + private val classId: ClassId, + originalSymbol: KaSamConstructorSymbol?, +) : KaBaseCachedSymbolPointer<KaSamConstructorSymbol>(originalSymbol) { @KaImplementationDetail - override fun restoreSymbol(analysisSession: KaSession): KaSamConstructorSymbol? { + override fun restoreIfNotCached(analysisSession: KaSession): KaSamConstructorSymbol? { check(analysisSession is KaFe10Session) val analysisContext = analysisSession.analysisContext
diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/pointers/KaFe10DescSyntheticFieldSymbolPointer.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/pointers/KaFe10DescSyntheticFieldSymbolPointer.kt index 93d58ca..d046688 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/pointers/KaFe10DescSyntheticFieldSymbolPointer.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/pointers/KaFe10DescSyntheticFieldSymbolPointer.kt
@@ -10,19 +10,21 @@ import org.jetbrains.kotlin.analysis.api.descriptors.KaFe10Session import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.KaFe10DescSyntheticFieldSymbol import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.getSymbolDescriptor +import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBaseCachedSymbolPointer +import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBasePsiSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.KaBackingFieldSymbol import org.jetbrains.kotlin.analysis.api.symbols.KaPropertyAccessorSymbol import org.jetbrains.kotlin.analysis.api.symbols.KaSymbol -import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaPsiBasedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer import org.jetbrains.kotlin.descriptors.PropertyAccessorDescriptor import org.jetbrains.kotlin.descriptors.impl.SyntheticFieldDescriptor internal class KaFe10DescSyntheticFieldSymbolPointer( - private val psiPointer: KaPsiBasedSymbolPointer<KaPropertyAccessorSymbol> -) : KaSymbolPointer<KaBackingFieldSymbol>() { + private val psiPointer: KaBasePsiSymbolPointer<KaPropertyAccessorSymbol>, + originalSymbol: KaBackingFieldSymbol?, +) : KaBaseCachedSymbolPointer<KaBackingFieldSymbol>(originalSymbol) { @KaImplementationDetail - override fun restoreSymbol(analysisSession: KaSession): KaBackingFieldSymbol? { + override fun restoreIfNotCached(analysisSession: KaSession): KaBackingFieldSymbol? { check(analysisSession is KaFe10Session) val analysisContext = analysisSession.analysisContext val accessorSymbol = psiPointer.restoreSymbol(analysisSession) ?: return null
diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/pointers/KaFe10NeverRestoringSymbolPointer.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/pointers/KaFe10NeverRestoringSymbolPointer.kt index 8dad647..14ea607 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/pointers/KaFe10NeverRestoringSymbolPointer.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/pointers/KaFe10NeverRestoringSymbolPointer.kt
@@ -10,7 +10,7 @@ import org.jetbrains.kotlin.analysis.api.symbols.KaSymbol import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer -internal class KaFe10NeverRestoringSymbolPointer<T : KaSymbol> : KaSymbolPointer<T>() { +internal class KaFe10NeverRestoringSymbolPointer<T : KaSymbol>() : KaSymbolPointer<T>() { @KaImplementationDetail override fun restoreSymbol(analysisSession: KaSession): T? { return null
diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/pointers/KaFe10PackageSymbolPointer.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/pointers/KaFe10PackageSymbolPointer.kt index 8dd673b..b2e50a1 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/pointers/KaFe10PackageSymbolPointer.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/pointers/KaFe10PackageSymbolPointer.kt
@@ -9,14 +9,18 @@ import org.jetbrains.kotlin.analysis.api.KaSession import org.jetbrains.kotlin.analysis.api.descriptors.KaFe10Session import org.jetbrains.kotlin.analysis.api.descriptors.symbols.KaFe10PackageSymbol +import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBaseCachedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.KaPackageSymbol import org.jetbrains.kotlin.analysis.api.symbols.KaSymbol import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer import org.jetbrains.kotlin.name.FqName -internal class KaFe10PackageSymbolPointer(private val packageName: FqName) : KaSymbolPointer<KaPackageSymbol>() { +internal class KaFe10PackageSymbolPointer( + private val packageName: FqName, + originalSymbol: KaPackageSymbol?, +) : KaBaseCachedSymbolPointer<KaPackageSymbol>(originalSymbol) { @KaImplementationDetail - override fun restoreSymbol(analysisSession: KaSession): KaPackageSymbol { + override fun restoreIfNotCached(analysisSession: KaSession): KaPackageSymbol { check(analysisSession is KaFe10Session) return KaFe10PackageSymbol(packageName, analysisSession.analysisContext) }
diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/pointers/KaFe10PsiDefaultBackingFieldSymbolPointer.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/pointers/KaFe10PsiDefaultBackingFieldSymbolPointer.kt index bfbc998..180d844 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/pointers/KaFe10PsiDefaultBackingFieldSymbolPointer.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/pointers/KaFe10PsiDefaultBackingFieldSymbolPointer.kt
@@ -7,17 +7,19 @@ import org.jetbrains.kotlin.analysis.api.KaImplementationDetail import org.jetbrains.kotlin.analysis.api.KaSession +import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBaseCachedSymbolPointer +import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBasePsiSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.KaBackingFieldSymbol import org.jetbrains.kotlin.analysis.api.symbols.KaPropertySymbol import org.jetbrains.kotlin.analysis.api.symbols.KaSymbol -import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaPsiBasedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer internal class KaFe10PsiDefaultBackingFieldSymbolPointer( - private val propertySymbolPointer: KaPsiBasedSymbolPointer<KaPropertySymbol>, -) : KaSymbolPointer<KaBackingFieldSymbol>() { + private val propertySymbolPointer: KaBasePsiSymbolPointer<KaPropertySymbol>, + originalSymbol: KaBackingFieldSymbol?, +) : KaBaseCachedSymbolPointer<KaBackingFieldSymbol>(originalSymbol) { @KaImplementationDetail - override fun restoreSymbol(analysisSession: KaSession): KaBackingFieldSymbol? { + override fun restoreIfNotCached(analysisSession: KaSession): KaBackingFieldSymbol? { val property = with(analysisSession) { propertySymbolPointer.restoreSymbol() } return property?.backingFieldSymbol }
diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/pointers/KaFe10PsiDefaultSetterParameterSymbolPointer.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/pointers/KaFe10PsiDefaultSetterParameterSymbolPointer.kt index 59efe53..8cfa5b3 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/pointers/KaFe10PsiDefaultSetterParameterSymbolPointer.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/pointers/KaFe10PsiDefaultSetterParameterSymbolPointer.kt
@@ -7,17 +7,19 @@ import org.jetbrains.kotlin.analysis.api.KaImplementationDetail import org.jetbrains.kotlin.analysis.api.KaSession +import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBaseCachedSymbolPointer +import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBasePsiSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.KaPropertySetterSymbol import org.jetbrains.kotlin.analysis.api.symbols.KaSymbol import org.jetbrains.kotlin.analysis.api.symbols.KaValueParameterSymbol -import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaPsiBasedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer internal class KaFe10PsiDefaultSetterParameterSymbolPointer( - private val propertySymbolPointer: KaPsiBasedSymbolPointer<KaPropertySetterSymbol>, -) : KaSymbolPointer<KaValueParameterSymbol>() { + private val propertySymbolPointer: KaBasePsiSymbolPointer<KaPropertySetterSymbol>, + originalSymbol: KaValueParameterSymbol?, +) : KaBaseCachedSymbolPointer<KaValueParameterSymbol>(originalSymbol) { @KaImplementationDetail - override fun restoreSymbol(analysisSession: KaSession): KaValueParameterSymbol? { + override fun restoreIfNotCached(analysisSession: KaSession): KaValueParameterSymbol? { val property = with(analysisSession) { propertySymbolPointer.restoreSymbol() } return property?.parameter }
diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiAnonymousFunctionSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiAnonymousFunctionSymbol.kt index 44b3f87..1d4fc3f 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiAnonymousFunctionSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiAnonymousFunctionSymbol.kt
@@ -19,11 +19,11 @@ import org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased.base.createErrorType 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.impl.base.symbols.pointers.KaBasePsiSymbolPointer import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.api.symbols.KaAnonymousFunctionSymbol import org.jetbrains.kotlin.analysis.api.symbols.KaReceiverParameterSymbol import org.jetbrains.kotlin.analysis.api.symbols.KaValueParameterSymbol -import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaPsiBasedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer import org.jetbrains.kotlin.analysis.api.types.KaType import org.jetbrains.kotlin.descriptors.FunctionDescriptor @@ -69,7 +69,7 @@ get() = withValidityAssertion { psi.isExtensionDeclaration() } override fun createPointer(): KaSymbolPointer<KaAnonymousFunctionSymbol> = withValidityAssertion { - KaPsiBasedSymbolPointer.createForSymbolFromSource<KaAnonymousFunctionSymbol>(this) ?: KaFe10NeverRestoringSymbolPointer() + KaBasePsiSymbolPointer.createForSymbolFromSource<KaAnonymousFunctionSymbol>(this) ?: KaFe10NeverRestoringSymbolPointer() } override fun equals(other: Any?): Boolean = isEqualTo(other)
diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiAnonymousObjectSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiAnonymousObjectSymbol.kt index c3156b1..f64c6d1 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiAnonymousObjectSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiAnonymousObjectSymbol.kt
@@ -13,9 +13,9 @@ import org.jetbrains.kotlin.analysis.api.descriptors.symbols.pointers.KaFe10NeverRestoringSymbolPointer import org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased.base.KaFe10PsiSymbol import org.jetbrains.kotlin.analysis.api.descriptors.utils.cached +import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBasePsiSymbolPointer import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.api.symbols.KaAnonymousObjectSymbol -import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaPsiBasedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer import org.jetbrains.kotlin.analysis.api.types.KaType import org.jetbrains.kotlin.descriptors.ClassDescriptor @@ -37,7 +37,7 @@ } override fun createPointer(): KaSymbolPointer<KaAnonymousObjectSymbol> = withValidityAssertion { - KaPsiBasedSymbolPointer.createForSymbolFromSource<KaAnonymousObjectSymbol>(this) ?: KaFe10NeverRestoringSymbolPointer() + KaBasePsiSymbolPointer.createForSymbolFromSource<KaAnonymousObjectSymbol>(this) ?: KaFe10NeverRestoringSymbolPointer() } override fun equals(other: Any?): Boolean = isEqualTo(other)
diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiClassInitializerSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiClassInitializerSymbol.kt index aaceb2f..8a872c0 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiClassInitializerSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiClassInitializerSymbol.kt
@@ -12,10 +12,10 @@ import org.jetbrains.kotlin.analysis.api.descriptors.symbols.isEqualTo import org.jetbrains.kotlin.analysis.api.descriptors.symbols.pointers.KaFe10NeverRestoringSymbolPointer import org.jetbrains.kotlin.analysis.api.impl.base.annotations.KaBaseEmptyAnnotationList +import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBasePsiSymbolPointer import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.api.symbols.KaClassInitializerSymbol import org.jetbrains.kotlin.analysis.api.symbols.KaSymbolOrigin -import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaPsiBasedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer import org.jetbrains.kotlin.psi.KtClassInitializer @@ -33,7 +33,7 @@ } override fun createPointer(): KaSymbolPointer<KaClassInitializerSymbol> = withValidityAssertion { - KaPsiBasedSymbolPointer.createForSymbolFromSource<KaClassInitializerSymbol>(this) ?: KaFe10NeverRestoringSymbolPointer() + KaBasePsiSymbolPointer.createForSymbolFromSource<KaClassInitializerSymbol>(this) ?: KaFe10NeverRestoringSymbolPointer() } override val annotations: KaAnnotationList get() = withValidityAssertion { KaBaseEmptyAnnotationList(token) }
diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiConstructorSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiConstructorSymbol.kt index de4d4b8..6b23af2 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiConstructorSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiConstructorSymbol.kt
@@ -16,11 +16,11 @@ import org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased.base.createErrorType 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.impl.base.symbols.pointers.KaBasePsiSymbolPointer import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.api.symbols.KaConstructorSymbol import org.jetbrains.kotlin.analysis.api.symbols.KaTypeParameterSymbol import org.jetbrains.kotlin.analysis.api.symbols.KaValueParameterSymbol -import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaPsiBasedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer import org.jetbrains.kotlin.analysis.api.types.KaType import org.jetbrains.kotlin.descriptors.ConstructorDescriptor @@ -72,7 +72,7 @@ get() = withValidityAssertion { psi.typeParameters.map { KaFe10PsiTypeParameterSymbol(it, analysisContext) } } override fun createPointer(): KaSymbolPointer<KaConstructorSymbol> = withValidityAssertion { - KaPsiBasedSymbolPointer.createForSymbolFromSource<KaConstructorSymbol>(this) ?: KaFe10NeverRestoringSymbolPointer() + KaBasePsiSymbolPointer.createForSymbolFromSource<KaConstructorSymbol>(this) ?: KaFe10NeverRestoringSymbolPointer() } override fun equals(other: Any?): Boolean = isEqualTo(other)
diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiDefaultBackingFieldSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiDefaultBackingFieldSymbol.kt index 94f8f95..cb38579 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiDefaultBackingFieldSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiDefaultBackingFieldSymbol.kt
@@ -13,23 +13,18 @@ import org.jetbrains.kotlin.analysis.api.descriptors.symbols.pointers.KaFe10NeverRestoringSymbolPointer import org.jetbrains.kotlin.analysis.api.descriptors.symbols.pointers.KaFe10PsiDefaultBackingFieldSymbolPointer import org.jetbrains.kotlin.analysis.api.descriptors.utils.cached +import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBasePsiSymbolPointer import org.jetbrains.kotlin.analysis.api.lifetime.KaLifetimeToken import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.api.symbols.KaBackingFieldSymbol import org.jetbrains.kotlin.analysis.api.symbols.KaKotlinPropertySymbol import org.jetbrains.kotlin.analysis.api.symbols.KaPropertySymbol -import org.jetbrains.kotlin.analysis.api.symbols.KaSymbolModality -import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaPsiBasedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer import org.jetbrains.kotlin.analysis.api.types.KaType import org.jetbrains.kotlin.descriptors.FieldDescriptor import org.jetbrains.kotlin.descriptors.PropertyDescriptor -import org.jetbrains.kotlin.descriptors.Visibilities -import org.jetbrains.kotlin.descriptors.Visibility import org.jetbrains.kotlin.descriptors.annotations.Annotations import org.jetbrains.kotlin.psi.KtProperty -import org.jetbrains.kotlin.psi.psiUtil.hasActualModifier -import org.jetbrains.kotlin.psi.psiUtil.hasExpectModifier import org.jetbrains.kotlin.resolve.BindingContext internal class KaFe10PsiDefaultBackingFieldSymbol( @@ -43,9 +38,10 @@ } override fun createPointer(): KaSymbolPointer<KaBackingFieldSymbol> = withValidityAssertion { - KaPsiBasedSymbolPointer.createForSymbolFromPsi<KaPropertySymbol>(propertyPsi) - ?.let(::KaFe10PsiDefaultBackingFieldSymbolPointer) - ?: KaFe10NeverRestoringSymbolPointer() + KaBasePsiSymbolPointer.createForSymbolFromPsi<KaPropertySymbol>(propertyPsi) + ?.let { + KaFe10PsiDefaultBackingFieldSymbolPointer(it, this) + } ?: KaFe10NeverRestoringSymbolPointer() } override val returnType: KaType
diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiDefaultPropertyGetterSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiDefaultPropertyGetterSymbol.kt index 3c7a4a8..e52f340 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiDefaultPropertyGetterSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiDefaultPropertyGetterSymbol.kt
@@ -25,9 +25,9 @@ import org.jetbrains.kotlin.analysis.api.descriptors.utils.cached import org.jetbrains.kotlin.analysis.api.impl.base.annotations.KaBaseEmptyAnnotationList import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBasePropertyGetterSymbolPointer +import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBasePsiSymbolPointer import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.api.symbols.* -import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaPsiBasedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer import org.jetbrains.kotlin.analysis.api.types.KaType import org.jetbrains.kotlin.descriptors.PropertyDescriptor @@ -97,8 +97,9 @@ } override fun createPointer(): KaSymbolPointer<KaPropertyGetterSymbol> = withValidityAssertion { - KaPsiBasedSymbolPointer.createForSymbolFromPsi<KaPropertySymbol>(propertyPsi)?.let(::KaBasePropertyGetterSymbolPointer) - ?: KaFe10NeverRestoringSymbolPointer() + KaBasePsiSymbolPointer.createForSymbolFromPsi<KaPropertySymbol>(propertyPsi)?.let { + KaBasePropertyGetterSymbolPointer(it, this) + } ?: KaFe10NeverRestoringSymbolPointer() } override fun equals(other: Any?): Boolean = isEqualTo(other)
diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiDefaultPropertySetterSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiDefaultPropertySetterSymbol.kt index 6ef9935..90e5c92a 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiDefaultPropertySetterSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiDefaultPropertySetterSymbol.kt
@@ -26,9 +26,9 @@ import org.jetbrains.kotlin.analysis.api.impl.base.annotations.KaBaseEmptyAnnotationList import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBasePropertySetterSymbolPointer import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBaseValueParameterFromDefaultSetterSymbolPointer +import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBasePsiSymbolPointer import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.api.symbols.* -import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaPsiBasedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer import org.jetbrains.kotlin.analysis.api.types.KaType import org.jetbrains.kotlin.descriptors.* @@ -106,8 +106,9 @@ } override fun createPointer(): KaSymbolPointer<KaPropertySetterSymbol> = withValidityAssertion { - KaPsiBasedSymbolPointer.createForSymbolFromPsi<KaPropertySymbol>(propertyPsi)?.let(::KaBasePropertySetterSymbolPointer) - ?: KaFe10NeverRestoringSymbolPointer() + KaBasePsiSymbolPointer.createForSymbolFromPsi<KaPropertySymbol>(propertyPsi)?.let { + KaBasePropertySetterSymbolPointer(it, this) + } ?: KaFe10NeverRestoringSymbolPointer() } override fun equals(other: Any?): Boolean = isEqualTo(other) @@ -154,8 +155,8 @@ } override fun createPointer(): KaSymbolPointer<KaValueParameterSymbol> = withValidityAssertion { - KaPsiBasedSymbolPointer.createForSymbolFromPsi<KaPropertySymbol>(propertyPsi)?.let { - KaBaseValueParameterFromDefaultSetterSymbolPointer(it) + KaBasePsiSymbolPointer.createForSymbolFromPsi<KaPropertySymbol>(propertyPsi)?.let { + KaBaseValueParameterFromDefaultSetterSymbolPointer(it, this) } ?: KaFe10NeverRestoringSymbolPointer() }
diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiDefaultSetterParameterSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiDefaultSetterParameterSymbol.kt index a83eaa6..7602e0e 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiDefaultSetterParameterSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiDefaultSetterParameterSymbol.kt
@@ -20,11 +20,11 @@ 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.impl.base.annotations.KaBaseEmptyAnnotationList +import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBasePsiSymbolPointer import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.api.symbols.KaPropertySetterSymbol import org.jetbrains.kotlin.analysis.api.symbols.KaSymbolOrigin import org.jetbrains.kotlin.analysis.api.symbols.KaValueParameterSymbol -import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaPsiBasedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer import org.jetbrains.kotlin.analysis.api.types.KaType import org.jetbrains.kotlin.descriptors.VariableDescriptor @@ -77,9 +77,10 @@ get() = withValidityAssertion { KaBaseEmptyAnnotationList(token) } override fun createPointer(): KaSymbolPointer<KaValueParameterSymbol> = withValidityAssertion { - KaPsiBasedSymbolPointer.createForSymbolFromPsi<KaPropertySetterSymbol>(accessorPsi) - ?.let(::KaFe10PsiDefaultSetterParameterSymbolPointer) - ?: KaFe10NeverRestoringSymbolPointer() + KaBasePsiSymbolPointer.createForSymbolFromPsi<KaPropertySetterSymbol>(accessorPsi) + ?.let { + KaFe10PsiDefaultSetterParameterSymbolPointer(it, this) + } ?: KaFe10NeverRestoringSymbolPointer() } override fun equals(other: Any?): Boolean = isEqualTo(other)
diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiDestructuringDeclarationSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiDestructuringDeclarationSymbol.kt index b5155c1..8a2656f 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiDestructuringDeclarationSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiDestructuringDeclarationSymbol.kt
@@ -11,10 +11,10 @@ import org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased.base.KaFe10PsiSymbol import org.jetbrains.kotlin.analysis.api.descriptors.utils.cached import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaCannotCreateSymbolPointerForLocalLibraryDeclarationException +import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBasePsiSymbolPointer import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.api.symbols.KaDestructuringDeclarationSymbol import org.jetbrains.kotlin.analysis.api.symbols.KaVariableSymbol -import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaPsiBasedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer import org.jetbrains.kotlin.descriptors.CallableDescriptor import org.jetbrains.kotlin.descriptors.annotations.Annotations @@ -47,7 +47,7 @@ } override fun createPointer(): KaSymbolPointer<KaDestructuringDeclarationSymbol> { - KaPsiBasedSymbolPointer.createForSymbolFromSource<KaDestructuringDeclarationSymbol>(this)?.let { return it } + KaBasePsiSymbolPointer.createForSymbolFromSource<KaDestructuringDeclarationSymbol>(this)?.let { return it } throw KaCannotCreateSymbolPointerForLocalLibraryDeclarationException(SpecialNames.DESTRUCT.asString()) }
diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiEnumEntrySymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiEnumEntrySymbol.kt index 57e379d..21c0c65 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiEnumEntrySymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiEnumEntrySymbol.kt
@@ -15,10 +15,10 @@ import org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased.base.callableId import org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased.base.createErrorType import org.jetbrains.kotlin.analysis.api.descriptors.utils.cached +import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBasePsiSymbolPointer import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.api.symbols.KaEnumEntryInitializerSymbol import org.jetbrains.kotlin.analysis.api.symbols.KaEnumEntrySymbol -import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaPsiBasedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer import org.jetbrains.kotlin.analysis.api.types.KaType import org.jetbrains.kotlin.descriptors.ClassDescriptor @@ -61,7 +61,7 @@ get() = this.takeIf { psi.body != null } override fun createPointer(): KaSymbolPointer<KaEnumEntrySymbol> = withValidityAssertion { - KaPsiBasedSymbolPointer.createForSymbolFromSource<KaEnumEntrySymbol>(this) ?: KaFe10NeverRestoringSymbolPointer() + KaBasePsiSymbolPointer.createForSymbolFromSource<KaEnumEntrySymbol>(this) ?: KaFe10NeverRestoringSymbolPointer() }
diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiKotlinPropertySymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiKotlinPropertySymbol.kt index a22618a..bbe06a5 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiKotlinPropertySymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiKotlinPropertySymbol.kt
@@ -15,9 +15,9 @@ import org.jetbrains.kotlin.analysis.api.descriptors.symbols.pointers.KaFe10NeverRestoringSymbolPointer import org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased.base.* import org.jetbrains.kotlin.analysis.api.descriptors.utils.cached +import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBasePsiSymbolPointer import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.api.symbols.* -import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaPsiBasedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer import org.jetbrains.kotlin.analysis.api.types.KaType import org.jetbrains.kotlin.descriptors.PropertyDescriptor @@ -149,7 +149,7 @@ get() = withValidityAssertion { psi.ktVisibility ?: descriptor?.ktVisibility ?: Visibilities.Public } override fun createPointer(): KaSymbolPointer<KaKotlinPropertySymbol> = withValidityAssertion { - KaPsiBasedSymbolPointer.createForSymbolFromSource<KaKotlinPropertySymbol>(this) ?: KaFe10NeverRestoringSymbolPointer() + KaBasePsiSymbolPointer.createForSymbolFromSource<KaKotlinPropertySymbol>(this) ?: KaFe10NeverRestoringSymbolPointer() }
diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiLiteralAnonymousFunctionSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiLiteralAnonymousFunctionSymbol.kt index 044fa8b..bc45db6 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiLiteralAnonymousFunctionSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiLiteralAnonymousFunctionSymbol.kt
@@ -19,11 +19,11 @@ import org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased.base.createErrorType 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.impl.base.symbols.pointers.KaBasePsiSymbolPointer import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.api.symbols.KaAnonymousFunctionSymbol import org.jetbrains.kotlin.analysis.api.symbols.KaReceiverParameterSymbol import org.jetbrains.kotlin.analysis.api.symbols.KaValueParameterSymbol -import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaPsiBasedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer import org.jetbrains.kotlin.analysis.api.types.KaType import org.jetbrains.kotlin.descriptors.FunctionDescriptor @@ -73,7 +73,7 @@ get() = withValidityAssertion { psi.isExtensionDeclaration() } override fun createPointer(): KaSymbolPointer<KaAnonymousFunctionSymbol> = withValidityAssertion { - KaPsiBasedSymbolPointer.createForSymbolFromSource<KaAnonymousFunctionSymbol>(this) ?: KaFe10NeverRestoringSymbolPointer() + KaBasePsiSymbolPointer.createForSymbolFromSource<KaAnonymousFunctionSymbol>(this) ?: KaFe10NeverRestoringSymbolPointer() } override fun equals(other: Any?): Boolean = isEqualTo(other)
diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiLocalVariableSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiLocalVariableSymbol.kt index 95ab947..7c49db2 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiLocalVariableSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiLocalVariableSymbol.kt
@@ -14,9 +14,9 @@ import org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased.base.KaFe10PsiSymbol import org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased.base.createErrorType import org.jetbrains.kotlin.analysis.api.descriptors.utils.cached +import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBasePsiSymbolPointer import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.api.symbols.KaLocalVariableSymbol -import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaPsiBasedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer import org.jetbrains.kotlin.analysis.api.types.KaType import org.jetbrains.kotlin.descriptors.VariableDescriptor @@ -49,7 +49,7 @@ get() = withValidityAssertion { !psi.isVar } override fun createPointer(): KaSymbolPointer<KaLocalVariableSymbol> = withValidityAssertion { - KaPsiBasedSymbolPointer.createForSymbolFromSource<KaLocalVariableSymbol>(this) ?: KaFe10NeverRestoringSymbolPointer() + KaBasePsiSymbolPointer.createForSymbolFromSource<KaLocalVariableSymbol>(this) ?: KaFe10NeverRestoringSymbolPointer() } override fun equals(other: Any?): Boolean = isEqualTo(other)
diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiLoopParameterLocalVariableSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiLoopParameterLocalVariableSymbol.kt index c2c7f8b..d5d5df5 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiLoopParameterLocalVariableSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiLoopParameterLocalVariableSymbol.kt
@@ -14,9 +14,9 @@ import org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased.base.KaFe10PsiSymbol import org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased.base.createErrorType import org.jetbrains.kotlin.analysis.api.descriptors.utils.cached +import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBasePsiSymbolPointer import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.api.symbols.KaLocalVariableSymbol -import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaPsiBasedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer import org.jetbrains.kotlin.analysis.api.types.KaType import org.jetbrains.kotlin.descriptors.VariableDescriptor @@ -43,7 +43,7 @@ get() = withValidityAssertion { !psi.isMutable } override fun createPointer(): KaSymbolPointer<KaLocalVariableSymbol> = withValidityAssertion { - KaPsiBasedSymbolPointer.createForSymbolFromSource<KaLocalVariableSymbol>(this) ?: KaFe10NeverRestoringSymbolPointer() + KaBasePsiSymbolPointer.createForSymbolFromSource<KaLocalVariableSymbol>(this) ?: KaFe10NeverRestoringSymbolPointer() }
diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiNamedClassSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiNamedClassSymbol.kt index bef5180..37ff9ea 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiNamedClassSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiNamedClassSymbol.kt
@@ -18,16 +18,14 @@ 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.impl.base.symbols.invalidEnumEntryAsClassKind +import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBasePsiSymbolPointer import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion -import org.jetbrains.kotlin.analysis.api.symbols.KaClassKind -import org.jetbrains.kotlin.analysis.api.symbols.KaNamedClassSymbol -import org.jetbrains.kotlin.analysis.api.symbols.KaSymbolLocation -import org.jetbrains.kotlin.analysis.api.symbols.KaSymbolModality -import org.jetbrains.kotlin.analysis.api.symbols.KaTypeParameterSymbol -import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaPsiBasedSymbolPointer +import org.jetbrains.kotlin.analysis.api.symbols.* import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer import org.jetbrains.kotlin.analysis.api.types.KaType -import org.jetbrains.kotlin.descriptors.* +import org.jetbrains.kotlin.descriptors.ClassDescriptor +import org.jetbrains.kotlin.descriptors.Visibilities +import org.jetbrains.kotlin.descriptors.Visibility import org.jetbrains.kotlin.lexer.KtTokens import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.Name @@ -122,7 +120,7 @@ get() = withValidityAssertion { psi.ktVisibility ?: descriptor?.ktVisibility ?: Visibilities.Public } override fun createPointer(): KaSymbolPointer<KaNamedClassSymbol> = withValidityAssertion { - KaPsiBasedSymbolPointer.createForSymbolFromSource<KaNamedClassSymbol>(this) ?: KaFe10NeverRestoringSymbolPointer() + KaBasePsiSymbolPointer.createForSymbolFromSource<KaNamedClassSymbol>(this) ?: KaFe10NeverRestoringSymbolPointer() } override fun equals(other: Any?): Boolean = isEqualTo(other)
diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiNamedFunctionSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiNamedFunctionSymbol.kt index 9bf2602..b112159 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiNamedFunctionSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiNamedFunctionSymbol.kt
@@ -16,15 +16,10 @@ import org.jetbrains.kotlin.analysis.api.descriptors.symbols.pointers.KaFe10NeverRestoringSymbolPointer import org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased.base.* import org.jetbrains.kotlin.analysis.api.descriptors.utils.cached +import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBasePsiSymbolPointer import org.jetbrains.kotlin.analysis.api.impl.base.util.kotlinFunctionInvokeCallableIds import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion -import org.jetbrains.kotlin.analysis.api.symbols.KaNamedFunctionSymbol -import org.jetbrains.kotlin.analysis.api.symbols.KaReceiverParameterSymbol -import org.jetbrains.kotlin.analysis.api.symbols.KaSymbolLocation -import org.jetbrains.kotlin.analysis.api.symbols.KaSymbolModality -import org.jetbrains.kotlin.analysis.api.symbols.KaTypeParameterSymbol -import org.jetbrains.kotlin.analysis.api.symbols.KaValueParameterSymbol -import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaPsiBasedSymbolPointer +import org.jetbrains.kotlin.analysis.api.symbols.* import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer import org.jetbrains.kotlin.analysis.api.types.KaType import org.jetbrains.kotlin.contracts.description.ContractProviderKey @@ -131,7 +126,7 @@ get() = withValidityAssertion { psi.ktVisibility ?: descriptor?.ktVisibility ?: Visibilities.Public } override fun createPointer(): KaSymbolPointer<KaNamedFunctionSymbol> = withValidityAssertion { - KaPsiBasedSymbolPointer.createForSymbolFromSource<KaNamedFunctionSymbol>(this) ?: KaFe10NeverRestoringSymbolPointer() + KaBasePsiSymbolPointer.createForSymbolFromSource<KaNamedFunctionSymbol>(this) ?: KaFe10NeverRestoringSymbolPointer() } override fun equals(other: Any?): Boolean = isEqualTo(other)
diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiPropertyGetterSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiPropertyGetterSymbol.kt index 2618221..0045121 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiPropertyGetterSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiPropertyGetterSymbol.kt
@@ -19,11 +19,11 @@ import org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased.base.kaSymbolModality 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.impl.base.symbols.pointers.KaBasePsiSymbolPointer import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.api.symbols.KaPropertyGetterSymbol import org.jetbrains.kotlin.analysis.api.symbols.KaReceiverParameterSymbol import org.jetbrains.kotlin.analysis.api.symbols.KaSymbolModality -import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaPsiBasedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer import org.jetbrains.kotlin.analysis.api.types.KaType import org.jetbrains.kotlin.descriptors.PropertyGetterDescriptor @@ -78,7 +78,7 @@ } override fun createPointer(): KaSymbolPointer<KaPropertyGetterSymbol> = withValidityAssertion { - KaPsiBasedSymbolPointer.createForSymbolFromSource<KaPropertyGetterSymbol>(this) ?: KaFe10NeverRestoringSymbolPointer() + KaBasePsiSymbolPointer.createForSymbolFromSource<KaPropertyGetterSymbol>(this) ?: KaFe10NeverRestoringSymbolPointer() }
diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiPropertySetterSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiPropertySetterSymbol.kt index 63dbcb7..d1d4074 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiPropertySetterSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiPropertySetterSymbol.kt
@@ -19,12 +19,12 @@ import org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased.base.kaSymbolModality 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.impl.base.symbols.pointers.KaBasePsiSymbolPointer import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.api.symbols.KaPropertySetterSymbol import org.jetbrains.kotlin.analysis.api.symbols.KaReceiverParameterSymbol import org.jetbrains.kotlin.analysis.api.symbols.KaSymbolModality import org.jetbrains.kotlin.analysis.api.symbols.KaValueParameterSymbol -import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaPsiBasedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer import org.jetbrains.kotlin.analysis.api.types.KaType import org.jetbrains.kotlin.descriptors.PropertySetterDescriptor @@ -93,7 +93,7 @@ } override fun createPointer(): KaSymbolPointer<KaPropertySetterSymbol> = withValidityAssertion { - KaPsiBasedSymbolPointer.createForSymbolFromSource<KaPropertySetterSymbol>(this) ?: KaFe10NeverRestoringSymbolPointer() + KaBasePsiSymbolPointer.createForSymbolFromSource<KaPropertySetterSymbol>(this) ?: KaFe10NeverRestoringSymbolPointer() } override fun equals(other: Any?): Boolean = isEqualTo(other)
diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiScriptSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiScriptSymbol.kt index 260ef18..1db7de8 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiScriptSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiScriptSymbol.kt
@@ -11,12 +11,11 @@ import org.jetbrains.kotlin.analysis.api.descriptors.symbols.pointers.KaFe10NeverRestoringSymbolPointer import org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased.base.KaFe10PsiSymbol import org.jetbrains.kotlin.analysis.api.descriptors.utils.cached +import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBasePsiSymbolPointer import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.api.symbols.KaScriptSymbol import org.jetbrains.kotlin.analysis.api.symbols.KaSymbolOrigin -import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaPsiBasedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer -import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.descriptors.ScriptDescriptor import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.psi.KtScript @@ -41,6 +40,6 @@ get() = withValidityAssertion { script.nameAsSafeName } override fun createPointer(): KaSymbolPointer<KaScriptSymbol> = withValidityAssertion { - KaPsiBasedSymbolPointer.createForSymbolFromSource<KaScriptSymbol>(this) ?: KaFe10NeverRestoringSymbolPointer() + KaBasePsiSymbolPointer.createForSymbolFromSource<KaScriptSymbol>(this) ?: KaFe10NeverRestoringSymbolPointer() } }
diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiTypeAliasSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiTypeAliasSymbol.kt index 85dcffc..27294eb 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiTypeAliasSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiTypeAliasSymbol.kt
@@ -16,11 +16,11 @@ import org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased.base.kaSymbolLocation 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.impl.base.symbols.pointers.KaBasePsiSymbolPointer import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.api.symbols.KaSymbolLocation import org.jetbrains.kotlin.analysis.api.symbols.KaTypeAliasSymbol import org.jetbrains.kotlin.analysis.api.symbols.KaTypeParameterSymbol -import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaPsiBasedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer import org.jetbrains.kotlin.analysis.api.types.KaType import org.jetbrains.kotlin.descriptors.TypeAliasDescriptor @@ -64,7 +64,7 @@ override val isExpect: Boolean get() = withValidityAssertion { descriptor?.isExpect ?: psi.hasExpectModifier() } override fun createPointer(): KaSymbolPointer<KaTypeAliasSymbol> = withValidityAssertion { - KaPsiBasedSymbolPointer.createForSymbolFromSource<KaTypeAliasSymbol>(this) ?: KaFe10NeverRestoringSymbolPointer() + KaBasePsiSymbolPointer.createForSymbolFromSource<KaTypeAliasSymbol>(this) ?: KaFe10NeverRestoringSymbolPointer() } override fun equals(other: Any?): Boolean = isEqualTo(other)
diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiTypeParameterSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiTypeParameterSymbol.kt index a1f76e6..dc54293 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiTypeParameterSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiTypeParameterSymbol.kt
@@ -13,10 +13,10 @@ import org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased.base.KaFe10PsiSymbol import org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased.base.kaSymbolLocation import org.jetbrains.kotlin.analysis.api.descriptors.utils.cached +import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBasePsiSymbolPointer import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.api.symbols.KaSymbolLocation import org.jetbrains.kotlin.analysis.api.symbols.KaTypeParameterSymbol -import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaPsiBasedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer import org.jetbrains.kotlin.analysis.api.types.KaType import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor @@ -54,7 +54,7 @@ get() = withValidityAssertion { psi.nameAsSafeName } override fun createPointer(): KaSymbolPointer<KaTypeParameterSymbol> = withValidityAssertion { - KaPsiBasedSymbolPointer.createForSymbolFromSource<KaTypeParameterSymbol>(this) ?: KaFe10NeverRestoringSymbolPointer() + KaBasePsiSymbolPointer.createForSymbolFromSource<KaTypeParameterSymbol>(this) ?: KaFe10NeverRestoringSymbolPointer() } override fun equals(other: Any?): Boolean = isEqualTo(other)
diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiValueParameterSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiValueParameterSymbol.kt index 453b472..577de87 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiValueParameterSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KaFe10PsiValueParameterSymbol.kt
@@ -17,10 +17,10 @@ import org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased.base.createErrorType 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.impl.base.symbols.pointers.KaBasePsiSymbolPointer import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.api.symbols.KaKotlinPropertySymbol import org.jetbrains.kotlin.analysis.api.symbols.KaValueParameterSymbol -import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaPsiBasedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer import org.jetbrains.kotlin.analysis.api.types.KaType import org.jetbrains.kotlin.descriptors.ValueParameterDescriptor @@ -81,7 +81,7 @@ } override fun createPointer(): KaSymbolPointer<KaValueParameterSymbol> = withValidityAssertion { - KaPsiBasedSymbolPointer.createForSymbolFromSource<KaValueParameterSymbol>(this) ?: KaFe10NeverRestoringSymbolPointer() + KaBasePsiSymbolPointer.createForSymbolFromSource<KaValueParameterSymbol>(this) ?: KaFe10NeverRestoringSymbolPointer() } override fun equals(other: Any?): Boolean = isEqualTo(other)
diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirBackingFieldSymbol.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirBackingFieldSymbol.kt index 752d687..892ef70 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirBackingFieldSymbol.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirBackingFieldSymbol.kt
@@ -56,7 +56,7 @@ get() = withValidityAssertion { owningKaProperty.isVal } override fun createPointer(): KaSymbolPointer<KaBackingFieldSymbol> = withValidityAssertion { - KaFirBackingFieldSymbolPointer(owningKaProperty.createPointer()) + KaFirBackingFieldSymbolPointer(owningKaProperty.createPointer(), this) } override fun equals(other: Any?): Boolean = this === other ||
diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirConstructorSymbol.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirConstructorSymbol.kt index 195f3d4..8bd3080 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirConstructorSymbol.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirConstructorSymbol.kt
@@ -114,12 +114,14 @@ KaFirTypeAliasedConstructorMemberPointer( analysisSession.createOwnerPointer(this), FirCallableSignature.createSignature(firSymbol), + this ) } else { KaFirConstructorSymbolPointer( analysisSession.createOwnerPointer(this), isPrimary, FirCallableSignature.createSignature(firSymbol), + this ) } }
diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirDefaultPropertyGetterSymbol.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirDefaultPropertyGetterSymbol.kt index 25453de..8f0b35a 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirDefaultPropertyGetterSymbol.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirDefaultPropertyGetterSymbol.kt
@@ -131,7 +131,7 @@ get() = withValidityAssertion { owningKaProperty.origin } override fun createPointer(): KaSymbolPointer<KaPropertyGetterSymbol> = withValidityAssertion { - KaBasePropertyGetterSymbolPointer(owningKaProperty.createPointer()) + KaBasePropertyGetterSymbolPointer(owningKaProperty.createPointer(), this) } override fun equals(other: Any?): Boolean = this === other ||
diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirDefaultPropertySetterSymbol.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirDefaultPropertySetterSymbol.kt index 3925069..417b86b 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirDefaultPropertySetterSymbol.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirDefaultPropertySetterSymbol.kt
@@ -141,7 +141,7 @@ get() = withValidityAssertion { owningKaProperty.origin } override fun createPointer(): KaSymbolPointer<KaPropertySetterSymbol> = withValidityAssertion { - KaBasePropertySetterSymbolPointer(owningKaProperty.createPointer()) + KaBasePropertySetterSymbolPointer(owningKaProperty.createPointer(), this) } override fun equals(other: Any?): Boolean = this === other ||
diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirDefaultSetterValueParameter.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirDefaultSetterValueParameter.kt index 31536fd..7c807da 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirDefaultSetterValueParameter.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirDefaultSetterValueParameter.kt
@@ -77,7 +77,7 @@ } override fun createPointer(): KaSymbolPointer<KaValueParameterSymbol> = withValidityAssertion { - KaBaseValueParameterFromDefaultSetterSymbolPointer(owningKaSetter.owningKaProperty.createPointer()) + KaBaseValueParameterFromDefaultSetterSymbolPointer(owningKaSetter.owningKaProperty.createPointer(), this) } override val origin: KaSymbolOrigin
diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirEnumEntryInitializerSymbol.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirEnumEntryInitializerSymbol.kt index bb4d193..1cc904b 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirEnumEntryInitializerSymbol.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirEnumEntryInitializerSymbol.kt
@@ -9,9 +9,9 @@ import org.jetbrains.kotlin.analysis.api.fir.KaFirSession import org.jetbrains.kotlin.analysis.api.fir.symbols.pointers.KaFirEnumEntryInitializerSymbolPointer import org.jetbrains.kotlin.analysis.api.fir.symbols.pointers.createOwnerPointer +import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBasePsiSymbolPointer import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.api.symbols.KaEnumEntryInitializerSymbol -import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaPsiBasedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer import org.jetbrains.kotlin.fir.symbols.impl.FirAnonymousObjectSymbol @@ -32,7 +32,7 @@ * entry initializers are classes in FE10.) */ override fun createPointer(): KaSymbolPointer<KaFirEnumEntryInitializerSymbol> = withValidityAssertion { - KaPsiBasedSymbolPointer.createForSymbolFromSource<KaFirEnumEntryInitializerSymbol>(this) - ?: KaFirEnumEntryInitializerSymbolPointer(analysisSession.createOwnerPointer(this)) + KaBasePsiSymbolPointer.createForSymbolFromSource<KaFirEnumEntryInitializerSymbol>(this) + ?: KaFirEnumEntryInitializerSymbolPointer(analysisSession.createOwnerPointer(this), this) } }
diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirEnumEntrySymbol.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirEnumEntrySymbol.kt index 5e53de8..a8e6f10 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirEnumEntrySymbol.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirEnumEntrySymbol.kt
@@ -85,7 +85,7 @@ override fun createPointer(): KaSymbolPointer<KaEnumEntrySymbol> = withValidityAssertion { psiBasedSymbolPointerOfTypeIfSource<KaEnumEntrySymbol>() - ?: KaFirEnumEntrySymbolPointer(analysisSession.createOwnerPointer(this), name) + ?: KaFirEnumEntrySymbolPointer(analysisSession.createOwnerPointer(this), name, this) } override fun equals(other: Any?): Boolean = psiOrSymbolEquals(other)
diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirJavaFieldSymbol.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirJavaFieldSymbol.kt index 4444a87..03fd22d 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirJavaFieldSymbol.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirJavaFieldSymbol.kt
@@ -47,7 +47,7 @@ override val isStatic: Boolean get() = withValidityAssertion { firSymbol.isStatic } override fun createPointer(): KaSymbolPointer<KaJavaFieldSymbol> = withValidityAssertion { - KaFirJavaFieldSymbolPointer(analysisSession.createOwnerPointer(this), name, firSymbol.isStatic) + KaFirJavaFieldSymbolPointer(analysisSession.createOwnerPointer(this), name, firSymbol.isStatic, this) } override fun equals(other: Any?): Boolean = symbolEquals(other)
diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirKotlinPropertySymbol.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirKotlinPropertySymbol.kt index 603e3ee..b1e722a 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirKotlinPropertySymbol.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirKotlinPropertySymbol.kt
@@ -124,28 +124,30 @@ override fun createPointer(): KaSymbolPointer<KaKotlinPropertySymbol> = withValidityAssertion { psiBasedSymbolPointerOfTypeIfSource<KaVariableSymbol>()?.let { - return KaFirPsiBasedPropertySymbolPointer(it) + return KaFirPsiBasedPropertySymbolPointer(it, this) } when (val kind = location) { KaSymbolLocation.TOP_LEVEL -> { if (firSymbol.fir.origin is FirDeclarationOrigin.ScriptCustomization.ResultProperty) { - KaFirResultPropertySymbolPointer(analysisSession.createOwnerPointer(this)) + KaFirResultPropertySymbolPointer(analysisSession.createOwnerPointer(this), this) } else { KaFirTopLevelPropertySymbolPointer( firSymbol.callableId, FirCallableSignature.createSignature(firSymbol), + this ) } } KaSymbolLocation.CLASS -> when (origin) { - KaSymbolOrigin.JS_DYNAMIC -> KaFirDynamicPropertySymbolPointer(name) + KaSymbolOrigin.JS_DYNAMIC -> KaFirDynamicPropertySymbolPointer(name, this) else -> KaFirMemberPropertySymbolPointer( ownerPointer = analysisSession.createOwnerPointer(this), name = name, signature = FirCallableSignature.createSignature(firSymbol), isStatic = firSymbol.isStatic, + originalSymbol = this ) }
diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirLocalVariableSymbol.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirLocalVariableSymbol.kt index 3090747..e6920df 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirLocalVariableSymbol.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirLocalVariableSymbol.kt
@@ -57,7 +57,7 @@ psiBasedSymbolPointerOfTypeIfSource<KaLocalVariableSymbol>()?.let { return it } if (firSymbol.fir.source?.kind == KtFakeSourceElementKind.ScriptParameter) { - return KaFirScriptParameterSymbolPointer(name, analysisSession.createOwnerPointer(this)) + return KaFirScriptParameterSymbolPointer(name, analysisSession.createOwnerPointer(this), this) } throw KaCannotCreateSymbolPointerForLocalLibraryDeclarationException(name.asString())
diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirNamedClassSymbolBase.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirNamedClassSymbolBase.kt index ea5e1f1..45484d9 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirNamedClassSymbolBase.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirNamedClassSymbolBase.kt
@@ -69,13 +69,18 @@ ) { withSymbolAttachment("symbol", analysisSession, this@KaFirNamedClassSymbolBase) } - KaFirNestedInLocalClassFromCompilerPluginSymbolPointer(container.createPointer(), name, firOrigin.key) + KaFirNestedInLocalClassFromCompilerPluginSymbolPointer( + container.createPointer(), + name, + firOrigin.key, + this + ) } else { - KaFirClassLikeSymbolPointer(classId, KaNamedClassSymbol::class) + KaFirClassLikeSymbolPointer(classId, KaNamedClassSymbol::class, this) } } KaSymbolLocation.TOP_LEVEL -> - KaFirClassLikeSymbolPointer(classId!!, KaNamedClassSymbol::class) + KaFirClassLikeSymbolPointer(classId!!, KaNamedClassSymbol::class, this) else -> throw KaUnsupportedSymbolLocation(this::class, symbolKind) }
diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirNamedFunctionSymbol.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirNamedFunctionSymbol.kt index d68ba53..1bcae66 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirNamedFunctionSymbol.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirNamedFunctionSymbol.kt
@@ -200,15 +200,17 @@ KaSymbolLocation.TOP_LEVEL -> KaFirTopLevelFunctionSymbolPointer( firSymbol.callableId, FirCallableSignature.createSignature(firSymbol), + this ) KaSymbolLocation.CLASS -> when (origin) { - KaSymbolOrigin.JS_DYNAMIC -> KaFirDynamicFunctionSymbolPointer(name) + KaSymbolOrigin.JS_DYNAMIC -> KaFirDynamicFunctionSymbolPointer(name, this) else -> KaFirMemberFunctionSymbolPointer( analysisSession.createOwnerPointer(this), name, FirCallableSignature.createSignature(firSymbol), isStatic = firSymbol.isStatic, + originalSymbol = this ) }
diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirPackageSymbol.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirPackageSymbol.kt index 590fdc0..5e67e69 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirPackageSymbol.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirPackageSymbol.kt
@@ -36,7 +36,7 @@ get() = withValidityAssertion { KaSymbolOrigin.SOURCE } // TODO override fun createPointer(): KaSymbolPointer<KaPackageSymbol> = withValidityAssertion { - KaFirPackageSymbolPointer(fqName) + KaFirPackageSymbolPointer(fqName, this) } override fun equals(other: Any?): Boolean = this === other || other is KaFirPackageSymbol && other.fqName == fqName
diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirPropertyGetterSymbol.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirPropertyGetterSymbol.kt index 09eb31e..afc3b25 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirPropertyGetterSymbol.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirPropertyGetterSymbol.kt
@@ -132,7 +132,7 @@ override fun createPointer(): KaSymbolPointer<KaPropertyGetterSymbol> = withValidityAssertion { psiBasedSymbolPointerOfTypeIfSource<KaPropertyGetterSymbol>() - ?: KaBasePropertyGetterSymbolPointer(propertySymbolPointer = owningKaProperty.createPointer()) + ?: KaBasePropertyGetterSymbolPointer(propertySymbolPointer = owningKaProperty.createPointer(), originalSymbol = this) } override fun equals(other: Any?): Boolean = psiOrSymbolEquals(other)
diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirPropertySetterSymbol.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirPropertySetterSymbol.kt index a401462..82a5edf 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirPropertySetterSymbol.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirPropertySetterSymbol.kt
@@ -154,7 +154,7 @@ override fun createPointer(): KaSymbolPointer<KaPropertySetterSymbol> = withValidityAssertion { psiBasedSymbolPointerOfTypeIfSource<KaPropertySetterSymbol>() - ?: KaBasePropertySetterSymbolPointer(owningKaProperty.createPointer()) + ?: KaBasePropertySetterSymbolPointer(owningKaProperty.createPointer(), this) } override fun equals(other: Any?): Boolean = psiOrSymbolEquals(other)
diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirPsiSymbol.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirPsiSymbol.kt index 4163bce..afc31d8 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirPsiSymbol.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirPsiSymbol.kt
@@ -18,9 +18,8 @@ import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.api.projectStructure.KaLibrarySourceModule import org.jetbrains.kotlin.analysis.api.symbols.* -import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaPsiBasedSymbolPointer +import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaPsiSymbolPointerCreator import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer -import org.jetbrains.kotlin.analysis.api.symbols.pointers.symbolPointerOfType import org.jetbrains.kotlin.analysis.api.types.KaType import org.jetbrains.kotlin.analysis.low.level.api.fir.api.resolveToFirSymbolOfType import org.jetbrains.kotlin.asJava.classes.lazyPub @@ -214,14 +213,18 @@ } /** - * Potentially, we may use [KaFirKtBasedSymbol.backingPsi] to create [KaPsiBasedSymbolPointer] for library elements as well, + * Potentially, we may use [KaFirKtBasedSymbol.backingPsi] to create [org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBasePsiSymbolPointer] for library elements as well, * but it triggers AST tree calculation. * * Another potential issue: the library PSI may represent both [KaSymbolOrigin.SOURCE] and as [KaSymbolOrigin.LIBRARY], * so it is not so simple to distinguish between them to restore the correct symbol. */ internal inline fun <reified S : KaSymbol> KaFirKtBasedSymbol<*, *>.psiBasedSymbolPointerOfTypeIfSource(): KaSymbolPointer<S>? { - return ifSource { backingPsi?.symbolPointerOfType<S>() } + return ifSource { + backingPsi?.let { + KaPsiSymbolPointerCreator.symbolPointerOfType(it, this as S) + } + } } internal inline fun <reified S : FirBasedSymbol<*>> lazyFirSymbol(
diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirReceiverParameterSymbol.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirReceiverParameterSymbol.kt index 597ad89..11bb6f5 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirReceiverParameterSymbol.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirReceiverParameterSymbol.kt
@@ -83,7 +83,7 @@ get() = withValidityAssertion { FirResolvedDeclarationStatusImpl.DEFAULT_STATUS_FOR_STATUSLESS_DECLARATIONS.visibility } override fun createPointer(): KaSymbolPointer<KaReceiverParameterSymbol> = withValidityAssertion { - KaBaseReceiverParameterSymbolPointer(owningKaSymbol.createPointer()) + KaBaseReceiverParameterSymbolPointer(owningKaSymbol.createPointer(), this) } override val annotations: KaAnnotationList
diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirSamConstructorSymbol.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirSamConstructorSymbol.kt index bfa4799..92cbcea 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirSamConstructorSymbol.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirSamConstructorSymbol.kt
@@ -72,7 +72,7 @@ override fun createPointer(): KaSymbolPointer<KaSamConstructorSymbol> = withValidityAssertion { val callableId = firSymbol.callableId - return KaFirSamConstructorSymbolPointer(ClassId(callableId.packageName, callableId.callableName)) + return KaFirSamConstructorSymbolPointer(ClassId(callableId.packageName, callableId.callableName), this) } override fun equals(other: Any?): Boolean = symbolEquals(other)
diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirScriptSymbol.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirScriptSymbol.kt index 3d6c6e7..e970fa7 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirScriptSymbol.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirScriptSymbol.kt
@@ -55,7 +55,7 @@ withFirSymbolEntry("firScript", firSymbol) } - file.createPointer().let(::KaFirScriptSymbolPointer) + KaFirScriptSymbolPointer(file.createPointer(), this@KaFirScriptSymbol) } }
diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirSyntheticJavaPropertySymbol.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirSyntheticJavaPropertySymbol.kt index 0f5b088..6ada779 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirSyntheticJavaPropertySymbol.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirSyntheticJavaPropertySymbol.kt
@@ -97,6 +97,7 @@ ownerPointer = analysisSession.createOwnerPointer(this), propertyName = name, isSynthetic = firSymbol is SyntheticSymbol, + originalSymbol = this ) }
diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirSyntheticPropertyGetterSymbol.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirSyntheticPropertyGetterSymbol.kt index 996c9f7..c4d1b61 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirSyntheticPropertyGetterSymbol.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirSyntheticPropertyGetterSymbol.kt
@@ -75,7 +75,7 @@ get() = withValidityAssertion { firSymbol.delegateFunctionSymbol.callableId } override fun createPointer(): KaSymbolPointer<KaPropertyGetterSymbol> = withValidityAssertion { - KaBasePropertyGetterSymbolPointer(propertySymbolPointer = analysisSession.createOwnerPointer(this)) + KaBasePropertyGetterSymbolPointer(propertySymbolPointer = analysisSession.createOwnerPointer(this), originalSymbol = this) } override fun equals(other: Any?): Boolean = symbolEquals(other)
diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirSyntheticPropertySetterSymbol.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirSyntheticPropertySetterSymbol.kt index fdbe371..57f4351 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirSyntheticPropertySetterSymbol.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirSyntheticPropertySetterSymbol.kt
@@ -83,7 +83,7 @@ get() = withValidityAssertion { firSymbol.fir.hasStableParameterNames } override fun createPointer(): KaSymbolPointer<KaPropertySetterSymbol> = withValidityAssertion { - KaBasePropertySetterSymbolPointer(propertySymbolPointer = analysisSession.createOwnerPointer(this)) + KaBasePropertySetterSymbolPointer(propertySymbolPointer = analysisSession.createOwnerPointer(this), this) } override fun equals(other: Any?): Boolean = symbolEquals(other)
diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirTypeAliasSymbol.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirTypeAliasSymbol.kt index 23cb738..a870379 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirTypeAliasSymbol.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirTypeAliasSymbol.kt
@@ -15,11 +15,7 @@ import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaCannotCreateSymbolPointerForLocalLibraryDeclarationException import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaUnsupportedSymbolLocation import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion -import org.jetbrains.kotlin.analysis.api.symbols.KaSymbolLocation -import org.jetbrains.kotlin.analysis.api.symbols.KaSymbolVisibility -import org.jetbrains.kotlin.analysis.api.symbols.KaTypeAliasSymbol -import org.jetbrains.kotlin.analysis.api.symbols.KaTypeParameterSymbol -import org.jetbrains.kotlin.analysis.api.symbols.asKaSymbolVisibility +import org.jetbrains.kotlin.analysis.api.symbols.* import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer import org.jetbrains.kotlin.analysis.api.types.KaType import org.jetbrains.kotlin.descriptors.Visibilities @@ -100,7 +96,11 @@ KaSymbolLocation.LOCAL -> throw KaCannotCreateSymbolPointerForLocalLibraryDeclarationException(classId?.asString() ?: name.asString()) - KaSymbolLocation.CLASS, KaSymbolLocation.TOP_LEVEL -> KaFirClassLikeSymbolPointer(classId!!, KaTypeAliasSymbol::class) + KaSymbolLocation.CLASS, KaSymbolLocation.TOP_LEVEL -> KaFirClassLikeSymbolPointer( + classId!!, + KaTypeAliasSymbol::class, + this + ) else -> throw KaUnsupportedSymbolLocation(this::class, symbolKind) } }
diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirTypeParameterSymbolBase.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirTypeParameterSymbolBase.kt index 053f072..2523851 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirTypeParameterSymbolBase.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirTypeParameterSymbolBase.kt
@@ -43,6 +43,7 @@ ownerPointer = analysisSession.createOwnerPointer(this), name = name, index = typeParameters.indexOf(firSymbol), + originalSymbol = this ) }
diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirValueParameterSymbol.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirValueParameterSymbol.kt index 8948068..12e8291 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirValueParameterSymbol.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirValueParameterSymbol.kt
@@ -116,6 +116,7 @@ ownerPointer = analysisSession.createOwnerPointer(this), name = name, index = (ownerSymbol.firSymbol.fir as FirFunction).valueParameters.indexOf(firSymbol.fir), + originalSymbol = this ) }
diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirBackingFieldSymbolPointer.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirBackingFieldSymbolPointer.kt index 37e394d..cfb50b5 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirBackingFieldSymbolPointer.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirBackingFieldSymbolPointer.kt
@@ -8,6 +8,7 @@ import org.jetbrains.kotlin.analysis.api.KaImplementationDetail import org.jetbrains.kotlin.analysis.api.KaSession import org.jetbrains.kotlin.analysis.api.fir.KaFirSession +import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBaseCachedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.KaBackingFieldSymbol import org.jetbrains.kotlin.analysis.api.symbols.KaKotlinPropertySymbol import org.jetbrains.kotlin.analysis.api.symbols.KaSymbol @@ -15,9 +16,10 @@ internal class KaFirBackingFieldSymbolPointer( private val propertySymbolPointer: KaSymbolPointer<KaKotlinPropertySymbol>, -) : KaSymbolPointer<KaBackingFieldSymbol>() { + originalSymbol: KaBackingFieldSymbol?, +) : KaBaseCachedSymbolPointer<KaBackingFieldSymbol>(originalSymbol) { @KaImplementationDetail - override fun restoreSymbol(analysisSession: KaSession): KaBackingFieldSymbol? { + override fun restoreIfNotCached(analysisSession: KaSession): KaBackingFieldSymbol? { require(analysisSession is KaFirSession) val propertySymbol = with(analysisSession) { propertySymbolPointer.restoreSymbol()
diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirClassLikeSymbolPointer.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirClassLikeSymbolPointer.kt index 77ee82c..3dd3360 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirClassLikeSymbolPointer.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirClassLikeSymbolPointer.kt
@@ -8,6 +8,7 @@ import org.jetbrains.kotlin.analysis.api.KaImplementationDetail import org.jetbrains.kotlin.analysis.api.KaSession import org.jetbrains.kotlin.analysis.api.fir.KaFirSession +import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBaseCachedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.KaClassLikeSymbol import org.jetbrains.kotlin.analysis.api.symbols.KaSymbol import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer @@ -17,9 +18,10 @@ internal class KaFirClassLikeSymbolPointer<T : KaClassLikeSymbol>( private val classId: ClassId, private val expectedClass: KClass<T>, -) : KaSymbolPointer<T>() { + originalSymbol: T?, +) : KaBaseCachedSymbolPointer<T>(originalSymbol) { @KaImplementationDetail - override fun restoreSymbol(analysisSession: KaSession): T? { + override fun restoreIfNotCached(analysisSession: KaSession): T? { require(analysisSession is KaFirSession) val classLikeSymbol = analysisSession.firSymbolBuilder.classifierBuilder.buildClassLikeSymbolByClassId(classId) ?: return null if (!expectedClass.isInstance(classLikeSymbol)) return null
diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirConstructorSymbolPointer.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirConstructorSymbolPointer.kt index c459c07..75d4de0 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirConstructorSymbolPointer.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirConstructorSymbolPointer.kt
@@ -19,7 +19,8 @@ ownerPointer: KaSymbolPointer<KaDeclarationContainerSymbol>, private val isPrimary: Boolean, private val signature: FirCallableSignature, -) : KaFirMemberSymbolPointer<KaConstructorSymbol>(ownerPointer) { + originalSymbol: KaConstructorSymbol?, +) : KaFirMemberSymbolPointer<KaConstructorSymbol>(ownerPointer, originalSymbol = originalSymbol) { override fun KaFirSession.chooseCandidateAndCreateSymbol( candidates: FirScope, firSession: FirSession,
diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirDynamicFunctionSymbolPointer.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirDynamicFunctionSymbolPointer.kt index 9f65f11..8310544 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirDynamicFunctionSymbolPointer.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirDynamicFunctionSymbolPointer.kt
@@ -7,6 +7,7 @@ import org.jetbrains.kotlin.analysis.api.KaSession import org.jetbrains.kotlin.analysis.api.fir.KaFirSession +import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBaseCachedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.KaNamedFunctionSymbol import org.jetbrains.kotlin.analysis.api.symbols.KaSymbol import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer @@ -16,9 +17,10 @@ internal class KaFirDynamicFunctionSymbolPointer( private val name: Name, -) : KaSymbolPointer<KaNamedFunctionSymbol>() { + originalSymbol: KaNamedFunctionSymbol?, +) : KaBaseCachedSymbolPointer<KaNamedFunctionSymbol>(originalSymbol) { - override fun restoreSymbol(analysisSession: KaSession): KaNamedFunctionSymbol { + override fun restoreIfNotCached(analysisSession: KaSession): KaNamedFunctionSymbol { require(analysisSession is KaFirSession) val dynamicScope = analysisSession.firSession.dynamicMembersStorage.getDynamicScopeFor(analysisSession.getScopeSessionFor(analysisSession.firSession))
diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirDynamicPropertySymbolPointer.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirDynamicPropertySymbolPointer.kt index 58ed1f0..ebbb207 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirDynamicPropertySymbolPointer.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirDynamicPropertySymbolPointer.kt
@@ -7,6 +7,7 @@ import org.jetbrains.kotlin.analysis.api.KaSession import org.jetbrains.kotlin.analysis.api.fir.KaFirSession +import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBaseCachedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.KaKotlinPropertySymbol import org.jetbrains.kotlin.analysis.api.symbols.KaSymbol import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer @@ -16,9 +17,10 @@ internal class KaFirDynamicPropertySymbolPointer( private val name: Name, -) : KaSymbolPointer<KaKotlinPropertySymbol>() { + originalSymbol: KaKotlinPropertySymbol?, +) : KaBaseCachedSymbolPointer<KaKotlinPropertySymbol>(originalSymbol) { - override fun restoreSymbol(analysisSession: KaSession): KaKotlinPropertySymbol { + override fun restoreIfNotCached(analysisSession: KaSession): KaKotlinPropertySymbol { require(analysisSession is KaFirSession) val dynamicScope = analysisSession.firSession.dynamicMembersStorage.getDynamicScopeFor(analysisSession.getScopeSessionFor(analysisSession.firSession))
diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirEnumEntryInitializerSymbolPointer.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirEnumEntryInitializerSymbolPointer.kt index 16a7442..32a4b62 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirEnumEntryInitializerSymbolPointer.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirEnumEntryInitializerSymbolPointer.kt
@@ -10,14 +10,16 @@ import org.jetbrains.kotlin.analysis.api.fir.KaFirSession import org.jetbrains.kotlin.analysis.api.fir.symbols.KaFirEnumEntryInitializerSymbol import org.jetbrains.kotlin.analysis.api.fir.symbols.KaFirEnumEntrySymbol +import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBaseCachedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.KaSymbol import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer internal class KaFirEnumEntryInitializerSymbolPointer( private val ownerPointer: KaSymbolPointer<KaFirEnumEntrySymbol>, -) : KaSymbolPointer<KaFirEnumEntryInitializerSymbol>() { + originalSymbol: KaFirEnumEntryInitializerSymbol?, +) : KaBaseCachedSymbolPointer<KaFirEnumEntryInitializerSymbol>(originalSymbol) { @KaImplementationDetail - override fun restoreSymbol(analysisSession: KaSession): KaFirEnumEntryInitializerSymbol? { + override fun restoreIfNotCached(analysisSession: KaSession): KaFirEnumEntryInitializerSymbol? { require(analysisSession is KaFirSession) val owner = with(analysisSession) { ownerPointer.restoreSymbol()
diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirEnumEntrySymbolPointer.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirEnumEntrySymbolPointer.kt index 5972c1b..5caf885 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirEnumEntrySymbolPointer.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirEnumEntrySymbolPointer.kt
@@ -9,6 +9,7 @@ import org.jetbrains.kotlin.analysis.api.KaSession import org.jetbrains.kotlin.analysis.api.fir.KaFirSession import org.jetbrains.kotlin.analysis.api.fir.utils.firSymbol +import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBaseCachedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.KaClassSymbol import org.jetbrains.kotlin.analysis.api.symbols.KaEnumEntrySymbol import org.jetbrains.kotlin.analysis.api.symbols.KaSymbol @@ -21,9 +22,10 @@ internal class KaFirEnumEntrySymbolPointer( private val ownerPointer: KaSymbolPointer<KaClassSymbol>, private val name: Name, -) : KaSymbolPointer<KaEnumEntrySymbol>() { + originalSymbol: KaEnumEntrySymbol?, +) : KaBaseCachedSymbolPointer<KaEnumEntrySymbol>(originalSymbol) { @KaImplementationDetail - override fun restoreSymbol(analysisSession: KaSession): KaEnumEntrySymbol? { + override fun restoreIfNotCached(analysisSession: KaSession): KaEnumEntrySymbol? { require(analysisSession is KaFirSession) val owner = with(analysisSession) { ownerPointer.restoreSymbol()
diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirJavaFieldSymbolPointer.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirJavaFieldSymbolPointer.kt index 85093de..e06d9e0 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirJavaFieldSymbolPointer.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirJavaFieldSymbolPointer.kt
@@ -20,7 +20,8 @@ ownerPointer: KaSymbolPointer<KaDeclarationContainerSymbol>, private val fieldName: Name, isStatic: Boolean, -) : KaFirMemberSymbolPointer<KaJavaFieldSymbol>(ownerPointer, isStatic) { + originalSymbol: KaJavaFieldSymbol?, +) : KaFirMemberSymbolPointer<KaJavaFieldSymbol>(ownerPointer, isStatic, originalSymbol) { override fun KaFirSession.chooseCandidateAndCreateSymbol( candidates: FirScope, firSession: FirSession,
diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirJavaSyntheticPropertySymbolPointer.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirJavaSyntheticPropertySymbolPointer.kt index 523fe9a..dbb67d1 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirJavaSyntheticPropertySymbolPointer.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirJavaSyntheticPropertySymbolPointer.kt
@@ -24,7 +24,8 @@ ownerPointer: KaSymbolPointer<KaDeclarationContainerSymbol>, private val propertyName: Name, private val isSynthetic: Boolean, -) : KaFirMemberSymbolPointer<KaSyntheticJavaPropertySymbol>(ownerPointer) { + originalSymbol: KaSyntheticJavaPropertySymbol?, +) : KaFirMemberSymbolPointer<KaSyntheticJavaPropertySymbol>(ownerPointer, originalSymbol = originalSymbol) { override fun KaFirSession.chooseCandidateAndCreateSymbol( candidates: FirScope, firSession: FirSession,
diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirMemberFunctionSymbolPointer.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirMemberFunctionSymbolPointer.kt index e7bd5da..6b5095f 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirMemberFunctionSymbolPointer.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirMemberFunctionSymbolPointer.kt
@@ -21,7 +21,8 @@ private val name: Name, private val signature: FirCallableSignature, isStatic: Boolean, -) : KaFirMemberSymbolPointer<KaNamedFunctionSymbol>(ownerPointer, isStatic) { + originalSymbol: KaNamedFunctionSymbol?, +) : KaFirMemberSymbolPointer<KaNamedFunctionSymbol>(ownerPointer, isStatic, originalSymbol) { override fun KaFirSession.chooseCandidateAndCreateSymbol( candidates: FirScope, firSession: FirSession
diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirMemberPropertySymbolPointer.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirMemberPropertySymbolPointer.kt index be3f8e4..cbcc05f 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirMemberPropertySymbolPointer.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirMemberPropertySymbolPointer.kt
@@ -21,7 +21,8 @@ private val name: Name, private val signature: FirCallableSignature, isStatic: Boolean, -) : KaFirMemberSymbolPointer<KaKotlinPropertySymbol>(ownerPointer, isStatic) { + originalSymbol: KaKotlinPropertySymbol?, +) : KaFirMemberSymbolPointer<KaKotlinPropertySymbol>(ownerPointer, isStatic, originalSymbol) { override fun KaFirSession.chooseCandidateAndCreateSymbol( candidates: FirScope, firSession: FirSession
diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirMemberSymbolPointer.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirMemberSymbolPointer.kt index f7d59a8..e3a4b55 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirMemberSymbolPointer.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirMemberSymbolPointer.kt
@@ -10,6 +10,7 @@ import org.jetbrains.kotlin.analysis.api.fir.KaFirSession import org.jetbrains.kotlin.analysis.api.fir.utils.firSymbol import org.jetbrains.kotlin.analysis.api.fir.utils.withSymbolAttachment +import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBaseCachedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.KaSymbol import org.jetbrains.kotlin.analysis.api.symbols.markers.KaDeclarationContainerSymbol import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer @@ -24,9 +25,10 @@ internal abstract class KaFirMemberSymbolPointer<S : KaSymbol>( private val ownerPointer: KaSymbolPointer<KaDeclarationContainerSymbol>, private val isStatic: Boolean = false, -) : KaSymbolPointer<S>() { + originalSymbol: S?, +) : KaBaseCachedSymbolPointer<S>(originalSymbol) { @KaImplementationDetail - final override fun restoreSymbol(analysisSession: KaSession): S? { + final override fun restoreIfNotCached(analysisSession: KaSession): S? { require(analysisSession is KaFirSession) val scope = with(analysisSession) { val ownerSymbol = ownerPointer.restoreSymbol() ?: return null
diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirNestedInLocalClassFromCompilerPluginSymbolPointer.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirNestedInLocalClassFromCompilerPluginSymbolPointer.kt index 011d592..1d25a2f 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirNestedInLocalClassFromCompilerPluginSymbolPointer.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirNestedInLocalClassFromCompilerPluginSymbolPointer.kt
@@ -10,6 +10,7 @@ import org.jetbrains.kotlin.analysis.api.KaSession import org.jetbrains.kotlin.analysis.api.fir.KaFirSession import org.jetbrains.kotlin.analysis.api.fir.utils.firSymbol +import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBaseCachedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.KaNamedClassSymbol import org.jetbrains.kotlin.analysis.api.symbols.KaSymbol import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer @@ -27,10 +28,11 @@ private val containingClassPointer: KaSymbolPointer<KaNamedClassSymbol>, private val name: Name, private val compilerPluginOrigin: GeneratedDeclarationKey, -) : KaSymbolPointer<KaNamedClassSymbol>() { + originalSymbol: KaNamedClassSymbol?, +) : KaBaseCachedSymbolPointer<KaNamedClassSymbol>(originalSymbol) { @KaImplementationDetail - override fun restoreSymbol(analysisSession: KaSession): KaNamedClassSymbol? { + override fun restoreIfNotCached(analysisSession: KaSession): KaNamedClassSymbol? { require(analysisSession is KaFirSession) val containingKaSymbol = containingClassPointer.restoreSymbol(analysisSession) ?: return null val containingFir = containingKaSymbol.firSymbol.fir as? FirRegularClass ?: return null
diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirPackageSymbolPointer.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirPackageSymbolPointer.kt index 4ea23cf..d0dc3fa 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirPackageSymbolPointer.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirPackageSymbolPointer.kt
@@ -8,14 +8,18 @@ import org.jetbrains.kotlin.analysis.api.KaImplementationDetail import org.jetbrains.kotlin.analysis.api.KaSession import org.jetbrains.kotlin.analysis.api.fir.KaFirSession +import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBaseCachedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.KaPackageSymbol import org.jetbrains.kotlin.analysis.api.symbols.KaSymbol import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer import org.jetbrains.kotlin.name.FqName -internal class KaFirPackageSymbolPointer(private val fqName: FqName) : KaSymbolPointer<KaPackageSymbol>() { +internal class KaFirPackageSymbolPointer( + private val fqName: FqName, + originalSymbol: KaPackageSymbol?, +) : KaBaseCachedSymbolPointer<KaPackageSymbol>(originalSymbol) { @KaImplementationDetail - override fun restoreSymbol(analysisSession: KaSession): KaPackageSymbol? { + override fun restoreIfNotCached(analysisSession: KaSession): KaPackageSymbol? { check(analysisSession is KaFirSession) return analysisSession.firSymbolBuilder.createPackageSymbolIfOneExists(fqName) }
diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirPsiBasedPropertySymbolPointer.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirPsiBasedPropertySymbolPointer.kt index 1feaba2..970665e 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirPsiBasedPropertySymbolPointer.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirPsiBasedPropertySymbolPointer.kt
@@ -7,6 +7,7 @@ import org.jetbrains.kotlin.analysis.api.KaImplementationDetail import org.jetbrains.kotlin.analysis.api.KaSession +import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBaseCachedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.KaKotlinPropertySymbol import org.jetbrains.kotlin.analysis.api.symbols.KaSymbol import org.jetbrains.kotlin.analysis.api.symbols.KaValueParameterSymbol @@ -15,9 +16,10 @@ internal class KaFirPsiBasedPropertySymbolPointer( private val variableSymbolPointer: KaSymbolPointer<KaVariableSymbol>, -) : KaSymbolPointer<KaKotlinPropertySymbol>() { + originalSymbol: KaKotlinPropertySymbol?, +) : KaBaseCachedSymbolPointer<KaKotlinPropertySymbol>(originalSymbol) { @KaImplementationDetail - override fun restoreSymbol(analysisSession: KaSession): KaKotlinPropertySymbol? = + override fun restoreIfNotCached(analysisSession: KaSession): KaKotlinPropertySymbol? = when (val variable = with(analysisSession) { variableSymbolPointer.restoreSymbol() }) { is KaKotlinPropertySymbol -> variable is KaValueParameterSymbol -> variable.generatedPrimaryConstructorProperty
diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirResultPropertySymbolPointer.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirResultPropertySymbolPointer.kt index aa682ca..38fe193 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirResultPropertySymbolPointer.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirResultPropertySymbolPointer.kt
@@ -9,6 +9,7 @@ import org.jetbrains.kotlin.analysis.api.KaSession import org.jetbrains.kotlin.analysis.api.fir.KaFirSession import org.jetbrains.kotlin.analysis.api.fir.utils.firSymbol +import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBaseCachedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.KaKotlinPropertySymbol import org.jetbrains.kotlin.analysis.api.symbols.KaScriptSymbol import org.jetbrains.kotlin.analysis.api.symbols.KaSymbol @@ -17,10 +18,12 @@ import org.jetbrains.kotlin.fir.declarations.FirProperty import org.jetbrains.kotlin.fir.declarations.FirScript -internal class KaFirResultPropertySymbolPointer(private val scriptPointer: KaSymbolPointer<KaScriptSymbol>) : - KaSymbolPointer<KaKotlinPropertySymbol>() { +internal class KaFirResultPropertySymbolPointer( + private val scriptPointer: KaSymbolPointer<KaScriptSymbol>, + originalSymbol: KaKotlinPropertySymbol?, +) : KaBaseCachedSymbolPointer<KaKotlinPropertySymbol>(originalSymbol) { @KaImplementationDetail - override fun restoreSymbol(analysisSession: KaSession): KaKotlinPropertySymbol? { + override fun restoreIfNotCached(analysisSession: KaSession): KaKotlinPropertySymbol? { require(analysisSession is KaFirSession) val script = with(analysisSession) { scriptPointer.restoreSymbol()?.firSymbol?.fir as? FirScript
diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirSamConstructorSymbolPointer.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirSamConstructorSymbolPointer.kt index a1eede6..fbe53d9 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirSamConstructorSymbolPointer.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirSamConstructorSymbolPointer.kt
@@ -7,6 +7,7 @@ import org.jetbrains.kotlin.analysis.api.KaImplementationDetail import org.jetbrains.kotlin.analysis.api.KaSession +import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBaseCachedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.KaSamConstructorSymbol import org.jetbrains.kotlin.analysis.api.symbols.KaSymbol import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer @@ -14,9 +15,10 @@ internal class KaFirSamConstructorSymbolPointer( private val ownerClassId: ClassId, -) : KaSymbolPointer<KaSamConstructorSymbol>() { + originalSymbol: KaSamConstructorSymbol?, +) : KaBaseCachedSymbolPointer<KaSamConstructorSymbol>(originalSymbol) { @KaImplementationDetail - override fun restoreSymbol(analysisSession: KaSession): KaSamConstructorSymbol? = with(analysisSession) { + override fun restoreIfNotCached(analysisSession: KaSession): KaSamConstructorSymbol? = with(analysisSession) { analysisSession.findClassLike(ownerClassId)?.samConstructor }
diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirScriptParameterSymbolPointer.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirScriptParameterSymbolPointer.kt index 354c759..a8f3121 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirScriptParameterSymbolPointer.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirScriptParameterSymbolPointer.kt
@@ -9,6 +9,7 @@ import org.jetbrains.kotlin.analysis.api.KaSession import org.jetbrains.kotlin.analysis.api.fir.KaFirSession import org.jetbrains.kotlin.analysis.api.fir.utils.firSymbol +import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBaseCachedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.KaLocalVariableSymbol import org.jetbrains.kotlin.analysis.api.symbols.KaScriptSymbol import org.jetbrains.kotlin.analysis.api.symbols.KaSymbol @@ -19,9 +20,10 @@ internal class KaFirScriptParameterSymbolPointer( private val parameterName: Name, private val scriptPointer: KaSymbolPointer<KaScriptSymbol>, -) : KaSymbolPointer<KaLocalVariableSymbol>() { + originalSymbol: KaLocalVariableSymbol?, +) : KaBaseCachedSymbolPointer<KaLocalVariableSymbol>(originalSymbol) { @KaImplementationDetail - override fun restoreSymbol(analysisSession: KaSession): KaLocalVariableSymbol? { + override fun restoreIfNotCached(analysisSession: KaSession): KaLocalVariableSymbol? { require(analysisSession is KaFirSession) val script = with(analysisSession) { scriptPointer.restoreSymbol()?.firSymbol?.fir as? FirScript
diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirScriptSymbolPointer.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirScriptSymbolPointer.kt index 247a892..04d655d 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirScriptSymbolPointer.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirScriptSymbolPointer.kt
@@ -9,6 +9,7 @@ import org.jetbrains.kotlin.analysis.api.KaSession import org.jetbrains.kotlin.analysis.api.fir.KaFirSession import org.jetbrains.kotlin.analysis.api.fir.utils.firSymbol +import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBaseCachedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.KaFileSymbol import org.jetbrains.kotlin.analysis.api.symbols.KaScriptSymbol import org.jetbrains.kotlin.analysis.api.symbols.KaSymbol @@ -16,9 +17,12 @@ import org.jetbrains.kotlin.fir.declarations.FirFile import org.jetbrains.kotlin.fir.declarations.FirScript -internal class KaFirScriptSymbolPointer(private val filePointer: KaSymbolPointer<KaFileSymbol>) : KaSymbolPointer<KaScriptSymbol>() { +internal class KaFirScriptSymbolPointer( + private val filePointer: KaSymbolPointer<KaFileSymbol>, + originalSymbol: KaScriptSymbol?, +) : KaBaseCachedSymbolPointer<KaScriptSymbol>(originalSymbol) { @KaImplementationDetail - override fun restoreSymbol(analysisSession: KaSession): KaScriptSymbol? { + override fun restoreIfNotCached(analysisSession: KaSession): KaScriptSymbol? { require(analysisSession is KaFirSession) val file = with(analysisSession) { filePointer.restoreSymbol()?.firSymbol?.fir as? FirFile
diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirTopLevelCallableSymbolPointer.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirTopLevelCallableSymbolPointer.kt index e0e1865..bb82ab5 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirTopLevelCallableSymbolPointer.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirTopLevelCallableSymbolPointer.kt
@@ -8,6 +8,7 @@ import org.jetbrains.kotlin.analysis.api.KaImplementationDetail import org.jetbrains.kotlin.analysis.api.KaSession import org.jetbrains.kotlin.analysis.api.fir.KaFirSession +import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBaseCachedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.KaCallableSymbol import org.jetbrains.kotlin.analysis.api.symbols.KaSymbol import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer @@ -17,10 +18,11 @@ import org.jetbrains.kotlin.name.CallableId internal abstract class KaTopLevelCallableSymbolPointer<S : KaCallableSymbol>( - private val callableId: CallableId -) : KaSymbolPointer<S>() { + private val callableId: CallableId, + originalSymbol: S?, +) : KaBaseCachedSymbolPointer<S>(originalSymbol) { @KaImplementationDetail - final override fun restoreSymbol(analysisSession: KaSession): S? { + final override fun restoreIfNotCached(analysisSession: KaSession): S? { require(analysisSession is KaFirSession) val candidates = analysisSession.getCallableSymbols(callableId) if (candidates.isEmpty()) return null
diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirTopLevelFunctionSymbolPointer.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirTopLevelFunctionSymbolPointer.kt index 01d9287..024388e 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirTopLevelFunctionSymbolPointer.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirTopLevelFunctionSymbolPointer.kt
@@ -18,7 +18,8 @@ internal class KaFirTopLevelFunctionSymbolPointer( callableId: CallableId, private val signature: FirCallableSignature, -) : KaTopLevelCallableSymbolPointer<KaNamedFunctionSymbol>(callableId) { + originalSymbol: KaNamedFunctionSymbol?, +) : KaTopLevelCallableSymbolPointer<KaNamedFunctionSymbol>(callableId, originalSymbol) { override fun KaFirSession.chooseCandidateAndCreateSymbol( candidates: Collection<FirCallableSymbol<*>>, firSession: FirSession
diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirTopLevelPropertySymbolPointer.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirTopLevelPropertySymbolPointer.kt index 4c87b33..7dc9aa3 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirTopLevelPropertySymbolPointer.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirTopLevelPropertySymbolPointer.kt
@@ -15,8 +15,11 @@ import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol import org.jetbrains.kotlin.name.CallableId -internal class KaFirTopLevelPropertySymbolPointer(callableId: CallableId, private val signature: FirCallableSignature) : - KaTopLevelCallableSymbolPointer<KaKotlinPropertySymbol>(callableId) { +internal class KaFirTopLevelPropertySymbolPointer( + callableId: CallableId, + private val signature: FirCallableSignature, + originalSymbol: KaKotlinPropertySymbol?, +) : KaTopLevelCallableSymbolPointer<KaKotlinPropertySymbol>(callableId, originalSymbol) { override fun KaFirSession.chooseCandidateAndCreateSymbol( candidates: Collection<FirCallableSymbol<*>>, firSession: FirSession,
diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirTypeAliasedConstructorMemberPointer.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirTypeAliasedConstructorMemberPointer.kt index 11ff215..deb4c66 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirTypeAliasedConstructorMemberPointer.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirTypeAliasedConstructorMemberPointer.kt
@@ -5,10 +5,10 @@ package org.jetbrains.kotlin.analysis.api.fir.symbols.pointers -import org.jetbrains.kotlin.analysis.api.KaImplementationDetail import org.jetbrains.kotlin.analysis.api.KaSession import org.jetbrains.kotlin.analysis.api.fir.KaFirSession import org.jetbrains.kotlin.analysis.api.fir.utils.firSymbol +import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBaseCachedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.KaConstructorSymbol import org.jetbrains.kotlin.analysis.api.symbols.KaSymbol import org.jetbrains.kotlin.analysis.api.symbols.KaTypeAliasSymbol @@ -35,9 +35,9 @@ internal class KaFirTypeAliasedConstructorMemberPointer( private val ownerPointer: KaSymbolPointer<KaTypeAliasSymbol>, private val signature: FirCallableSignature, -) : KaSymbolPointer<KaConstructorSymbol>() { - @KaImplementationDetail - override fun restoreSymbol(analysisSession: KaSession): KaConstructorSymbol? { + originalSymbol: KaConstructorSymbol?, +) : KaBaseCachedSymbolPointer<KaConstructorSymbol>(originalSymbol) { + override fun restoreIfNotCached(analysisSession: KaSession): KaConstructorSymbol? { require(analysisSession is KaFirSession) val scope = with(analysisSession) { val ownerSymbol = ownerPointer.restoreSymbol() ?: return null
diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirTypeParameterSymbolPointer.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirTypeParameterSymbolPointer.kt index ca8867d..d65892f 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirTypeParameterSymbolPointer.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirTypeParameterSymbolPointer.kt
@@ -8,6 +8,7 @@ import org.jetbrains.kotlin.analysis.api.KaImplementationDetail import org.jetbrains.kotlin.analysis.api.KaSession import org.jetbrains.kotlin.analysis.api.fir.KaFirSession +import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBaseCachedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.KaDeclarationSymbol import org.jetbrains.kotlin.analysis.api.symbols.KaSymbol import org.jetbrains.kotlin.analysis.api.symbols.KaTypeParameterSymbol @@ -19,9 +20,10 @@ private val ownerPointer: KaSymbolPointer<KaDeclarationSymbol>, private val name: Name, private val index: Int, -) : KaSymbolPointer<KaTypeParameterSymbol>() { + originalSymbol: KaTypeParameterSymbol?, +) : KaBaseCachedSymbolPointer<KaTypeParameterSymbol>(originalSymbol) { @KaImplementationDetail - override fun restoreSymbol(analysisSession: KaSession): KaTypeParameterSymbol? { + override fun restoreIfNotCached(analysisSession: KaSession): KaTypeParameterSymbol? { require(analysisSession is KaFirSession) val ownerSymbol = with(analysisSession) { ownerPointer.restoreSymbol()
diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirValueParameterSymbolPointer.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirValueParameterSymbolPointer.kt index 38bb8f0..7a9139b 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirValueParameterSymbolPointer.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KaFirValueParameterSymbolPointer.kt
@@ -8,6 +8,7 @@ import org.jetbrains.kotlin.analysis.api.KaImplementationDetail import org.jetbrains.kotlin.analysis.api.KaSession import org.jetbrains.kotlin.analysis.api.fir.KaFirSession +import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBaseCachedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.KaFunctionSymbol import org.jetbrains.kotlin.analysis.api.symbols.KaSymbol import org.jetbrains.kotlin.analysis.api.symbols.KaValueParameterSymbol @@ -18,9 +19,10 @@ private val ownerPointer: KaSymbolPointer<KaFunctionSymbol>, private val name: Name, private val index: Int, -) : KaSymbolPointer<KaValueParameterSymbol>() { + originalSymbol: KaValueParameterSymbol?, +) : KaBaseCachedSymbolPointer<KaValueParameterSymbol>(originalSymbol) { @KaImplementationDetail - override fun restoreSymbol(analysisSession: KaSession): KaValueParameterSymbol? { + override fun restoreIfNotCached(analysisSession: KaSession): KaValueParameterSymbol? { require(analysisSession is KaFirSession) val ownerSymbol = with(analysisSession) { ownerPointer.restoreSymbol()
diff --git a/analysis/analysis-api-impl-base/resources/META-INF/analysis-api/analysis-api-impl-base.xml b/analysis/analysis-api-impl-base/resources/META-INF/analysis-api/analysis-api-impl-base.xml index accce36..42e73e7 100644 --- a/analysis/analysis-api-impl-base/resources/META-INF/analysis-api/analysis-api-impl-base.xml +++ b/analysis/analysis-api-impl-base/resources/META-INF/analysis-api/analysis-api-impl-base.xml
@@ -51,6 +51,12 @@ <applicationService serviceImplementation="org.jetbrains.kotlin.analysis.decompiled.light.classes.origin.KotlinDeclarationInCompiledFileSearcher" /> + <projectService + serviceInterface="org.jetbrains.kotlin.analysis.api.symbols.pointers.KaPsiSymbolPointerCreator" + serviceImplementation="org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBasePsiSymbolPointerCreator" + /> + + <java.elementFinder implementation="org.jetbrains.kotlin.asJava.finder.JavaElementFinder"/> <registryKey
diff --git a/analysis/analysis-api-impl-base/src/org/jetbrains/kotlin/analysis/api/impl/base/symbols/pointers/KaBaseCachedSymbolPointer.kt b/analysis/analysis-api-impl-base/src/org/jetbrains/kotlin/analysis/api/impl/base/symbols/pointers/KaBaseCachedSymbolPointer.kt new file mode 100644 index 0000000..1cb66b8 --- /dev/null +++ b/analysis/analysis-api-impl-base/src/org/jetbrains/kotlin/analysis/api/impl/base/symbols/pointers/KaBaseCachedSymbolPointer.kt
@@ -0,0 +1,78 @@ +/* + * Copyright 2010-2024 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.pointers + +import org.jetbrains.kotlin.analysis.api.KaSession +import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBaseCachedSymbolPointer.Companion.NOT_CACHED +import org.jetbrains.kotlin.analysis.api.symbols.* +import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer +import org.jetbrains.kotlin.psi.KtClassInitializer +import org.jetbrains.kotlin.utils.exceptions.errorWithAttachment +import java.lang.ref.WeakReference + +abstract class KaBaseCachedSymbolPointer<out S : KaSymbol>(originalSymbol: S?) : KaSymbolPointer<S>() { + /** + * This property can have three values: + * + * 1. **null** – cache is not initialized, so it can be initialized with the next [restoreSymbol] + * 2. [NOT_CACHED] – the symbol cannot be cached, so [restoreSymbol] should delegate directly to [restoreIfNotCached] + * 3. [WeakReference] – the symbol is cacheable, [cachedSymbol] stores the result of the latest [restoreIfNotCached] call + */ + private var cachedSymbol: Any? = null + + init { + originalSymbol?.let(::cacheWithIsCacheableCheck) + } + + /** + * Most of the pointers are derived from [KaBaseCachedSymbolPointer] and support weak symbol cache. + * This means that if the original symbol the pointer is created from is not garbage-collected and still valid on restore, + * then the [cachedSymbol] will be immediately returned. + * Otherwise, the new symbol is built from data stored in the pointer, which takes a bit more resources. + * After each successful build-from-scratch operation, the cached reference is updated and points to the newly constructed symbol. + * + * Currently, symbol caching is only supported for non-local declarations. + * The invalidation process for local declarations is bulky, as the lifetime token stays the same on in-block modifications. + */ + final override fun restoreSymbol(analysisSession: KaSession): S? = when (val cachedSymbol = cachedSymbol) { + is WeakReference<*> -> { + val value = cachedSymbol.get() + @Suppress("UNCHECKED_CAST") + if (value != null && (value as S).token == analysisSession.token) { + value + } else { + restoreIfNotCached(analysisSession).also { + this.cachedSymbol = WeakReference(it) + } + } + } + NOT_CACHED -> restoreIfNotCached(analysisSession) + null -> restoreIfNotCached(analysisSession)?.also(::cacheWithIsCacheableCheck) + else -> errorWithAttachment("Unexpected value: ${cachedSymbol::class.simpleName}") { + withEntry("cachedSymbol", cachedSymbol.toString()) + } + } + + private fun cacheWithIsCacheableCheck(symbol: S) { + cachedSymbol = if (symbol.isCacheable) WeakReference(symbol) else NOT_CACHED + } + + companion object { + private val NOT_CACHED = Any() + + internal val KaSymbol.isCacheable: Boolean + get() = when (this) { + is KaConstructorSymbol -> this.containingClassId?.isLocal == false + is KaCallableSymbol -> this.callableId?.isLocal == false + is KaClassLikeSymbol -> this.classId?.isLocal == false + is KaClassInitializerSymbol -> (this.psi as? KtClassInitializer)?.containingDeclaration?.getClassId()?.isLocal == false + is KaScriptSymbol, is KaFileSymbol, is KaPackageSymbol -> true + else -> false + } + } + + protected abstract fun restoreIfNotCached(analysisSession: KaSession): S? +} \ No newline at end of file
diff --git a/analysis/analysis-api-impl-base/src/org/jetbrains/kotlin/analysis/api/impl/base/symbols/pointers/KaBasePropertyAccessorSymbolPointer.kt b/analysis/analysis-api-impl-base/src/org/jetbrains/kotlin/analysis/api/impl/base/symbols/pointers/KaBasePropertyAccessorSymbolPointer.kt index 842f863..292c3d7 100644 --- a/analysis/analysis-api-impl-base/src/org/jetbrains/kotlin/analysis/api/impl/base/symbols/pointers/KaBasePropertyAccessorSymbolPointer.kt +++ b/analysis/analysis-api-impl-base/src/org/jetbrains/kotlin/analysis/api/impl/base/symbols/pointers/KaBasePropertyAccessorSymbolPointer.kt
@@ -13,7 +13,8 @@ @KaImplementationDetail sealed class KaBasePropertyAccessorSymbolPointer<T : KaPropertyAccessorSymbol>( private val propertySymbolPointer: KaSymbolPointer<KaPropertySymbol>, -) : KaSymbolPointer<T>() { + originalSymbol: T?, +) : KaBaseCachedSymbolPointer<T>(originalSymbol) { protected fun restorePropertySymbol(analysisSession: KaSession): KaPropertySymbol? = with(analysisSession) { return propertySymbolPointer.restoreSymbol() } @@ -29,9 +30,10 @@ @KaImplementationDetail class KaBasePropertyGetterSymbolPointer( propertySymbolPointer: KaSymbolPointer<KaPropertySymbol>, -) : KaBasePropertyAccessorSymbolPointer<KaPropertyGetterSymbol>(propertySymbolPointer) { + originalSymbol: KaPropertyGetterSymbol?, +) : KaBasePropertyAccessorSymbolPointer<KaPropertyGetterSymbol>(propertySymbolPointer, originalSymbol) { @KaImplementationDetail - override fun restoreSymbol(analysisSession: KaSession): KaPropertyGetterSymbol? { + override fun restoreIfNotCached(analysisSession: KaSession): KaPropertyGetterSymbol? { return restorePropertySymbol(analysisSession)?.getter } } @@ -39,9 +41,10 @@ @KaImplementationDetail class KaBasePropertySetterSymbolPointer( propertySymbolPointer: KaSymbolPointer<KaPropertySymbol>, -) : KaBasePropertyAccessorSymbolPointer<KaPropertySetterSymbol>(propertySymbolPointer) { + originalSymbol: KaPropertySetterSymbol?, +) : KaBasePropertyAccessorSymbolPointer<KaPropertySetterSymbol>(propertySymbolPointer, originalSymbol) { @KaImplementationDetail - override fun restoreSymbol(analysisSession: KaSession): KaPropertySetterSymbol? { + override fun restoreIfNotCached(analysisSession: KaSession): KaPropertySetterSymbol? { return restorePropertySymbol(analysisSession)?.setter } } \ No newline at end of file
diff --git a/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/symbols/pointers/KaPsiBasedSymbolPointer.kt b/analysis/analysis-api-impl-base/src/org/jetbrains/kotlin/analysis/api/impl/base/symbols/pointers/KaBasePsiSymbolPointer.kt similarity index 71% rename from analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/symbols/pointers/KaPsiBasedSymbolPointer.kt rename to analysis/analysis-api-impl-base/src/org/jetbrains/kotlin/analysis/api/impl/base/symbols/pointers/KaBasePsiSymbolPointer.kt index 6550e37..0897bb9 100644 --- a/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/symbols/pointers/KaPsiBasedSymbolPointer.kt +++ b/analysis/analysis-api-impl-base/src/org/jetbrains/kotlin/analysis/api/impl/base/symbols/pointers/KaBasePsiSymbolPointer.kt
@@ -3,7 +3,7 @@ * 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.symbols.pointers +package org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers import com.intellij.openapi.project.Project import com.intellij.openapi.util.Segment @@ -13,11 +13,11 @@ import com.intellij.psi.SmartPointerManager import com.intellij.psi.SmartPsiElementPointer import org.jetbrains.annotations.TestOnly -import org.jetbrains.kotlin.analysis.api.KaExperimentalApi import org.jetbrains.kotlin.analysis.api.KaImplementationDetail import org.jetbrains.kotlin.analysis.api.KaSession import org.jetbrains.kotlin.analysis.api.symbols.KaSymbol import org.jetbrains.kotlin.analysis.api.symbols.KaSymbolOrigin +import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer import org.jetbrains.kotlin.psi.KtDeclaration import org.jetbrains.kotlin.psi.KtElement import org.jetbrains.kotlin.psi.KtFile @@ -26,12 +26,13 @@ import kotlin.reflect.KClass @KaImplementationDetail -public class KaPsiBasedSymbolPointer<S : KaSymbol> private constructor( +class KaBasePsiSymbolPointer<S : KaSymbol> private constructor( private val psiPointer: SmartPsiElementPointer<out KtElement>, private val expectedClass: KClass<S>, -) : KaSymbolPointer<S>() { + originalSymbol: S?, +) : KaBaseCachedSymbolPointer<S>(originalSymbol) { @KaImplementationDetail - override fun restoreSymbol(analysisSession: KaSession): S? { + override fun restoreIfNotCached(analysisSession: KaSession): S? { val psi = psiPointer.element ?: return null val symbol: KaSymbol = with(analysisSession) { @@ -52,20 +53,24 @@ } override fun pointsToTheSameSymbolAs(other: KaSymbolPointer<KaSymbol>): Boolean = this === other || - other is KaPsiBasedSymbolPointer && + other is KaBasePsiSymbolPointer && other.expectedClass == expectedClass && other.psiPointer == psiPointer - public constructor(psi: KtElement, expectedClass: KClass<S>) : this(createCompatibleSmartPointer(psi), expectedClass) + constructor(psi: KtElement, expectedClass: KClass<S>, originalSymbol: S?) : this( + createCompatibleSmartPointer(psi), + expectedClass, + originalSymbol + ) @KaImplementationDetail - public companion object { + companion object { @Suppress("INVISIBLE_REFERENCE", "INVISIBLE_MEMBER") - public inline fun <reified S : KaSymbol> createForSymbolFromSource(symbol: @kotlin.internal.NoInfer S): KaPsiBasedSymbolPointer<S>? { + inline fun <reified S : KaSymbol> createForSymbolFromSource(symbol: @kotlin.internal.NoInfer S): KaBasePsiSymbolPointer<S>? { return createForSymbolFromSource(symbol, S::class) } - public fun <S : KaSymbol> createForSymbolFromSource(symbol: S, expectedClass: KClass<S>): KaPsiBasedSymbolPointer<S>? { + fun <S : KaSymbol> createForSymbolFromSource(symbol: S, expectedClass: KClass<S>): KaBasePsiSymbolPointer<S>? { ifDisabled { return null } if (symbol.origin != KaSymbolOrigin.SOURCE) return null @@ -77,22 +82,26 @@ else -> return null } - return KaPsiBasedSymbolPointer(psi, expectedClass) + return KaBasePsiSymbolPointer(psi, expectedClass, symbol) } - public fun <S : KaSymbol> createForSymbolFromPsi(ktElement: KtElement, expectedClass: KClass<S>): KaPsiBasedSymbolPointer<S>? { + fun <S : KaSymbol> createForSymbolFromPsi( + ktElement: KtElement, + expectedClass: KClass<S>, + originalSymbol: S? + ): KaBasePsiSymbolPointer<S>? { ifDisabled { return null } - return KaPsiBasedSymbolPointer(ktElement, expectedClass) + return KaBasePsiSymbolPointer(ktElement, expectedClass, originalSymbol) } - public inline fun <reified S : KaSymbol> createForSymbolFromPsi(ktElement: KtElement): KaPsiBasedSymbolPointer<S>? { - return createForSymbolFromPsi(ktElement, S::class) + inline fun <reified S : KaSymbol> createForSymbolFromPsi(ktElement: KtElement): KaBasePsiSymbolPointer<S>? { + return createForSymbolFromPsi(ktElement, S::class, null) } @TestOnly - public fun <T> withDisabledPsiBasedPointers(disable: Boolean, action: () -> T): T = try { + fun <T> withDisabledPsiBasedPointers(disable: Boolean, action: () -> T): T = try { disablePsiPointer = true disablePsiPointerFlag.set(disable) action() @@ -115,7 +124,7 @@ } @KaImplementationDetail -public interface SmartPointerIncompatiblePsiFile +interface SmartPointerIncompatiblePsiFile @OptIn(KaImplementationDetail::class) private fun createCompatibleSmartPointer(element: KtElement): SmartPsiElementPointer<out KtElement> { @@ -146,11 +155,3 @@ override fun getPsiRange(): Segment? = throw UnsupportedOperationException("Not supported") override fun getRange(): Segment? = throw UnsupportedOperationException("Not supported") } - -@OptIn(KaImplementationDetail::class) -@KaExperimentalApi -public fun KtElement.symbolPointer(): KaSymbolPointer<KaSymbol> = KaPsiBasedSymbolPointer(this, KaSymbol::class) - -@OptIn(KaImplementationDetail::class) -@KaExperimentalApi -public inline fun <reified S : KaSymbol> KtElement.symbolPointerOfType(): KaSymbolPointer<S> = KaPsiBasedSymbolPointer(this, S::class)
diff --git a/analysis/analysis-api-impl-base/src/org/jetbrains/kotlin/analysis/api/impl/base/symbols/pointers/KaBasePsiSymbolPointerCreator.kt b/analysis/analysis-api-impl-base/src/org/jetbrains/kotlin/analysis/api/impl/base/symbols/pointers/KaBasePsiSymbolPointerCreator.kt new file mode 100644 index 0000000..be1a2f8 --- /dev/null +++ b/analysis/analysis-api-impl-base/src/org/jetbrains/kotlin/analysis/api/impl/base/symbols/pointers/KaBasePsiSymbolPointerCreator.kt
@@ -0,0 +1,24 @@ +/* + * Copyright 2010-2024 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.pointers + +import org.jetbrains.kotlin.analysis.api.symbols.KaSymbol +import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaPsiSymbolPointerCreator +import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer +import org.jetbrains.kotlin.psi.KtElement +import kotlin.reflect.KClass + +internal class KaBasePsiSymbolPointerCreator : KaPsiSymbolPointerCreator { + override fun symbolPointer(element: KtElement, originalSymbol: KaSymbol?): KaSymbolPointer<KaSymbol> = + KaBasePsiSymbolPointer(element, KaSymbol::class, originalSymbol) + + override fun <S : KaSymbol> symbolPointerOfType( + element: KtElement, + expectedType: KClass<S>, + originalSymbol: S? + ): KaSymbolPointer<S> = + KaBasePsiSymbolPointer(element, expectedType, originalSymbol) +} \ No newline at end of file
diff --git a/analysis/analysis-api-impl-base/src/org/jetbrains/kotlin/analysis/api/impl/base/symbols/pointers/KaBaseReceiverParameterSymbolPointer.kt b/analysis/analysis-api-impl-base/src/org/jetbrains/kotlin/analysis/api/impl/base/symbols/pointers/KaBaseReceiverParameterSymbolPointer.kt index 48e23d1..6c20d4f 100644 --- a/analysis/analysis-api-impl-base/src/org/jetbrains/kotlin/analysis/api/impl/base/symbols/pointers/KaBaseReceiverParameterSymbolPointer.kt +++ b/analysis/analysis-api-impl-base/src/org/jetbrains/kotlin/analysis/api/impl/base/symbols/pointers/KaBaseReceiverParameterSymbolPointer.kt
@@ -15,9 +15,10 @@ @KaImplementationDetail class KaBaseReceiverParameterSymbolPointer( private val ownerPointer: KaSymbolPointer<KaCallableSymbol>, -) : KaSymbolPointer<KaReceiverParameterSymbol>() { + originalSymbol: KaReceiverParameterSymbol?, +) : KaBaseCachedSymbolPointer<KaReceiverParameterSymbol>(originalSymbol) { @KaImplementationDetail - override fun restoreSymbol(analysisSession: KaSession): KaReceiverParameterSymbol? { + override fun restoreIfNotCached(analysisSession: KaSession): KaReceiverParameterSymbol? { val callableSymbol = with(analysisSession) { ownerPointer.restoreSymbol() }
diff --git a/analysis/analysis-api-impl-base/src/org/jetbrains/kotlin/analysis/api/impl/base/symbols/pointers/KaBaseValueParameterFromDefaultSetterSymbolPointer.kt b/analysis/analysis-api-impl-base/src/org/jetbrains/kotlin/analysis/api/impl/base/symbols/pointers/KaBaseValueParameterFromDefaultSetterSymbolPointer.kt index 5c59bd7..166151d 100644 --- a/analysis/analysis-api-impl-base/src/org/jetbrains/kotlin/analysis/api/impl/base/symbols/pointers/KaBaseValueParameterFromDefaultSetterSymbolPointer.kt +++ b/analysis/analysis-api-impl-base/src/org/jetbrains/kotlin/analysis/api/impl/base/symbols/pointers/KaBaseValueParameterFromDefaultSetterSymbolPointer.kt
@@ -7,15 +7,18 @@ import org.jetbrains.kotlin.analysis.api.KaImplementationDetail import org.jetbrains.kotlin.analysis.api.KaSession -import org.jetbrains.kotlin.analysis.api.symbols.* +import org.jetbrains.kotlin.analysis.api.symbols.KaPropertySymbol +import org.jetbrains.kotlin.analysis.api.symbols.KaSymbol +import org.jetbrains.kotlin.analysis.api.symbols.KaValueParameterSymbol import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer @KaImplementationDetail class KaBaseValueParameterFromDefaultSetterSymbolPointer( private val ownerPointer: KaSymbolPointer<KaPropertySymbol>, -) : KaSymbolPointer<KaValueParameterSymbol>() { + originalSymbol: KaValueParameterSymbol?, +) : KaBaseCachedSymbolPointer<KaValueParameterSymbol>(originalSymbol) { @KaImplementationDetail - override fun restoreSymbol(analysisSession: KaSession): KaValueParameterSymbol? { + override fun restoreIfNotCached(analysisSession: KaSession): KaValueParameterSymbol? { val ownerSymbol = with(analysisSession) { ownerPointer.restoreSymbol() }
diff --git a/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/symbols/AbstractSymbolTest.kt b/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/symbols/AbstractSymbolTest.kt index 2eb0ef2..f2ecfee 100644 --- a/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/symbols/AbstractSymbolTest.kt +++ b/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/symbols/AbstractSymbolTest.kt
@@ -8,6 +8,8 @@ import com.intellij.psi.PsiElement import org.jetbrains.kotlin.analysis.api.KaSession import org.jetbrains.kotlin.analysis.api.impl.base.components.KaBaseSymbolProvider +import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBaseCachedSymbolPointer.Companion.isCacheable +import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBasePsiSymbolPointer import org.jetbrains.kotlin.analysis.api.impl.base.test.cases.symbols.SymbolTestDirectives.DO_NOT_CHECK_NON_PSI_SYMBOL_RESTORE import org.jetbrains.kotlin.analysis.api.impl.base.test.cases.symbols.SymbolTestDirectives.DO_NOT_CHECK_NON_PSI_SYMBOL_RESTORE_K1 import org.jetbrains.kotlin.analysis.api.impl.base.test.cases.symbols.SymbolTestDirectives.DO_NOT_CHECK_NON_PSI_SYMBOL_RESTORE_K2 @@ -21,7 +23,6 @@ import org.jetbrains.kotlin.analysis.api.renderer.types.KaExpandedTypeRenderingMode import org.jetbrains.kotlin.analysis.api.renderer.types.renderers.KaFunctionalTypeRenderer import org.jetbrains.kotlin.analysis.api.symbols.* -import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaPsiBasedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer import org.jetbrains.kotlin.analysis.test.framework.base.AbstractAnalysisApiBasedTest import org.jetbrains.kotlin.analysis.test.framework.projectStructure.KtTestModule @@ -180,7 +181,7 @@ } private fun KaSymbol.createPointerForTest(disablePsiBasedLogic: Boolean): KaSymbolPointer<*> = - KaPsiBasedSymbolPointer.withDisabledPsiBasedPointers(disable = disablePsiBasedLogic) { createPointer() } + KaBasePsiSymbolPointer.withDisabledPsiBasedPointers(disable = disablePsiBasedLogic) { createPointer() } private fun assertSymbolPointer(pointer: KaSymbolPointer<*>, testServices: TestServices) { testServices.assertions.assertTrue(value = pointer.pointsToTheSameSymbolAs(pointer)) { @@ -305,6 +306,7 @@ } if (!failed) { + compareCachedSymbols(restoredPointers, testServices, ktFile, disablePsiBasedLogic, analyzeContext) compareRestoredSymbols(restoredPointers, testServices, ktFile, disablePsiBasedLogic, analyzeContext) } @@ -318,6 +320,30 @@ fail("Redundant // ${directiveToIgnore.name} directive") } + private fun compareCachedSymbols( + pointers: List<KaSymbolPointer<*>>, + testServices: TestServices, + ktFile: KtFile, + disablePsiBasedLogic: Boolean, + analyzeContext: KtElement?, + ) { + if (pointers.isEmpty()) return + + analyseForTest(analyzeContext ?: ktFile) { + pointers.forEach { pointer -> + val firstRestore = + restoreSymbol(pointer, disablePsiBasedLogic) ?: error("Unexpectedly non-restored symbol pointer: ${it::class}") + val secondRestore = + restoreSymbol(pointer, disablePsiBasedLogic) ?: error("Unexpectedly non-restored symbol pointer: ${it::class}") + if (firstRestore.isCacheable) { + testServices.assertions.assertTrue(firstRestore === secondRestore) { + "${pointer::class} does not support symbol caching" + } + } + } + } + } + private fun compareRestoredSymbols( restoredPointers: List<KaSymbolPointer<*>>, testServices: TestServices,
diff --git a/analysis/analysis-api-standalone/analysis-api-standalone-base/src/org/jetbrains/kotlin/analysis/api/standalone/base/declarations/KotlinStandaloneDeclarationProvider.kt b/analysis/analysis-api-standalone/analysis-api-standalone-base/src/org/jetbrains/kotlin/analysis/api/standalone/base/declarations/KotlinStandaloneDeclarationProvider.kt index 27877de..bbff413 100644 --- a/analysis/analysis-api-standalone/analysis-api-standalone-base/src/org/jetbrains/kotlin/analysis/api/standalone/base/declarations/KotlinStandaloneDeclarationProvider.kt +++ b/analysis/analysis-api-standalone/analysis-api-standalone-base/src/org/jetbrains/kotlin/analysis/api/standalone/base/declarations/KotlinStandaloneDeclarationProvider.kt
@@ -25,6 +25,7 @@ import com.intellij.util.io.StringRef import com.intellij.util.io.UnsyncByteArrayOutputStream import org.jetbrains.kotlin.analysis.api.KaImplementationDetail +import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.SmartPointerIncompatiblePsiFile import org.jetbrains.kotlin.analysis.decompiler.konan.K2KotlinNativeMetadataDecompiler import org.jetbrains.kotlin.analysis.decompiler.konan.KlibMetaFileType import org.jetbrains.kotlin.analysis.decompiler.psi.BuiltinsVirtualFileProvider @@ -39,7 +40,6 @@ import org.jetbrains.kotlin.analysis.api.platform.declarations.createDeclarationProvider import org.jetbrains.kotlin.analysis.api.platform.declarations.KotlinCompositeDeclarationProvider import org.jetbrains.kotlin.analysis.api.platform.mergeSpecificProviders -import org.jetbrains.kotlin.analysis.api.symbols.pointers.SmartPointerIncompatiblePsiFile import org.jetbrains.kotlin.fileClasses.javaFileFacadeFqName import org.jetbrains.kotlin.idea.KotlinLanguage import org.jetbrains.kotlin.name.*
diff --git a/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/symbols/pointers/KaPsiSymbolPointerCreator.kt b/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/symbols/pointers/KaPsiSymbolPointerCreator.kt new file mode 100644 index 0000000..d60d2b7 --- /dev/null +++ b/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/symbols/pointers/KaPsiSymbolPointerCreator.kt
@@ -0,0 +1,66 @@ +/* + * Copyright 2010-2024 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.symbols.pointers + +import com.intellij.openapi.components.service +import com.intellij.openapi.project.Project +import org.jetbrains.kotlin.analysis.api.KaImplementationDetail +import org.jetbrains.kotlin.analysis.api.symbols.KaSymbol +import org.jetbrains.kotlin.psi.KtElement +import kotlin.reflect.KClass + +@KaImplementationDetail +public interface KaPsiSymbolPointerCreator { + /** + * Returns `KaPsiSymbolPointer` for the given [element]. + * The [originalSymbol], when provided, must be a symbol calculated for [element] + */ + public fun symbolPointer(element: KtElement, originalSymbol: KaSymbol? = null): KaSymbolPointer<KaSymbol> + + /** + * Returns `KaPsiSymbolPointer` for the given [element]. + * The [originalSymbol], when provided, must be a symbol calculated for [element] + * The restored symbol must be an instance of [expectedType]. + */ + public fun <S : KaSymbol> symbolPointerOfType( + element: KtElement, + expectedType: KClass<S>, + originalSymbol: S? = null + ): KaSymbolPointer<S> + + @KaImplementationDetail + public companion object { + private fun getInstance(project: Project): KaPsiSymbolPointerCreator = project.service() + + /** + * Returns `KaPsiSymbolPointer` for the given [element] + */ + public fun symbolPointer(element: KtElement): KaSymbolPointer<KaSymbol> = getInstance(element.project).symbolPointer(element) + + /** + * Returns `KaPsiSymbolPointer` for the given [element]. + * The [originalSymbol], when provided, must be a symbol calculated for [element] + * The restored symbol must be an instance of [expectedType]. + */ + public fun <S : KaSymbol> symbolPointerOfType( + element: KtElement, + expectedType: KClass<S>, + originalSymbol: S? = null + ): KaSymbolPointer<S> = + getInstance(element.project).symbolPointerOfType(element, expectedType, originalSymbol) + + + /** + * Returns `KaPsiSymbolPointer` for the given [element]. + * The [originalSymbol], when provided, must be a symbol calculated for [element] + */ + public inline fun <reified S : KaSymbol> symbolPointerOfType( + element: KtElement, + originalSymbol: S? = null + ): KaSymbolPointer<S> = + symbolPointerOfType(element, S::class, originalSymbol) + } +} \ No newline at end of file
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 c9bfe68..e2bbed0 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
@@ -6,12 +6,13 @@ package org.jetbrains.kotlin.light.classes.symbol.classes import com.intellij.psi.* +import org.jetbrains.kotlin.analysis.api.KaImplementationDetail import org.jetbrains.kotlin.analysis.api.projectStructure.KaModule import org.jetbrains.kotlin.analysis.api.symbols.KaAnonymousObjectSymbol import org.jetbrains.kotlin.analysis.api.symbols.KaClassKind import org.jetbrains.kotlin.analysis.api.symbols.KaPropertySymbol +import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaPsiSymbolPointerCreator import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer -import org.jetbrains.kotlin.analysis.api.symbols.pointers.symbolPointerOfType import org.jetbrains.kotlin.asJava.classes.getParentForLocalDeclaration import org.jetbrains.kotlin.asJava.classes.lazyPub import org.jetbrains.kotlin.asJava.elements.KtLightIdentifier @@ -20,12 +21,13 @@ import org.jetbrains.kotlin.psi.KtClassOrObject internal class SymbolLightClassForAnonymousObject : SymbolLightClassForClassLike<KaAnonymousObjectSymbol>, PsiAnonymousClass { + @OptIn(KaImplementationDetail::class) constructor( anonymousObjectDeclaration: KtClassOrObject, ktModule: KaModule, ) : this( classOrObjectDeclaration = anonymousObjectDeclaration, - classSymbolPointer = anonymousObjectDeclaration.symbolPointerOfType(), + classSymbolPointer = KaPsiSymbolPointerCreator.symbolPointerOfType(anonymousObjectDeclaration), ktModule = ktModule, manager = anonymousObjectDeclaration.manager, )
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 73c4be4..3e2a9a7 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
@@ -6,12 +6,13 @@ package org.jetbrains.kotlin.light.classes.symbol.classes import com.intellij.psi.* +import org.jetbrains.kotlin.analysis.api.KaImplementationDetail import org.jetbrains.kotlin.analysis.api.KaSession import org.jetbrains.kotlin.analysis.api.projectStructure.KaModule import org.jetbrains.kotlin.analysis.api.projectStructure.KaSourceModule import org.jetbrains.kotlin.analysis.api.symbols.* +import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaPsiSymbolPointerCreator import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer -import org.jetbrains.kotlin.analysis.api.symbols.pointers.symbolPointerOfType import org.jetbrains.kotlin.asJava.builder.LightMemberOriginForDeclaration import org.jetbrains.kotlin.asJava.classes.METHOD_INDEX_BASE import org.jetbrains.kotlin.asJava.classes.METHOD_INDEX_FOR_NON_ORIGIN_METHOD @@ -52,12 +53,13 @@ require(classSymbol.classKind != KaClassKind.INTERFACE && classSymbol.classKind != KaClassKind.ANNOTATION_CLASS) } + @OptIn(KaImplementationDetail::class) constructor( classOrObject: KtClassOrObject, ktModule: KaModule, ) : this( classOrObjectDeclaration = classOrObject, - classSymbolPointer = classOrObject.symbolPointerOfType(), + classSymbolPointer = KaPsiSymbolPointerCreator.symbolPointerOfType(classOrObject), ktModule = ktModule, manager = classOrObject.manager, ) {
diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForFacade.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForFacade.kt index bc34fac..cf55ec9 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForFacade.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForFacade.kt
@@ -9,12 +9,13 @@ import com.intellij.psi.* import com.intellij.psi.impl.light.LightEmptyImplementsList import org.jetbrains.annotations.NonNls +import org.jetbrains.kotlin.analysis.api.KaImplementationDetail import org.jetbrains.kotlin.analysis.api.KaSession import org.jetbrains.kotlin.analysis.api.projectStructure.KaModule import org.jetbrains.kotlin.analysis.api.scopes.KaScope import org.jetbrains.kotlin.analysis.api.symbols.* import org.jetbrains.kotlin.analysis.api.symbols.markers.KaAnnotatedSymbol -import org.jetbrains.kotlin.analysis.api.symbols.pointers.symbolPointerOfType +import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaPsiSymbolPointerCreator import org.jetbrains.kotlin.asJava.classes.KtLightClassForFacade import org.jetbrains.kotlin.asJava.classes.lazyPub import org.jetbrains.kotlin.asJava.elements.FakeFileForLightClass @@ -58,6 +59,7 @@ private val firstFileInFacade: KtFile get() = files.first() + @OptIn(KaImplementationDetail::class) private val _modifierList: PsiModifierList by lazyPub { SymbolLightClassModifierList( containingDeclaration = this, @@ -68,7 +70,7 @@ GranularAnnotationsBox( annotationsProvider = SymbolAnnotationsProvider( ktModule = this.ktModule, - annotatedSymbolPointer = firstFileInFacade.symbolPointerOfType<KaFileSymbol>(), + annotatedSymbolPointer = KaPsiSymbolPointerCreator.symbolPointerOfType<KaFileSymbol>(firstFileInFacade), ) ) },
diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForInterfaceOrAnnotationClass.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForInterfaceOrAnnotationClass.kt index 1cfd685..44b467c 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForInterfaceOrAnnotationClass.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForInterfaceOrAnnotationClass.kt
@@ -5,18 +5,14 @@ package org.jetbrains.kotlin.light.classes.symbol.classes -import com.intellij.psi.PsiField -import com.intellij.psi.PsiManager -import com.intellij.psi.PsiMethod -import com.intellij.psi.PsiModifier -import com.intellij.psi.PsiModifierList -import com.intellij.psi.PsiReferenceList +import com.intellij.psi.* +import org.jetbrains.kotlin.analysis.api.KaImplementationDetail import org.jetbrains.kotlin.analysis.api.KaSession import org.jetbrains.kotlin.analysis.api.projectStructure.KaModule import org.jetbrains.kotlin.analysis.api.symbols.KaClassKind import org.jetbrains.kotlin.analysis.api.symbols.KaNamedClassSymbol +import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaPsiSymbolPointerCreator import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer -import org.jetbrains.kotlin.analysis.api.symbols.pointers.symbolPointerOfType import org.jetbrains.kotlin.asJava.classes.lazyPub import org.jetbrains.kotlin.light.classes.symbol.annotations.AbstractClassAdditionalAnnotationsProvider import org.jetbrains.kotlin.light.classes.symbol.annotations.GranularAnnotationsBox @@ -45,12 +41,13 @@ require(classKind == KaClassKind.INTERFACE || classKind == KaClassKind.ANNOTATION_CLASS) } + @OptIn(KaImplementationDetail::class) constructor( classOrObject: KtClassOrObject, ktModule: KaModule, ) : this( classOrObjectDeclaration = classOrObject, - classSymbolPointer = classOrObject.symbolPointerOfType(), + classSymbolPointer = KaPsiSymbolPointerCreator.symbolPointerOfType(classOrObject), ktModule = ktModule, manager = classOrObject.manager, ) {
diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForScript.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForScript.kt index 847f389..4e6bd93 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForScript.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForScript.kt
@@ -6,10 +6,11 @@ package org.jetbrains.kotlin.light.classes.symbol.classes import com.intellij.psi.* +import org.jetbrains.kotlin.analysis.api.KaImplementationDetail import org.jetbrains.kotlin.analysis.api.projectStructure.KaModule import org.jetbrains.kotlin.analysis.api.symbols.KaScriptSymbol +import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaPsiSymbolPointerCreator import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer -import org.jetbrains.kotlin.analysis.api.symbols.pointers.symbolPointerOfType import org.jetbrains.kotlin.asJava.classes.* import org.jetbrains.kotlin.asJava.elements.FakeFileForLightClass import org.jetbrains.kotlin.light.classes.symbol.cachedValue @@ -26,12 +27,13 @@ private val symbolPointer: KaSymbolPointer<KaScriptSymbol>, ktModule: KaModule, ) : KtLightClassForScript, SymbolLightClassBase(ktModule, script.manager) { + @OptIn(KaImplementationDetail::class) internal constructor( script: KtScript, ktModule: KaModule, ) : this( script, - script.symbolPointerOfType(), + KaPsiSymbolPointerCreator.symbolPointerOfType(script), ktModule, )
diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForValueClass.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForValueClass.kt index dfeb1a1..2c2dc9d 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForValueClass.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForValueClass.kt
@@ -8,23 +8,25 @@ import com.intellij.psi.PsiField import com.intellij.psi.PsiManager import com.intellij.psi.PsiMethod +import org.jetbrains.kotlin.analysis.api.KaImplementationDetail import org.jetbrains.kotlin.analysis.api.KaSession import org.jetbrains.kotlin.analysis.api.projectStructure.KaModule import org.jetbrains.kotlin.analysis.api.symbols.* +import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaPsiSymbolPointerCreator import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer -import org.jetbrains.kotlin.analysis.api.symbols.pointers.symbolPointerOfType import org.jetbrains.kotlin.lexer.KtTokens import org.jetbrains.kotlin.light.classes.symbol.cachedValue import org.jetbrains.kotlin.light.classes.symbol.fields.SymbolLightField import org.jetbrains.kotlin.psi.KtClassOrObject internal class SymbolLightClassForValueClass : SymbolLightClassForClassOrObject { + @OptIn(KaImplementationDetail::class) constructor( classOrObject: KtClassOrObject, ktModule: KaModule, ) : this( classOrObjectDeclaration = classOrObject, - classSymbolPointer = classOrObject.symbolPointerOfType(), + classSymbolPointer = KaPsiSymbolPointerCreator.symbolPointerOfType(classOrObject), ktModule = ktModule, manager = classOrObject.manager, ) {
diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/fields/SymbolLightFieldForEnumEntry.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/fields/SymbolLightFieldForEnumEntry.kt index 44508ef..23f812b 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/fields/SymbolLightFieldForEnumEntry.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/fields/SymbolLightFieldForEnumEntry.kt
@@ -6,9 +6,10 @@ package org.jetbrains.kotlin.light.classes.symbol.fields import com.intellij.psi.* +import org.jetbrains.kotlin.analysis.api.KaImplementationDetail import org.jetbrains.kotlin.analysis.api.KaSession import org.jetbrains.kotlin.analysis.api.symbols.KaEnumEntrySymbol -import org.jetbrains.kotlin.analysis.api.symbols.pointers.symbolPointerOfType +import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaPsiSymbolPointerCreator import org.jetbrains.kotlin.asJava.classes.cannotModify import org.jetbrains.kotlin.asJava.classes.lazyPub import org.jetbrains.kotlin.light.classes.symbol.analyzeForLightClasses @@ -34,6 +35,7 @@ action(enumEntry.symbol) } + @OptIn(KaImplementationDetail::class) private val _modifierList by lazyPub { SymbolLightMemberModifierList( containingDeclaration = this, @@ -41,7 +43,7 @@ annotationsBox = GranularAnnotationsBox( annotationsProvider = SymbolAnnotationsProvider( ktModule = ktModule, - annotatedSymbolPointer = enumEntry.symbolPointerOfType<KaEnumEntrySymbol>(), + annotatedSymbolPointer = KaPsiSymbolPointerCreator.symbolPointerOfType<KaEnumEntrySymbol>(enumEntry), ) ), )
diff --git a/compiler/testData/asJava/lightClasses/lightClassByFqName/DelegatedNested.kmp.lib.java b/compiler/testData/asJava/lightClasses/lightClassByFqName/DelegatedNested.kmp.lib.java new file mode 100644 index 0000000..9926ef8 --- /dev/null +++ b/compiler/testData/asJava/lightClasses/lightClassByFqName/DelegatedNested.kmp.lib.java
@@ -0,0 +1,14 @@ +public final class B /* p.B*/ { + public B();// .ctor() + + public static final class A /* p.B.A*/ implements p.I { + @org.jetbrains.annotations.NotNull() + private final @org.jetbrains.annotations.NotNull() p.I f; + + public A(@org.jetbrains.annotations.NotNull() @org.jetbrains.annotations.NotNull() p.I);// .ctor(@org.jetbrains.annotations.NotNull() p.I) + + public void f();// f() + + public void g();// g() + } +}
diff --git a/compiler/testData/asJava/lightClasses/lightClassByFqName/Delegation.kmp.lib.java b/compiler/testData/asJava/lightClasses/lightClassByFqName/Delegation.kmp.lib.java new file mode 100644 index 0000000..de35673 --- /dev/null +++ b/compiler/testData/asJava/lightClasses/lightClassByFqName/Delegation.kmp.lib.java
@@ -0,0 +1,10 @@ +public final class B /* p.B*/ implements p.I { + @org.jetbrains.annotations.NotNull() + private final @org.jetbrains.annotations.NotNull() p.I f; + + public B(@org.jetbrains.annotations.NotNull() @org.jetbrains.annotations.NotNull() p.I);// .ctor(@org.jetbrains.annotations.NotNull() p.I) + + public void f();// f() + + public void g();// g() +}
diff --git a/compiler/testData/asJava/lightClasses/lightClassByFqName/InheritingInterfaceDefaultImpls.kmp.lib.java b/compiler/testData/asJava/lightClasses/lightClassByFqName/InheritingInterfaceDefaultImpls.kmp.lib.java new file mode 100644 index 0000000..95cb513 --- /dev/null +++ b/compiler/testData/asJava/lightClasses/lightClassByFqName/InheritingInterfaceDefaultImpls.kmp.lib.java
@@ -0,0 +1,7 @@ +public final class Inheritor /* p.Inheritor*/ implements p.I, p.I2 { + public Inheritor();// .ctor() + + public final void f();// f() + + public void g();// g() +}
diff --git a/compiler/testData/asJava/lightClasses/lightClassByFqName/delegation/Function.kmp.lib.java b/compiler/testData/asJava/lightClasses/lightClassByFqName/delegation/Function.kmp.lib.java new file mode 100644 index 0000000..858f15f --- /dev/null +++ b/compiler/testData/asJava/lightClasses/lightClassByFqName/delegation/Function.kmp.lib.java
@@ -0,0 +1,6 @@ +public final class Derived /* Derived*/ implements Base { + @org.jetbrains.annotations.NotNull() + public @org.jetbrains.annotations.NotNull() java.lang.String baz(@org.jetbrains.annotations.NotNull() @org.jetbrains.annotations.NotNull() java.lang.String);// baz(@org.jetbrains.annotations.NotNull() java.lang.String) + + public Derived(@org.jetbrains.annotations.NotNull() @org.jetbrains.annotations.NotNull() Base);// .ctor(@org.jetbrains.annotations.NotNull() Base) +}
diff --git a/compiler/testData/asJava/lightClasses/lightClassByFqName/delegation/Property.kmp.lib.java b/compiler/testData/asJava/lightClasses/lightClassByFqName/delegation/Property.kmp.lib.java index 479c413..8860006 100644 --- a/compiler/testData/asJava/lightClasses/lightClassByFqName/delegation/Property.kmp.lib.java +++ b/compiler/testData/asJava/lightClasses/lightClassByFqName/delegation/Property.kmp.lib.java
@@ -2,7 +2,6 @@ @org.jetbrains.annotations.NotNull() private final @org.jetbrains.annotations.NotNull() java.lang.String boo; - @java.lang.Override() @org.jetbrains.annotations.NotNull() public @org.jetbrains.annotations.NotNull() java.lang.String getBoo();// getBoo()
diff --git a/compiler/testData/asJava/lightClasses/lightClassByFqName/ideRegression/InheritingInterfaceDefaultImpls.kmp.lib.java b/compiler/testData/asJava/lightClasses/lightClassByFqName/ideRegression/InheritingInterfaceDefaultImpls.kmp.lib.java new file mode 100644 index 0000000..95cb513 --- /dev/null +++ b/compiler/testData/asJava/lightClasses/lightClassByFqName/ideRegression/InheritingInterfaceDefaultImpls.kmp.lib.java
@@ -0,0 +1,7 @@ +public final class Inheritor /* p.Inheritor*/ implements p.I, p.I2 { + public Inheritor();// .ctor() + + public final void f();// f() + + public void g();// g() +}
diff --git a/compiler/testData/asJava/lightClasses/lightClassByFqName/nullabilityAnnotations/OverrideAnyWithUnit.kmp.lib.java b/compiler/testData/asJava/lightClasses/lightClassByFqName/nullabilityAnnotations/OverrideAnyWithUnit.kmp.lib.java new file mode 100644 index 0000000..5d52f64 --- /dev/null +++ b/compiler/testData/asJava/lightClasses/lightClassByFqName/nullabilityAnnotations/OverrideAnyWithUnit.kmp.lib.java
@@ -0,0 +1,5 @@ +public final class C /* C*/ implements Base { + public C();// .ctor() + + public void foo();// foo() +}
diff --git a/compiler/testData/asJava/lightClasses/lightClassByFqName/nullabilityAnnotations/UnitAsGenericArgument.kmp.lib.java b/compiler/testData/asJava/lightClasses/lightClassByFqName/nullabilityAnnotations/UnitAsGenericArgument.kmp.lib.java new file mode 100644 index 0000000..213d663 --- /dev/null +++ b/compiler/testData/asJava/lightClasses/lightClassByFqName/nullabilityAnnotations/UnitAsGenericArgument.kmp.lib.java
@@ -0,0 +1,5 @@ +public final class C /* C*/ implements Base<@org.jetbrains.annotations.NotNull() kotlin.Unit> { + public C();// .ctor() + + public void foo(@org.jetbrains.annotations.NotNull() @org.jetbrains.annotations.NotNull() kotlin.Unit);// foo(@org.jetbrains.annotations.NotNull() kotlin.Unit) +}
diff --git a/compiler/testData/asJava/lightClasses/lightClassByPsi/DelegatedProperty.kmp.lib.java b/compiler/testData/asJava/lightClasses/lightClassByPsi/DelegatedProperty.kmp.lib.java index ed597c9..28260f0 100644 --- a/compiler/testData/asJava/lightClasses/lightClassByPsi/DelegatedProperty.kmp.lib.java +++ b/compiler/testData/asJava/lightClasses/lightClassByPsi/DelegatedProperty.kmp.lib.java
@@ -71,15 +71,12 @@ @org.jetbrains.annotations.NotNull() private final @org.jetbrains.annotations.NotNull() java.lang.String d; - @java.lang.Override() @org.jetbrains.annotations.NotNull() public @org.jetbrains.annotations.NotNull() java.lang.String getB();// getB() - @java.lang.Override() @org.jetbrains.annotations.NotNull() public @org.jetbrains.annotations.NotNull() java.lang.String getC();// getC() - @java.lang.Override() @org.jetbrains.annotations.NotNull() public @org.jetbrains.annotations.NotNull() java.lang.String getD();// getD()
diff --git a/compiler/testData/asJava/lightClasses/lightClassByPsi/coroutines.kmp.lib.java b/compiler/testData/asJava/lightClasses/lightClassByPsi/coroutines.kmp.lib.java new file mode 100644 index 0000000..ffa9bd4 --- /dev/null +++ b/compiler/testData/asJava/lightClasses/lightClassByPsi/coroutines.kmp.lib.java
@@ -0,0 +1,30 @@ +public final class Bar /* Bar*/ { + public Bar();// .ctor() + + public final <T> void async(@org.jetbrains.annotations.NotNull() @org.jetbrains.annotations.NotNull() kotlin.jvm.functions.Function1<? super kotlin.coroutines.Continuation<? super T>, ? extends java.lang.Object>);// <T> async(@org.jetbrains.annotations.NotNull() kotlin.jvm.functions.Function1<? super kotlin.coroutines.Continuation<? super T>, ? extends java.lang.Object>) +} + +public abstract interface Base /* Base*/ { + @org.jetbrains.annotations.Nullable() + public abstract @org.jetbrains.annotations.Nullable() java.lang.Object foo(@org.jetbrains.annotations.NotNull() @org.jetbrains.annotations.NotNull() kotlin.coroutines.Continuation<? super @org.jetbrains.annotations.NotNull() kotlin.Unit>);// foo(@org.jetbrains.annotations.NotNull() kotlin.coroutines.Continuation<? super @org.jetbrains.annotations.NotNull() kotlin.Unit>) +} + +public final class Boo /* Boo*/ { + private final @org.jetbrains.annotations.Nullable() java.lang.Object doSomething(@org.jetbrains.annotations.NotNull() Foo, @org.jetbrains.annotations.NotNull() kotlin.coroutines.Continuation<? super @org.jetbrains.annotations.NotNull() Bar>);// doSomething(@org.jetbrains.annotations.NotNull() Foo, @org.jetbrains.annotations.NotNull() kotlin.coroutines.Continuation<? super @org.jetbrains.annotations.NotNull() Bar>) + + public Boo();// .ctor() +} + +public final class Derived /* Derived*/ implements Base { + @org.jetbrains.annotations.Nullable() + public @org.jetbrains.annotations.Nullable() java.lang.Object foo(@org.jetbrains.annotations.NotNull() @org.jetbrains.annotations.NotNull() kotlin.coroutines.Continuation<? super @org.jetbrains.annotations.NotNull() kotlin.Unit>);// foo(@org.jetbrains.annotations.NotNull() kotlin.coroutines.Continuation<? super @org.jetbrains.annotations.NotNull() kotlin.Unit>) + + public Derived();// .ctor() +} + +public final class Foo /* Foo*/ { + @org.jetbrains.annotations.Nullable() + public final @org.jetbrains.annotations.Nullable() java.lang.Object doSomething(@org.jetbrains.annotations.NotNull() @org.jetbrains.annotations.NotNull() Foo, @org.jetbrains.annotations.NotNull() @org.jetbrains.annotations.NotNull() kotlin.coroutines.Continuation<? super @org.jetbrains.annotations.NotNull() Bar>);// doSomething(@org.jetbrains.annotations.NotNull() Foo, @org.jetbrains.annotations.NotNull() kotlin.coroutines.Continuation<? super @org.jetbrains.annotations.NotNull() Bar>) + + public Foo();// .ctor() +}
diff --git a/compiler/testData/asJava/lightClasses/lightClassByPsi/delegatesWithAnnotations.kmp.lib.java b/compiler/testData/asJava/lightClasses/lightClassByPsi/delegatesWithAnnotations.kmp.lib.java index c85229e..cf1c90e 100644 --- a/compiler/testData/asJava/lightClasses/lightClassByPsi/delegatesWithAnnotations.kmp.lib.java +++ b/compiler/testData/asJava/lightClasses/lightClassByPsi/delegatesWithAnnotations.kmp.lib.java
@@ -25,7 +25,6 @@ public final class Derived /* Derived*/ implements Base { @Ann(t = {}) - @java.lang.Override() public void foo(@Ann(t = {}) @org.jetbrains.annotations.NotNull() @org.jetbrains.annotations.NotNull() java.lang.String);// foo(@org.jetbrains.annotations.NotNull() java.lang.String) public Derived(@org.jetbrains.annotations.NotNull() @org.jetbrains.annotations.NotNull() Base);// .ctor(@org.jetbrains.annotations.NotNull() Base)