diff --git a/idea/src/org/jetbrains/kotlin/idea/findUsages/KotlinDeclarationGroupRuleProvider.kt b/idea/src/org/jetbrains/kotlin/idea/findUsages/KotlinDeclarationGroupRuleProvider.kt index aebd60938a7..efe91947140 100644 --- a/idea/src/org/jetbrains/kotlin/idea/findUsages/KotlinDeclarationGroupRuleProvider.kt +++ b/idea/src/org/jetbrains/kotlin/idea/findUsages/KotlinDeclarationGroupRuleProvider.kt @@ -20,6 +20,7 @@ import com.intellij.openapi.project.Project import com.intellij.usages.PsiNamedElementUsageGroupBase import com.intellij.usages.Usage import com.intellij.usages.UsageGroup +import com.intellij.usages.UsageInfo2UsageAdapter import com.intellij.usages.impl.FileStructureGroupRuleProvider import com.intellij.usages.rules.PsiElementUsage import com.intellij.usages.rules.UsageGroupingRule @@ -30,10 +31,17 @@ import org.jetbrains.kotlin.psi.psiUtil.parents class KotlinDeclarationGroupingRule(val level: Int = 0) : UsageGroupingRule { override fun groupUsage(usage: Usage): UsageGroup? { - val element = (usage as? PsiElementUsage)?.element ?: return null + var element = (usage as? PsiElementUsage)?.element ?: return null if (element.containingFile !is KtFile) return null + if (element is KtFile) { + val offset = (usage as? UsageInfo2UsageAdapter)?.usageInfo?.navigationOffset + if (offset != null) { + element = element.findElementAt(offset) ?: element + } + } + val parentList = element.parents.filterIsInstance().filterNot { it is KtProperty && it.isLocal }.toList() if (parentList.size <= level) { return null