[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.
This commit is contained in:
+3
-2
@@ -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.FirProvider
|
||||||
import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProvider
|
import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProvider
|
||||||
import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProviderInternals
|
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.fir.symbols.impl.*
|
||||||
import org.jetbrains.kotlin.name.ClassId
|
import org.jetbrains.kotlin.name.ClassId
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
@@ -66,8 +67,8 @@ internal class LLFirProvider(
|
|||||||
|
|
||||||
|
|
||||||
override fun getFirCallableContainerFile(symbol: FirCallableSymbol<*>): FirFile? {
|
override fun getFirCallableContainerFile(symbol: FirCallableSymbol<*>): FirFile? {
|
||||||
symbol.fir.originalForSubstitutionOverride?.symbol?.let {
|
symbol.fir.originalForSubstitutionOverride?.symbol?.let { originalSymbol ->
|
||||||
return getFirCallableContainerFile(it)
|
return originalSymbol.moduleData.session.firProvider.getFirCallableContainerFile(originalSymbol)
|
||||||
}
|
}
|
||||||
val fir = symbol.fir
|
val fir = symbol.fir
|
||||||
return when {
|
return when {
|
||||||
|
|||||||
+3
-2
@@ -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.FirProvider
|
||||||
import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProvider
|
import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProvider
|
||||||
import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProviderInternals
|
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.scopes.FirKotlinScopeProvider
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.*
|
import org.jetbrains.kotlin.fir.symbols.impl.*
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirDefaultVisitor
|
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 val symbolProvider: FirSymbolProvider = SymbolProvider()
|
||||||
|
|
||||||
override fun getFirCallableContainerFile(symbol: FirCallableSymbol<*>): FirFile? {
|
override fun getFirCallableContainerFile(symbol: FirCallableSymbol<*>): FirFile? {
|
||||||
symbol.originalIfFakeOverride()?.let {
|
symbol.originalIfFakeOverride()?.let { originalSymbol ->
|
||||||
return getFirCallableContainerFile(it)
|
return originalSymbol.moduleData.session.firProvider.getFirCallableContainerFile(originalSymbol)
|
||||||
}
|
}
|
||||||
if (symbol is FirBackingFieldSymbol) {
|
if (symbol is FirBackingFieldSymbol) {
|
||||||
return getFirCallableContainerFile(symbol.fir.propertySymbol)
|
return getFirCallableContainerFile(symbol.fir.propertySymbol)
|
||||||
|
|||||||
Reference in New Issue
Block a user