AA FIR: unwrap fake override constructor

This commit is contained in:
Jinseong Jeon
2022-09-23 14:16:20 -07:00
committed by Ilya Kirillov
parent fcd3e4f4c5
commit 2fdedf8251
4 changed files with 7 additions and 8 deletions
@@ -248,8 +248,9 @@ internal class KtSymbolByFirBuilder constructor(
fun buildConstructorSymbol(firSymbol: FirConstructorSymbol): KtFirConstructorSymbol {
val originalFirSymbol = firSymbol.fir.originalConstructorIfTypeAlias?.symbol ?: firSymbol
return symbolsCache.cache(originalFirSymbol) {
KtFirConstructorSymbol(originalFirSymbol, firResolveSession, token, this@KtSymbolByFirBuilder)
val unwrapped = originalFirSymbol.originalIfFakeOverride() ?: originalFirSymbol
return symbolsCache.cache(unwrapped) {
KtFirConstructorSymbol(unwrapped, firResolveSession, token, this@KtSymbolByFirBuilder)
}
}
@@ -63,7 +63,7 @@ internal class KtFirSymbolContainingDeclarationProvider(
}
override fun getContainingModule(symbol: KtSymbol): KtModule {
return symbol.getContainingKtModule(analysisSession.firResolveSession)
return symbol.getContainingKtModule(analysisSession.firResolveSession)
}
private fun getContainingDeclarationForBackingFieldSymbol(symbol: KtSymbolWithKind): KtSymbolWithKind {
@@ -8,7 +8,6 @@ package org.jetbrains.kotlin.analysis.api.fir.utils
import org.jetbrains.kotlin.analysis.api.fir.symbols.KtFirSymbol
import org.jetbrains.kotlin.analysis.api.symbols.KtSymbol
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.LLFirModuleData
import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.llFirModuleData
import org.jetbrains.kotlin.analysis.project.structure.KtModule
import org.jetbrains.kotlin.fir.dispatchReceiverClassOrNull
@@ -16,13 +15,12 @@ import org.jetbrains.kotlin.fir.resolve.toFirRegularClassSymbol
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
val KtSymbol.firSymbol: FirBasedSymbol<*>
internal val KtSymbol.firSymbol: FirBasedSymbol<*>
get() {
require(this is KtFirSymbol<*>)
return this.firSymbol
}
fun FirBasedSymbol<*>.getContainingKtModule(firResolveSession: LLFirResolveSession): KtModule {
val target = when (this) {
is FirCallableSymbol -> {