From 01009ed75b8edfac90ccb701e9c27b1b0af07c3c Mon Sep 17 00:00:00 2001 From: Yan Zhulanow Date: Wed, 19 Oct 2022 00:02:26 +0900 Subject: [PATCH] [LL API] Seek for the containing file in the right module (KTIJ-22808) It's not guaranteed that the declaration for which we need a containing file is from the currently analyzed module. --- .../analysis/low/level/api/fir/providers/LLFirProvider.kt | 5 +++-- .../kotlin/fir/resolve/providers/impl/FirProviderImpl.kt | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/providers/LLFirProvider.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/providers/LLFirProvider.kt index 5f0b04bc759..57828dacbc6 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/providers/LLFirProvider.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/providers/LLFirProvider.kt @@ -18,6 +18,7 @@ import org.jetbrains.kotlin.fir.originalForSubstitutionOverride import org.jetbrains.kotlin.fir.resolve.providers.FirProvider import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProvider import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProviderInternals +import org.jetbrains.kotlin.fir.resolve.providers.firProvider import org.jetbrains.kotlin.fir.symbols.impl.* import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.FqName @@ -66,8 +67,8 @@ internal class LLFirProvider( override fun getFirCallableContainerFile(symbol: FirCallableSymbol<*>): FirFile? { - symbol.fir.originalForSubstitutionOverride?.symbol?.let { - return getFirCallableContainerFile(it) + symbol.fir.originalForSubstitutionOverride?.symbol?.let { originalSymbol -> + return originalSymbol.moduleData.session.firProvider.getFirCallableContainerFile(originalSymbol) } val fir = symbol.fir return when { diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirProviderImpl.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirProviderImpl.kt index 7400f45076f..110f05257ab 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirProviderImpl.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirProviderImpl.kt @@ -12,6 +12,7 @@ import org.jetbrains.kotlin.fir.declarations.synthetic.FirSyntheticProperty import org.jetbrains.kotlin.fir.resolve.providers.FirProvider import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProvider import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProviderInternals +import org.jetbrains.kotlin.fir.resolve.providers.firProvider import org.jetbrains.kotlin.fir.scopes.FirKotlinScopeProvider import org.jetbrains.kotlin.fir.symbols.impl.* import org.jetbrains.kotlin.fir.visitors.FirDefaultVisitor @@ -22,8 +23,8 @@ class FirProviderImpl(val session: FirSession, val kotlinScopeProvider: FirKotli override val symbolProvider: FirSymbolProvider = SymbolProvider() override fun getFirCallableContainerFile(symbol: FirCallableSymbol<*>): FirFile? { - symbol.originalIfFakeOverride()?.let { - return getFirCallableContainerFile(it) + symbol.originalIfFakeOverride()?.let { originalSymbol -> + return originalSymbol.moduleData.session.firProvider.getFirCallableContainerFile(originalSymbol) } if (symbol is FirBackingFieldSymbol) { return getFirCallableContainerFile(symbol.fir.propertySymbol)