[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:
Ilya Kirillov
2023-10-06 21:47:15 +02:00
committed by Space Team
parent 5b4731a780
commit 7db2fc522e
24 changed files with 8197 additions and 44 deletions
@@ -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 ->