@@ -51,20 +51,25 @@ import com.intellij.psi.PsiMethod
51
51
import com.intellij.psi.impl.file.impl.JavaFileManager
52
52
import org.jetbrains.kotlin.analysis.api.KaExperimentalApi
53
53
import org.jetbrains.kotlin.analysis.api.components.buildSubstitutor
54
+ import org.jetbrains.kotlin.analysis.api.fir.symbols.KaFirSymbol
54
55
import org.jetbrains.kotlin.analysis.api.fir.types.KaFirType
55
56
import org.jetbrains.kotlin.analysis.api.symbols.*
56
57
import org.jetbrains.kotlin.analysis.api.types.KtType
57
58
import org.jetbrains.kotlin.analysis.decompiler.stub.file.ClsKotlinBinaryClassCache
58
59
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.getFirResolveSession
59
60
import org.jetbrains.kotlin.analysis.project.structure.KtSourceModule
61
+ import org.jetbrains.kotlin.asJava.classes.KtLightClassForFacade
62
+ import org.jetbrains.kotlin.asJava.findFacadeClass
60
63
import org.jetbrains.kotlin.asJava.toLightClass
61
64
import org.jetbrains.kotlin.builtins.jvm.JavaToKotlinClassMap
62
65
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCliJavaFileManagerImpl
66
+ import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
63
67
import org.jetbrains.kotlin.fir.types.isRaw
64
68
import org.jetbrains.kotlin.fir.types.typeContext
65
69
import org.jetbrains.kotlin.light.classes.symbol.methods.SymbolLightAccessorMethod
66
70
import org.jetbrains.kotlin.light.classes.symbol.methods.SymbolLightSimpleMethod
67
71
import org.jetbrains.kotlin.load.java.structure.impl.JavaClassImpl
72
+ import org.jetbrains.kotlin.load.kotlin.JvmPackagePartSource
68
73
import org.jetbrains.kotlin.load.kotlin.TypeMappingMode
69
74
import org.jetbrains.kotlin.load.kotlin.getOptimalModeForReturnType
70
75
import org.jetbrains.kotlin.load.kotlin.getOptimalModeForValueParameter
@@ -534,12 +539,30 @@ class ResolverAAImpl(
534
539
return newKSFiles.asSequence()
535
540
}
536
541
542
+ private fun getOwnerJvmClassNameHelper (declaration : KSDeclaration ): String? {
543
+ return declaration.closestClassDeclaration()?.let {
544
+ // Find classId for JvmClassName for member callables.
545
+ (it as ? KSClassDeclarationImpl )?.ktClassOrObjectSymbol?.classIdIfNonLocal
546
+ ?.asString()?.replace(" ." , " $" )?.replace(" /" , " ." )
547
+ } ? : declaration.containingFile?.let {
548
+ // Find containing file facade class name from file symbol
549
+ (it as ? KSFileImpl )?.let {
550
+ ((it.ktFileSymbol.psi as ? KtFile )?.findFacadeClass() as ? KtLightClassForFacade )
551
+ ?.facadeClassFqName?.asString()
552
+ }
553
+ // Down cast to fir symbol for library symbols as light facade class for libraries not available in AA.
554
+ } ? : (
555
+ ((declaration as ? AbstractKSDeclarationImpl )?.ktDeclarationSymbol as ? KaFirSymbol <FirCallableSymbol <* >>)
556
+ ?.firSymbol?.containerSource as ? JvmPackagePartSource
557
+ )?.classId?.asFqNameString()
558
+ }
559
+
537
560
override fun getOwnerJvmClassName (declaration : KSFunctionDeclaration ): String? {
538
- TODO ( " Not yet implemented " )
561
+ return getOwnerJvmClassNameHelper(declaration )
539
562
}
540
563
541
564
override fun getOwnerJvmClassName (declaration : KSPropertyDeclaration ): String? {
542
- TODO ( " Not yet implemented " )
565
+ return getOwnerJvmClassNameHelper(declaration )
543
566
}
544
567
545
568
override fun getPropertyDeclarationByName (name : KSName , includeTopLevel : Boolean ): KSPropertyDeclaration ? {
0 commit comments