[Analysis API Standalone] fix builtin resolution for common module
StubBasedBuiltInsSymbolProvider does not work for now for common modules (KT-61757) but compiler builtins provider `FirBuiltinSymbolProvider` works. Also, stub-based symbol providers should not be used in standalone mode. Testdata from standalone is updated because of the difference in property accessors (KT-62449) between stub and compiler builtin symbol providers. Additionally, this commit fixes the behavior of `KotlinStaticPsiDeclarationFromBinaryModuleProvider`. As compiler builtin declarations have no PSI attached, `KotlinStaticPsiDeclarationFromBinaryModuleProvider` is used to get PSI from `DecompiledPsiDeclarationProvider.findPsi`. `DecompiledPsiDeclarationProvider` is only used in UAST standalone mode.
This commit is contained in:
committed by
Space Team
parent
5b4731a780
commit
7db2fc522e
+11
@@ -18,6 +18,7 @@ import org.jetbrains.kotlin.fir.deserialization.SingleModuleDataProvider
|
||||
import org.jetbrains.kotlin.fir.java.FirJavaFacade
|
||||
import org.jetbrains.kotlin.fir.java.deserialization.JvmClassFileBasedSymbolProvider
|
||||
import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProvider
|
||||
import org.jetbrains.kotlin.fir.resolve.providers.impl.FirBuiltinSymbolProvider
|
||||
import org.jetbrains.kotlin.fir.scopes.FirKotlinScopeProvider
|
||||
import org.jetbrains.kotlin.fir.session.KlibBasedSymbolProvider
|
||||
import org.jetbrains.kotlin.fir.session.MetadataSymbolProvider
|
||||
@@ -105,6 +106,16 @@ class LLFirStandaloneLibrarySymbolProviderFactory(private val project: Project)
|
||||
)
|
||||
}
|
||||
|
||||
override fun createBuiltinsSymbolProvider(
|
||||
session: FirSession,
|
||||
moduleData: LLFirModuleData,
|
||||
kotlinScopeProvider: FirKotlinScopeProvider
|
||||
): List<FirSymbolProvider> {
|
||||
return listOf(
|
||||
FirBuiltinSymbolProvider(session, moduleData, kotlinScopeProvider)
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
private fun LLFirModuleData.getLibraryKLibs(): List<KotlinLibrary> {
|
||||
val ktLibraryModule = ktModule as? KtLibraryModule ?: return emptyList()
|
||||
|
||||
Reference in New Issue
Block a user