From 2e4e9ebc58b459bc662da98610afb2b3ad3348b6 Mon Sep 17 00:00:00 2001 From: anna Date: Mon, 15 Oct 2012 16:04:36 +0200 Subject: [PATCH] method ref: conflict when change signature of method used in method ref (IDEA-92601) --- .../changeSignature/JavaChangeSignatureUsageProcessor.java | 5 ++++- .../changeSignature/JavaChangeSignatureUsageSearcher.java | 3 +++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureUsageProcessor.java b/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureUsageProcessor.java index 553c36df5d13..02db17d61298 100644 --- a/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureUsageProcessor.java +++ b/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureUsageProcessor.java @@ -885,8 +885,9 @@ public class JavaChangeSignatureUsageProcessor implements ChangeSignatureUsagePr } for (UsageInfo usageInfo : usagesSet) { + final PsiElement element = usageInfo.getElement(); if (usageInfo instanceof OverriderUsageInfo) { - final PsiMethod method = (PsiMethod)usageInfo.getElement(); + final PsiMethod method = (PsiMethod)element; final PsiMethod baseMethod = ((OverriderUsageInfo)usageInfo).getBaseMethod(); final int delta = baseMethod.getParameterList().getParametersCount() - method.getParameterList().getParametersCount(); if (delta > 0) { @@ -895,6 +896,8 @@ public class JavaChangeSignatureUsageProcessor implements ChangeSignatureUsagePr conflictDescriptions.putValue(baseMethod, "Implicit last parameter should not be deleted"); } } + } else if (element instanceof PsiMethodReferenceExpression) { + conflictDescriptions.putValue(element, "Changed method is used in method reference"); } } diff --git a/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureUsageSearcher.java b/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureUsageSearcher.java index 80fd509f233e..7ab6ce98004a 100644 --- a/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureUsageSearcher.java +++ b/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureUsageSearcher.java @@ -266,6 +266,9 @@ class JavaChangeSignatureUsageSearcher { else if (element instanceof XmlElement) { result.add(new MoveRenameUsageInfo(reference, method)); } + else if (element instanceof PsiMethodReferenceExpression) { + result.add(new UsageInfo(reference)); + } } }