From 2fdedf82511456fcde7e7871f8218ec09cb6906b Mon Sep 17 00:00:00 2001 From: Jinseong Jeon Date: Fri, 23 Sep 2022 14:16:20 -0700 Subject: [PATCH] AA FIR: unwrap fake override constructor --- .../kotlin/analysis/api/fir/KtSymbolByFirBuilder.kt | 5 +++-- .../components/KtFirSymbolContainingDeclarationProvider.kt | 2 +- .../jetbrains/kotlin/analysis/api/fir/utils/ktSymbolUtils.kt | 4 +--- .../symbols/symbolByReference/constructorViaTypeAlias.txt | 4 ++-- 4 files changed, 7 insertions(+), 8 deletions(-) diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/KtSymbolByFirBuilder.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/KtSymbolByFirBuilder.kt index 710548d128f..113f34ce421 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/KtSymbolByFirBuilder.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/KtSymbolByFirBuilder.kt @@ -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) } } diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirSymbolContainingDeclarationProvider.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirSymbolContainingDeclarationProvider.kt index 860591fcff6..7043321a6af 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirSymbolContainingDeclarationProvider.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirSymbolContainingDeclarationProvider.kt @@ -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 { diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/utils/ktSymbolUtils.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/utils/ktSymbolUtils.kt index 9fcf33a3abd..2f6ac44e429 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/utils/ktSymbolUtils.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/utils/ktSymbolUtils.kt @@ -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 -> { diff --git a/analysis/analysis-api/testData/symbols/symbolByReference/constructorViaTypeAlias.txt b/analysis/analysis-api/testData/symbols/symbolByReference/constructorViaTypeAlias.txt index 303d02e601d..146b0c090dc 100644 --- a/analysis/analysis-api/testData/symbols/symbolByReference/constructorViaTypeAlias.txt +++ b/analysis/analysis-api/testData/symbols/symbolByReference/constructorViaTypeAlias.txt @@ -6,7 +6,7 @@ KtConstructorSymbol: hasStableParameterNames: false isExtension: false isPrimary: false - origin: SUBSTITUTION_OVERRIDE + origin: JAVA receiverType: null returnType: java/util/ArrayList symbolKind: CLASS_MEMBER @@ -17,5 +17,5 @@ KtConstructorSymbol: KtValueParameterSymbol(c) ] visibility: Public - getContainingModule: KtSourceModule "Sources of main" + getContainingModule: KtSdkModule "SDK jdk" deprecationStatus: null \ No newline at end of file