Change Signature: Filter out OverriderUsageInfo(s) corresponding to Kotlin
declarations
This commit is contained in:
+19
-2
@@ -40,6 +40,7 @@ import com.intellij.util.Function;
|
|||||||
import com.intellij.util.containers.ContainerUtil;
|
import com.intellij.util.containers.ContainerUtil;
|
||||||
import com.intellij.util.containers.HashSet;
|
import com.intellij.util.containers.HashSet;
|
||||||
import com.intellij.util.containers.MultiMap;
|
import com.intellij.util.containers.MultiMap;
|
||||||
|
import jet.runtime.typeinfo.JetValueParameter;
|
||||||
import kotlin.KotlinPackage;
|
import kotlin.KotlinPackage;
|
||||||
import kotlin.Unit;
|
import kotlin.Unit;
|
||||||
import kotlin.jvm.functions.Function1;
|
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.codeInsight.JetFileReferencesResolver;
|
||||||
import org.jetbrains.kotlin.idea.core.refactoring.RefactoringPackage;
|
import org.jetbrains.kotlin.idea.core.refactoring.RefactoringPackage;
|
||||||
import org.jetbrains.kotlin.idea.refactoring.changeSignature.usages.*;
|
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.references.JetSimpleNameReference;
|
||||||
import org.jetbrains.kotlin.idea.search.usagesSearch.UsagesSearchPackage;
|
import org.jetbrains.kotlin.idea.search.usagesSearch.UsagesSearchPackage;
|
||||||
import org.jetbrains.kotlin.kdoc.psi.impl.KDocName;
|
import org.jetbrains.kotlin.kdoc.psi.impl.KDocName;
|
||||||
@@ -381,10 +383,25 @@ public class JetChangeSignatureUsageProcessor implements ChangeSignatureUsagePro
|
|||||||
public MultiMap<PsiElement, String> findConflicts(ChangeInfo info, Ref<UsageInfo[]> refUsages) {
|
public MultiMap<PsiElement, String> findConflicts(ChangeInfo info, Ref<UsageInfo[]> refUsages) {
|
||||||
MultiMap<PsiElement, String> result = new MultiMap<PsiElement, String>();
|
MultiMap<PsiElement, String> result = new MultiMap<PsiElement, String>();
|
||||||
|
|
||||||
if (!(info instanceof JetChangeInfo)) {
|
// Delete OverriderUsageInfo for Kotlin declarations since they can't be processed correctly
|
||||||
return result;
|
// TODO: Drop when OverriderUsageInfo.getElement() gets deleted
|
||||||
|
UsageInfo[] usageInfos = refUsages.get();
|
||||||
|
List<UsageInfo> adjustedUsages = KotlinPackage.filterNot(
|
||||||
|
usageInfos,
|
||||||
|
new Function1<UsageInfo, Boolean>() {
|
||||||
|
@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<String> parameterNames = new HashSet<String>();
|
Set<String> parameterNames = new HashSet<String>();
|
||||||
JetChangeInfo changeInfo = (JetChangeInfo) info;
|
JetChangeInfo changeInfo = (JetChangeInfo) info;
|
||||||
PsiElement function = info.getMethod();
|
PsiElement function = info.getMethod();
|
||||||
|
|||||||
Reference in New Issue
Block a user