[psi] don't load text for compiled code

use stubs when possible, when stub doesn't contain anything,
decompiled text won't contain it either,
no sense to load
This commit is contained in:
Anna Kozlova
2023-03-21 20:27:36 +01:00
committed by teamcity
parent e9c8be3b64
commit 956294821b
9 changed files with 344 additions and 86 deletions
@@ -19,18 +19,8 @@ import org.jetbrains.kotlin.psi.KtDeclaration
class KotlinDeclarationInCompiledFileSearcherFE10Impl : KotlinDeclarationInCompiledFileSearcher() {
override fun findDeclarationInCompiledFile(file: KtClsFile, member: PsiMember, signature: MemberSignature): KtDeclaration? {
val relativeClassName = member.relativeClassName()
val key = ClassNameAndSignature(relativeClassName, signature)
val memberName = member.name
if (memberName != null && !file.isContentsLoaded && file.hasDeclarationWithKey(BySignatureIndexer, key)) {
findByStubs(file, relativeClassName, member, memberName)?.let { return it }
}
val declaration = file.getDeclaration(BySignatureIndexer, key) ?: return null
return if (member is PsiMethod && member.isConstructor && declaration is KtClassOrObject) {
declaration.primaryConstructor ?: declaration
} else {
declaration
}
val memberName = member.name ?: return null
return findByStubs(file, relativeClassName, member, memberName)
}
}