diff --git a/idea/src/org/jetbrains/kotlin/idea/hierarchy/calls/KotlinCallerTreeStructure.kt b/idea/src/org/jetbrains/kotlin/idea/hierarchy/calls/KotlinCallerTreeStructure.kt
index 630519983c4..4dc3c9225a0 100644
--- a/idea/src/org/jetbrains/kotlin/idea/hierarchy/calls/KotlinCallerTreeStructure.kt
+++ b/idea/src/org/jetbrains/kotlin/idea/hierarchy/calls/KotlinCallerTreeStructure.kt
@@ -25,6 +25,7 @@ import org.jetbrains.kotlin.idea.findUsages.KotlinClassFindUsagesOptions
import org.jetbrains.kotlin.idea.findUsages.KotlinFunctionFindUsagesOptions
import org.jetbrains.kotlin.idea.findUsages.KotlinPropertyFindUsagesOptions
import org.jetbrains.kotlin.idea.findUsages.processAllUsages
+import org.jetbrains.kotlin.kdoc.psi.api.KDoc
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.containingClassOrObject
import org.jetbrains.kotlin.psi.psiUtil.getNonStrictParentOfType
@@ -98,7 +99,8 @@ class KotlinCallerTreeStructure(
// If reference belongs to property initializer, show enclosing declaration instead
elementToSearch.processAllUsages(findOptions) {
val refElement = it.element
- if (refElement != null && !JavaResolveUtil.isInJavaDoc(refElement)) {
+ val isInKDoc = PsiTreeUtil.getParentOfType(refElement, KDoc::class.java) != null
+ if (refElement != null && !JavaResolveUtil.isInJavaDoc(refElement) && !isInKDoc) {
processReference(it.reference, refElement, nodeDescriptor, callerToDescriptorMap, false)
}
}
diff --git a/idea/testData/hierarchy/calls/callers/insideKDoc/InsideKDoc_verification.xml b/idea/testData/hierarchy/calls/callers/insideKDoc/InsideKDoc_verification.xml
new file mode 100644
index 00000000000..33f43154523
--- /dev/null
+++ b/idea/testData/hierarchy/calls/callers/insideKDoc/InsideKDoc_verification.xml
@@ -0,0 +1,2 @@
+
+
diff --git a/idea/testData/hierarchy/calls/callers/insideKDoc/main0.kt b/idea/testData/hierarchy/calls/callers/insideKDoc/main0.kt
new file mode 100644
index 00000000000..0d00e977b63
--- /dev/null
+++ b/idea/testData/hierarchy/calls/callers/insideKDoc/main0.kt
@@ -0,0 +1,12 @@
+open class K {
+ public fun persist() {}
+}
+
+class Foo : K() {
+ /**
+ * [persist]
+ */
+ fun foo() {
+
+ }
+}
diff --git a/idea/tests/org/jetbrains/kotlin/idea/hierarchy/HierarchyTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/hierarchy/HierarchyTestGenerated.java
index c75e34d9b9a..7de0742a893 100644
--- a/idea/tests/org/jetbrains/kotlin/idea/hierarchy/HierarchyTestGenerated.java
+++ b/idea/tests/org/jetbrains/kotlin/idea/hierarchy/HierarchyTestGenerated.java
@@ -319,6 +319,11 @@ public class HierarchyTestGenerated extends AbstractHierarchyTest {
runTest("idea/testData/hierarchy/calls/callers/insideJavadoc/");
}
+ @TestMetadata("insideKDoc")
+ public void testInsideKDoc() throws Exception {
+ runTest("idea/testData/hierarchy/calls/callers/insideKDoc/");
+ }
+
@TestMetadata("kotlinClass")
public void testKotlinClass() throws Exception {
runTest("idea/testData/hierarchy/calls/callers/kotlinClass/");