IDEA-83566 Refactor > Rename should support arbitrary method names for Groovy

This commit is contained in:
Maxim.Medvedev
2012-04-05 12:25:43 +04:00
parent baaa5d3424
commit 1d6bc90c82
8 changed files with 209 additions and 9 deletions
@@ -91,7 +91,10 @@ public class RenameJavaMethodProcessor extends RenameJavaMemberProcessor {
ref = element.getReference();
}
if (ref != null) {
renamedReferences.add(ref.handleElementRename(newName));
PsiElement e = processRef(ref, newName);
if (e != null) {
renamedReferences.add(e);
}
}
}
else {
@@ -119,6 +122,17 @@ public class RenameJavaMethodProcessor extends RenameJavaMemberProcessor {
qualifyStaticImportReferences(staticImportHides);
}
/**
* handles rename of refs
* @param ref
* @param newName
* @return
*/
@Nullable
protected PsiElement processRef(PsiReference ref, String newName) {
return ref.handleElementRename(newName);
}
private static void fixNameCollisionsWithInnerClassMethod(final PsiElement element, final String newName,
final Set<PsiMethod> methodAndOverriders, final Set<PsiClass> containingClasses,
final boolean isStatic) throws IncorrectOperationException {
@@ -176,7 +190,7 @@ public class RenameJavaMethodProcessor extends RenameJavaMemberProcessor {
}
}
private static void findHidingMethodWithOtherSignature(final PsiMethod methodToRename, final String newName, final List<UsageInfo> result) {
private void findHidingMethodWithOtherSignature(final PsiMethod methodToRename, final String newName, final List<UsageInfo> result) {
final PsiClass containingClass = methodToRename.getContainingClass();
if (containingClass != null) {
final PsiMethod prototype = getPrototypeWithNewName(methodToRename, newName);
@@ -191,7 +205,8 @@ public class RenameJavaMethodProcessor extends RenameJavaMemberProcessor {
if (((PsiReferenceExpression)element).resolve() == methodToRename) {
final PsiMethodCallExpression copy = (PsiMethodCallExpression)JavaPsiFacade.getElementFactory(element.getProject())
.createExpressionFromText(element.getParent().getText(), element);
final PsiReferenceExpression expression = (PsiReferenceExpression)copy.getMethodExpression().handleElementRename(newName);
final PsiReferenceExpression expression = (PsiReferenceExpression)processRef(copy.getMethodExpression(), newName);
if (expression == null) continue;
final JavaResolveResult resolveResult = expression.advancedResolve(true);
final PsiMember resolveResultElement = (PsiMember)resolveResult.getElement();
if (resolveResult.isValidResult() && resolveResultElement != null) {