From 2cbb8d03c00db87573cedb68c9da620ed8f1ba77 Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Tue, 16 May 2017 15:46:52 +0200 Subject: [PATCH] Find Usages on "override val" in constructor asks about base usages Also fix long-standing bug with "title" parameter being ignored when displaying messages #KT-17845 Fixed --- .../src/org/jetbrains/kotlin/idea/core/util/messages.kt | 2 +- .../kotlin/idea/findUsages/KotlinFindUsagesHandlerFactory.kt | 5 ++++- .../kotlin/idea/refactoring/kotlinRefactoringUtil.kt | 4 ++-- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/util/messages.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/util/messages.kt index 3fc8c4ac2e4..1142012350d 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/util/messages.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/util/messages.kt @@ -25,7 +25,7 @@ import javax.swing.Icon fun showYesNoCancelDialog(key: String, project: Project, message: String, title: String, icon: Icon, default: Int?): Int { return if (!ApplicationManager.getApplication().isUnitTestMode) { - Messages.showYesNoCancelDialog(project, message, message, icon) + Messages.showYesNoCancelDialog(project, message, title, icon) } else { callInTestMode(key, default) diff --git a/idea/src/org/jetbrains/kotlin/idea/findUsages/KotlinFindUsagesHandlerFactory.kt b/idea/src/org/jetbrains/kotlin/idea/findUsages/KotlinFindUsagesHandlerFactory.kt index 70ef0514d6f..93d3db1ba5c 100644 --- a/idea/src/org/jetbrains/kotlin/idea/findUsages/KotlinFindUsagesHandlerFactory.kt +++ b/idea/src/org/jetbrains/kotlin/idea/findUsages/KotlinFindUsagesHandlerFactory.kt @@ -29,7 +29,6 @@ import com.intellij.psi.PsiElement import com.intellij.psi.search.searches.OverridingMethodsSearch import org.jetbrains.kotlin.asJava.toLightMethods import org.jetbrains.kotlin.asJava.unwrapped -import org.jetbrains.kotlin.idea.KotlinBundle import org.jetbrains.kotlin.idea.findUsages.handlers.DelegatingFindMemberUsagesHandler import org.jetbrains.kotlin.idea.findUsages.handlers.KotlinFindClassUsagesHandler import org.jetbrains.kotlin.idea.findUsages.handlers.KotlinFindMemberUsagesHandler @@ -80,6 +79,10 @@ class KotlinFindUsagesHandlerFactory(project: Project) : FindUsagesHandlerFactor is KtParameter -> { if (canAsk) { + if (element.hasValOrVar()) { + val declarationsToSearch = checkSuperMethods(element, null, "find usages of") + return handlerForMultiple(element, declarationsToSearch) + } val function = element.ownerFunction if (function != null && function.isOverridable()) { val psiMethod = function.toLightMethods().singleOrNull() diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/kotlinRefactoringUtil.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/kotlinRefactoringUtil.kt index 3b3e04a3f32..152b746e522 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/kotlinRefactoringUtil.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/kotlinRefactoringUtil.kt @@ -848,7 +848,7 @@ fun checkSuperMethods( return overriddenElementsToDescriptor.entries.map { entry -> val (element, descriptor) = entry val description = when (element) { - is KtNamedFunction, is KtProperty -> formatClassDescriptor(descriptor.containingDeclaration) + is KtNamedFunction, is KtProperty, is KtParameter -> formatClassDescriptor(descriptor.containingDeclaration) is PsiMethod -> { val psiClass = element.containingClass ?: error("Invalid element: ${element.getText()}") formatPsiClass(psiClass, true, false) @@ -891,7 +891,7 @@ fun checkSuperMethods( val overriddenElementsToDescriptor = HashMap() for (overriddenDescriptor in DescriptorUtils.getAllOverriddenDescriptors(declarationDescriptor)) { val overriddenDeclaration = DescriptorToSourceUtilsIde.getAnyDeclaration(project, overriddenDescriptor) ?: continue - if (overriddenDeclaration is KtNamedFunction || overriddenDeclaration is KtProperty || overriddenDeclaration is PsiMethod) { + if (overriddenDeclaration is KtNamedFunction || overriddenDeclaration is KtProperty || overriddenDeclaration is PsiMethod || overriddenDeclaration is KtParameter) { overriddenElementsToDescriptor[overriddenDeclaration] = overriddenDescriptor } }