[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
+5
@@ -21,6 +21,7 @@ import org.jetbrains.kotlin.analysis.providers.KotlinPsiDeclarationProviderFacto
|
||||
import org.jetbrains.kotlin.analysis.providers.createPackagePartProvider
|
||||
import org.jetbrains.kotlin.asJava.builder.ClsWrapperStubPsiFactory
|
||||
import org.jetbrains.kotlin.asJava.classes.lazyPub
|
||||
import org.jetbrains.kotlin.builtins.jvm.JavaToKotlinClassMap
|
||||
import org.jetbrains.kotlin.load.kotlin.PackagePartProvider
|
||||
import org.jetbrains.kotlin.name.CallableId
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
@@ -76,6 +77,10 @@ private class KotlinStaticPsiDeclarationFromBinaryModuleProvider(
|
||||
}
|
||||
|
||||
override fun getClassesByClassId(classId: ClassId): Collection<PsiClass> {
|
||||
JavaToKotlinClassMap.mapKotlinToJava(classId.asSingleFqName().toUnsafe())?.let {
|
||||
return getClassesByClassId(it)
|
||||
}
|
||||
|
||||
classId.parentClassId?.let { parentClassId ->
|
||||
val innerClassName = classId.relativeClassName.asString().split(".").last()
|
||||
return getClassesByClassId(parentClassId).mapNotNull { parentClsClass ->
|
||||
|
||||
Reference in New Issue
Block a user