diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/FirProvider.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/FirProvider.kt index 5b0963f6b1a..b69964f78b5 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/FirProvider.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/FirProvider.kt @@ -30,7 +30,7 @@ interface FirProvider : FirSymbolProvider { fun getFirClassifierContainerFile(fqName: ClassId): FirFile - fun getFirCallableContainerFile(callableId: CallableId): FirFile? + fun getFirCallableContainerFile(symbol: ConeCallableSymbol): FirFile? companion object { fun getInstance(session: FirSession): FirProvider = session.service() diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/impl/FirProviderImpl.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/impl/FirProviderImpl.kt index f558202aaa2..100991d5759 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/impl/FirProviderImpl.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/impl/FirProviderImpl.kt @@ -20,8 +20,8 @@ import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name class FirProviderImpl(val session: FirSession) : FirProvider { - override fun getFirCallableContainerFile(callableId: CallableId): FirFile? { - return callableContainerMap[callableId] + override fun getFirCallableContainerFile(symbol: ConeCallableSymbol): FirFile? { + return callableContainerMap[symbol] } override fun getClassLikeSymbolByFqName(classId: ClassId): ConeClassLikeSymbol? { @@ -30,8 +30,6 @@ class FirProviderImpl(val session: FirSession) : FirProvider { override fun getTopLevelCallableSymbols(packageFqName: FqName, name: Name): List { return (callableMap[CallableId(packageFqName, null, name)] ?: emptyList()) - .filterIsInstance>() - .mapNotNull { it.symbol as? ConeCallableSymbol } } override fun getClassDeclaredMemberScope(classId: ClassId) = @@ -69,9 +67,10 @@ class FirProviderImpl(val session: FirSession) : FirProvider { } override fun visitCallableMemberDeclaration(callableMemberDeclaration: FirCallableMemberDeclaration) { - val callableId = (callableMemberDeclaration.symbol as ConeCallableSymbol).callableId - callableMap.merge(callableId, listOf(callableMemberDeclaration)) { a, b -> a + b } - callableContainerMap[callableId] = file + val symbol = callableMemberDeclaration.symbol as ConeCallableSymbol + val callableId = symbol.callableId + callableMap.merge(callableId, listOf(symbol)) { a, b -> a + b } + callableContainerMap[symbol] = file } override fun visitConstructor(constructor: FirConstructor) { @@ -91,8 +90,8 @@ class FirProviderImpl(val session: FirSession) : FirProvider { private val fileMap = mutableMapOf>() private val classifierMap = mutableMapOf() private val classifierContainerFileMap = mutableMapOf() - private val callableMap = mutableMapOf>() - private val callableContainerMap = mutableMapOf() + private val callableMap = mutableMapOf>() + private val callableContainerMap = mutableMapOf() override fun getFirFilesByPackage(fqName: FqName): List { return fileMap[fqName].orEmpty() diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirBodyResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirBodyResolveTransformer.kt index d2acbaa30cd..c3ffd62e50d 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirBodyResolveTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirBodyResolveTransformer.kt @@ -460,11 +460,12 @@ class ReturnTypeCalculatorWithJump(val session: FirSession) : ReturnTypeCalculat require(declaration is FirCallableMemberDeclaration) { "${declaration::class}: ${declaration.render()}" } - val id = (declaration.symbol as ConeCallableSymbol).callableId + val symbol = declaration.symbol as ConeCallableSymbol + val id = symbol.callableId val provider = session.service() - val file = provider.getFirCallableContainerFile(id) + val file = provider.getFirCallableContainerFile(symbol) val outerClasses = generateSequence(id.classId) { classId -> classId.outerClassId