[Analysis API FIR] fix getClassOrObjectSymbol for classes actualized by typealias

This commit is contained in:
Ilya Kirillov
2022-07-21 22:43:54 +02:00
parent 10dea730b3
commit 6759263ae9
2 changed files with 10 additions and 7 deletions
@@ -63,7 +63,7 @@ private constructor(
override val scopeProviderImpl by threadLocal { KtFirScopeProvider(this, firSymbolBuilder, project, firResolveSession) }
override val symbolProviderImpl =
KtFirSymbolProvider(this, firResolveSession.useSiteFirSession.symbolProvider, firResolveSession, firSymbolBuilder)
KtFirSymbolProvider(this, firResolveSession.useSiteFirSession.symbolProvider)
override val completionCandidateCheckerImpl = KtFirCompletionCandidateChecker(this, token)
@@ -5,13 +5,15 @@
package org.jetbrains.kotlin.analysis.api.fir.symbols
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
import org.jetbrains.kotlin.analysis.api.fir.KtFirAnalysisSession
import org.jetbrains.kotlin.analysis.api.fir.KtSymbolByFirBuilder
import org.jetbrains.kotlin.analysis.api.fir.components.KtFirAnalysisSessionComponent
import org.jetbrains.kotlin.analysis.api.symbols.*
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.getOrBuildFirFile
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.resolveToFirSymbolOfType
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
import org.jetbrains.kotlin.fir.declarations.fullyExpandedClass
import org.jetbrains.kotlin.fir.renderWithType
import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProvider
import org.jetbrains.kotlin.fir.symbols.impl.*
@@ -21,11 +23,9 @@ import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.psi.*
internal class KtFirSymbolProvider(
override val analysisSession: KtAnalysisSession,
override val analysisSession: KtFirAnalysisSession,
private val firSymbolProvider: FirSymbolProvider,
private val firResolveSession: LLFirResolveSession,
private val firSymbolBuilder: KtSymbolByFirBuilder,
) : KtSymbolProvider() {
) : KtSymbolProvider(), KtFirAnalysisSessionComponent {
override fun getParameterSymbol(psi: KtParameter): KtVariableLikeSymbol {
return when {
@@ -114,7 +114,10 @@ internal class KtFirSymbolProvider(
}
override fun getClassOrObjectSymbol(psi: KtClassOrObject): KtClassOrObjectSymbol {
return firSymbolBuilder.classifierBuilder.buildClassOrObjectSymbol(psi.resolveToFirSymbolOfType<FirClassSymbol<*>>(firResolveSession))
val firClass = psi.resolveToFirSymbolOfType<FirClassLikeSymbol<*>>(firResolveSession)
.fullyExpandedClass(firResolveSession.useSiteFirSession)
?: error("Not-expended type-alias")
return firSymbolBuilder.classifierBuilder.buildClassOrObjectSymbol(firClass)
}
override fun getNamedClassOrObjectSymbol(psi: KtClassOrObject): KtNamedClassOrObjectSymbol? {