diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/KtDecompiledFile.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/KtDecompiledFile.kt index e7c9fd77a0b..ff680527950 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/KtDecompiledFile.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/KtDecompiledFile.kt @@ -48,4 +48,8 @@ open class KtDecompiledFile( val range = decompiledText.get().index.getRange(indexer, key) ?: return null return PsiTreeUtil.findElementOfClassAtRange(this@KtDecompiledFile, range.startOffset, range.endOffset, KtDeclaration::class.java) } + + fun hasDeclarationWithKey(indexer: DecompiledTextIndexer, key: T): Boolean { + return decompiledText.get().index.getRange(indexer, key) != null + } } diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/navigation/findDecompiledDeclaration.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/navigation/findDecompiledDeclaration.kt index 642ec7e28c7..35b241b8715 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/navigation/findDecompiledDeclaration.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/navigation/findDecompiledDeclaration.kt @@ -148,8 +148,10 @@ object ByDescriptorIndexer : DecompiledTextIndexer { return classOrObject?.getPrimaryConstructor() ?: classOrObject } + val descriptorKey = original.toStringKey() + if (!file.isContentsLoaded) { - if (original is MemberDescriptor) { + if (original is MemberDescriptor && file.hasDeclarationWithKey(this, descriptorKey)) { val declarationContainer: KtDeclarationContainer? = when { DescriptorUtils.isTopLevelDeclaration(original) -> file original.containingDeclaration is ClassDescriptor -> @@ -167,7 +169,7 @@ object ByDescriptorIndexer : DecompiledTextIndexer { } } - return file.getDeclaration(this, original.toStringKey()) ?: run { + return file.getDeclaration(this, descriptorKey) ?: run { if (descriptor !is ClassDescriptor) return null val classFqName = descriptor.fqNameUnsafe