[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.
This commit is contained in:
Marco Pennekamp
2023-10-25 22:45:37 +02:00
committed by Space Team
parent ab805321e4
commit 04f4d39877
@@ -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)