diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/DescriptorToSourceUtils.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/DescriptorToSourceUtils.kt index 3b47f6143af..0fdaeeeb9e7 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/DescriptorToSourceUtils.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/DescriptorToSourceUtils.kt @@ -58,6 +58,9 @@ public object DescriptorToSourceUtils { } // NOTE this is also used by KDoc + // Returns PSI element for descriptor. If there are many relevant elements (e.g. it is fake override + // with multiple declarations), finds any of them. It can't find declarations in builtins or decompiled code. + // In IDE, use DescriptorToSourceUtilsIde instead. platformStatic public fun descriptorToDeclaration(descriptor: DeclarationDescriptor): PsiElement? { for (declarationDescriptor in getEffectiveReferencedDescriptors(descriptor.getOriginal())) { diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/codeInsight/DescriptorToSourceUtilsIde.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/codeInsight/DescriptorToSourceUtilsIde.kt index d8d21652614..9e277dfb55b 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/codeInsight/DescriptorToSourceUtilsIde.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/codeInsight/DescriptorToSourceUtilsIde.kt @@ -30,10 +30,13 @@ import java.util.* import org.jetbrains.kotlin.descriptors.* public object DescriptorToSourceUtilsIde { + // Returns PSI element for descriptor. If there are many relevant elements (e.g. it is fake override + // with multiple declarations), finds any of them. It can find declarations in builtins or decompiled code. public fun getAnyDeclaration(project: Project, descriptor: DeclarationDescriptor): PsiElement? { return getDeclarationsStream(project, descriptor).firstOrNull() } + // Returns all PSI elements for descriptor. It can find declarations in builtins or decompiled code. public fun getAllDeclarations(project: Project, targetDescriptor: DeclarationDescriptor): Collection { val result = getDeclarationsStream(project, targetDescriptor).toHashSet() // filter out elements which are navigate to some other element of the result