[AA] KtPsiBasedSymbolPointer: disable type inference

^KT-54417
This commit is contained in:
Dmitrii Gridin
2022-11-11 13:10:35 +01:00
committed by Space Team
parent bbe1aa61af
commit 592591acad
13 changed files with 14 additions and 13 deletions
@@ -38,7 +38,7 @@ internal class KtFirAnonymousObjectSymbol(
override val superTypes: List<KtType> by cached { firSymbol.superTypesList(builder) }
override fun createPointer(): KtSymbolPointer<KtAnonymousObjectSymbol> = withValidityAssertion {
KtPsiBasedSymbolPointer.createForSymbolFromSource(this)?.let { return it }
KtPsiBasedSymbolPointer.createForSymbolFromSource<KtAnonymousObjectSymbol>(this)?.let { return it }
if (firSymbol.source?.kind == KtFakeSourceElementKind.EnumInitializer) {
return KtFirEnumEntryInitializerSymbolPointer(requireOwnerPointer())
}
@@ -29,7 +29,7 @@ internal class KtFirClassInitializerSymbol(
override val psi: PsiElement? by cached { firSymbol.findPsi() }
override fun createPointer(): KtSymbolPointer<KtSymbol> = withValidityAssertion {
KtPsiBasedSymbolPointer.createForSymbolFromSource(this)?.let { return it }
KtPsiBasedSymbolPointer.createForSymbolFromSource<KtClassInitializerSymbol>(this)?.let { return it }
TODO("Figure out how to create such a pointer. Should we give an index to class initializers?")
}
@@ -60,7 +60,7 @@ internal class KtFirConstructorSymbol(
override fun createPointer(): KtSymbolPointer<KtConstructorSymbol> = withValidityAssertion {
KtPsiBasedSymbolPointer.createForSymbolFromSource(this)?.let { return it }
KtPsiBasedSymbolPointer.createForSymbolFromSource<KtConstructorSymbol>(this)?.let { return it }
if (symbolKind == KtSymbolKind.LOCAL) {
throw CanNotCreateSymbolPointerForLocalLibraryDeclarationException("constructor")
}
@@ -26,7 +26,7 @@ internal class KtFirFileSymbol(
override val psi: PsiElement? by cached { firSymbol.findPsi() }
override fun createPointer(): KtSymbolPointer<KtFileSymbol> = withValidityAssertion {
KtPsiBasedSymbolPointer.createForSymbolFromSource(this)?.let { return it }
KtPsiBasedSymbolPointer.createForSymbolFromSource<KtFileSymbol>(this)?.let { return it }
TODO("Creating pointers for files from library is not supported yet")
}
@@ -92,7 +92,7 @@ internal class KtFirFunctionSymbol(
override val visibility: Visibility get() = withValidityAssertion { firSymbol.visibility }
override fun createPointer(): KtSymbolPointer<KtFunctionSymbol> = withValidityAssertion {
KtPsiBasedSymbolPointer.createForSymbolFromSource(this)?.let { return it }
KtPsiBasedSymbolPointer.createForSymbolFromSource<KtFunctionSymbol>(this)?.let { return it }
return when (val kind = symbolKind) {
KtSymbolKind.TOP_LEVEL -> KtFirTopLevelFunctionSymbolPointer(firSymbol.callableId, firSymbol.createSignature())
@@ -48,7 +48,7 @@ internal class KtFirLocalVariableSymbol(
override val symbolKind: KtSymbolKind get() = withValidityAssertion { KtSymbolKind.LOCAL }
override fun createPointer(): KtSymbolPointer<KtLocalVariableSymbol> = withValidityAssertion {
KtPsiBasedSymbolPointer.createForSymbolFromSource(this)?.let { return it }
KtPsiBasedSymbolPointer.createForSymbolFromSource<KtLocalVariableSymbol>(this)?.let { return it }
throw CanNotCreateSymbolPointerForLocalLibraryDeclarationException(name.asString())
}
@@ -103,7 +103,7 @@ internal class KtFirNamedClassOrObjectSymbol(
override val symbolKind: KtSymbolKind get() = withValidityAssertion { getSymbolKind(firResolveSession) }
override fun createPointer(): KtSymbolPointer<KtNamedClassOrObjectSymbol> = withValidityAssertion {
KtPsiBasedSymbolPointer.createForSymbolFromSource(this)?.let { return it }
KtPsiBasedSymbolPointer.createForSymbolFromSource<KtNamedClassOrObjectSymbol>(this)?.let { return it }
when (val symbolKind = symbolKind) {
KtSymbolKind.LOCAL ->
@@ -76,7 +76,7 @@ internal class KtFirPropertyGetterSymbol(
get() = withValidityAssertion { true }
override fun createPointer(): KtSymbolPointer<KtPropertyGetterSymbol> = withValidityAssertion {
KtPsiBasedSymbolPointer.createForSymbolFromSource(this)?.let { return it }
KtPsiBasedSymbolPointer.createForSymbolFromSource<KtPropertyGetterSymbol>(this)?.let { return it }
@Suppress("UNCHECKED_CAST")
KtFirPropertyAccessorSymbolPointer(requireOwnerPointer(), true) as KtSymbolPointer<KtPropertyGetterSymbol>
@@ -99,7 +99,7 @@ internal class KtFirPropertySetterSymbol(
get() = withValidityAssertion { true }
override fun createPointer(): KtSymbolPointer<KtPropertySetterSymbol> = withValidityAssertion {
KtPsiBasedSymbolPointer.createForSymbolFromSource(this)?.let { return it }
KtPsiBasedSymbolPointer.createForSymbolFromSource<KtPropertySetterSymbol>(this)?.let { return it }
@Suppress("UNCHECKED_CAST")
KtFirPropertyAccessorSymbolPointer(requireOwnerPointer(), true) as KtSymbolPointer<KtPropertySetterSymbol>
@@ -59,7 +59,7 @@ internal class KtFirTypeAliasSymbol(
override val symbolKind: KtSymbolKind get() = withValidityAssertion { getSymbolKind(firResolveSession) }
override fun createPointer(): KtSymbolPointer<KtTypeAliasSymbol> = withValidityAssertion {
KtPsiBasedSymbolPointer.createForSymbolFromSource(this)?.let { return it }
KtPsiBasedSymbolPointer.createForSymbolFromSource<KtTypeAliasSymbol>(this)?.let { return it }
when (val symbolKind = symbolKind) {
KtSymbolKind.LOCAL ->
throw CanNotCreateSymbolPointerForLocalLibraryDeclarationException(classIdIfNonLocal?.asString() ?: name.asString())
@@ -52,7 +52,7 @@ internal class KtFirTypeParameterSymbol(
override val isReified: Boolean get() = withValidityAssertion { firSymbol.isReified }
override fun createPointer(): KtSymbolPointer<KtTypeParameterSymbol> = withValidityAssertion {
KtPsiBasedSymbolPointer.createForSymbolFromSource(this)?.let { return it }
KtPsiBasedSymbolPointer.createForSymbolFromSource<KtTypeParameterSymbol>(this)?.let { return it }
val containingDeclarationSymbol = firSymbol.containingDeclarationSymbol
val typeParameters = containingDeclarationSymbol.typeParameterSymbols
@@ -76,7 +76,7 @@ internal class KtFirValueParameterSymbol(
}
override fun createPointer(): KtSymbolPointer<KtValueParameterSymbol> = withValidityAssertion {
KtPsiBasedSymbolPointer.createForSymbolFromSource(this)?.let { return it }
KtPsiBasedSymbolPointer.createForSymbolFromSource<KtValueParameterSymbol>(this)?.let { return it }
analyze(firResolveSession.useSiteKtModule) {
val owner = getContainingSymbol() as KtFunctionLikeSymbol
@@ -44,7 +44,8 @@ public class KtPsiBasedSymbolPointer<S : KtSymbol> private constructor(
public constructor(psi: KtElement, expectedClass: KClass<S>) : this(psi.createSmartPointer(), expectedClass)
public companion object {
public inline fun <reified S : KtSymbol> createForSymbolFromSource(symbol: S): KtPsiBasedSymbolPointer<S>? {
@Suppress("INVISIBLE_REFERENCE", "INVISIBLE_MEMBER")
public inline fun <reified S : KtSymbol> createForSymbolFromSource(symbol: @kotlin.internal.NoInfer S): KtPsiBasedSymbolPointer<S>? {
return createForSymbolFromSource(symbol, S::class)
}