From 04f4d3987750801a615f84718c324f65648d6ddc Mon Sep 17 00:00:00 2001 From: Marco Pennekamp Date: Wed, 25 Oct 2023 22:45:37 +0200 Subject: [PATCH] [LL] StubBasedBuiltInsSymbolProvider: Support synthetic function types in symbol names provider - The symbol provider may additionally provide function types, so we have to compose its symbol names provider with the synthetic function type symbol names provider. --- .../LLStubBasedLibrarySymbolProviderFactory.kt | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/stubBased/deserialization/LLStubBasedLibrarySymbolProviderFactory.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/stubBased/deserialization/LLStubBasedLibrarySymbolProviderFactory.kt index dbd49efa70a..051733cde72 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/stubBased/deserialization/LLStubBasedLibrarySymbolProviderFactory.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/stubBased/deserialization/LLStubBasedLibrarySymbolProviderFactory.kt @@ -12,10 +12,13 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirInternals import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.LLFirLibrarySymbolProviderFactory import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.LLFirModuleData import org.jetbrains.kotlin.analysis.low.level.api.fir.providers.LLFirJavaSymbolProvider +import org.jetbrains.kotlin.analysis.low.level.api.fir.util.LLFirKotlinSymbolNamesProvider import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin import org.jetbrains.kotlin.fir.deserialization.SingleModuleDataProvider import org.jetbrains.kotlin.fir.java.FirJavaFacade +import org.jetbrains.kotlin.fir.resolve.providers.FirCompositeCachedSymbolNamesProvider +import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolNamesProvider import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProvider import org.jetbrains.kotlin.fir.resolve.providers.impl.FirBuiltinSyntheticFunctionInterfaceProvider import org.jetbrains.kotlin.fir.scopes.FirKotlinScopeProvider @@ -144,6 +147,14 @@ private class StubBasedBuiltInsSymbolProvider( kotlinScopeProvider ) + override val symbolNamesProvider: FirSymbolNamesProvider = FirCompositeCachedSymbolNamesProvider( + session, + listOf( + LLFirKotlinSymbolNamesProvider(declarationProvider, allowKotlinPackage), + syntheticFunctionInterfaceProvider.symbolNamesProvider, + ), + ) + override fun getClassLikeSymbolByClassId(classId: ClassId): FirClassLikeSymbol<*>? { return super.getClassLikeSymbolByClassId(classId) ?: syntheticFunctionInterfaceProvider.getClassLikeSymbolByClassId(classId)