[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:
committed by
Space Team
parent
ab805321e4
commit
04f4d39877
+11
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user