From c96349f42b9c5fafcb01ba7e559fb5db679733d8 Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Tue, 30 Jun 2015 18:08:57 +0300 Subject: [PATCH] Change Signature: Filter out OverriderUsageInfo(s) corresponding to Kotlin declarations --- .../JetChangeSignatureUsageProcessor.java | 21 +++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/JetChangeSignatureUsageProcessor.java b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/JetChangeSignatureUsageProcessor.java index c80ab2dd743..25c2def5e92 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/JetChangeSignatureUsageProcessor.java +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/JetChangeSignatureUsageProcessor.java @@ -40,6 +40,7 @@ import com.intellij.util.Function; import com.intellij.util.containers.ContainerUtil; import com.intellij.util.containers.HashSet; import com.intellij.util.containers.MultiMap; +import jet.runtime.typeinfo.JetValueParameter; import kotlin.KotlinPackage; import kotlin.Unit; import kotlin.jvm.functions.Function1; @@ -55,6 +56,7 @@ import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde; import org.jetbrains.kotlin.idea.codeInsight.JetFileReferencesResolver; import org.jetbrains.kotlin.idea.core.refactoring.RefactoringPackage; import org.jetbrains.kotlin.idea.refactoring.changeSignature.usages.*; +import org.jetbrains.kotlin.idea.refactoring.rename.UnresolvableConventionViolationUsageInfo; import org.jetbrains.kotlin.idea.references.JetSimpleNameReference; import org.jetbrains.kotlin.idea.search.usagesSearch.UsagesSearchPackage; import org.jetbrains.kotlin.kdoc.psi.impl.KDocName; @@ -381,10 +383,25 @@ public class JetChangeSignatureUsageProcessor implements ChangeSignatureUsagePro public MultiMap findConflicts(ChangeInfo info, Ref refUsages) { MultiMap result = new MultiMap(); - if (!(info instanceof JetChangeInfo)) { - return result; + // Delete OverriderUsageInfo for Kotlin declarations since they can't be processed correctly + // TODO: Drop when OverriderUsageInfo.getElement() gets deleted + UsageInfo[] usageInfos = refUsages.get(); + List adjustedUsages = KotlinPackage.filterNot( + usageInfos, + new Function1() { + @Override + public Boolean invoke(UsageInfo info) { + return info instanceof OverriderUsageInfo && + ((OverriderUsageInfo) info).getOverridingMethod() instanceof KotlinLightMethod; + } + } + ); + if (adjustedUsages.size() < usageInfos.length) { + refUsages.set(adjustedUsages.toArray(new UsageInfo[adjustedUsages.size()])); } + if (!(info instanceof JetChangeInfo)) return result; + Set parameterNames = new HashSet(); JetChangeInfo changeInfo = (JetChangeInfo) info; PsiElement function = info.getMethod();