[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.LLFirLibrarySymbolProviderFactory
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.LLFirModuleData
|
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.providers.LLFirJavaSymbolProvider
|
||||||
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.LLFirKotlinSymbolNamesProvider
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
|
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
|
||||||
import org.jetbrains.kotlin.fir.deserialization.SingleModuleDataProvider
|
import org.jetbrains.kotlin.fir.deserialization.SingleModuleDataProvider
|
||||||
import org.jetbrains.kotlin.fir.java.FirJavaFacade
|
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.FirSymbolProvider
|
||||||
import org.jetbrains.kotlin.fir.resolve.providers.impl.FirBuiltinSyntheticFunctionInterfaceProvider
|
import org.jetbrains.kotlin.fir.resolve.providers.impl.FirBuiltinSyntheticFunctionInterfaceProvider
|
||||||
import org.jetbrains.kotlin.fir.scopes.FirKotlinScopeProvider
|
import org.jetbrains.kotlin.fir.scopes.FirKotlinScopeProvider
|
||||||
@@ -144,6 +147,14 @@ private class StubBasedBuiltInsSymbolProvider(
|
|||||||
kotlinScopeProvider
|
kotlinScopeProvider
|
||||||
)
|
)
|
||||||
|
|
||||||
|
override val symbolNamesProvider: FirSymbolNamesProvider = FirCompositeCachedSymbolNamesProvider(
|
||||||
|
session,
|
||||||
|
listOf(
|
||||||
|
LLFirKotlinSymbolNamesProvider(declarationProvider, allowKotlinPackage),
|
||||||
|
syntheticFunctionInterfaceProvider.symbolNamesProvider,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
override fun getClassLikeSymbolByClassId(classId: ClassId): FirClassLikeSymbol<*>? {
|
override fun getClassLikeSymbolByClassId(classId: ClassId): FirClassLikeSymbol<*>? {
|
||||||
return super.getClassLikeSymbolByClassId(classId)
|
return super.getClassLikeSymbolByClassId(classId)
|
||||||
?: syntheticFunctionInterfaceProvider.getClassLikeSymbolByClassId(classId)
|
?: syntheticFunctionInterfaceProvider.getClassLikeSymbolByClassId(classId)
|
||||||
|
|||||||
Reference in New Issue
Block a user