mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-08-16 08:39:59 +07:00
IDEA-79529 Groovy: Change Signature Refactoring doesn't work when renaming a method which implements Java interface
This commit is contained in:
@@ -15,8 +15,11 @@
|
||||
*/
|
||||
package com.intellij.refactoring.changeSignature;
|
||||
|
||||
import com.intellij.lang.LanguageRefactoringSupport;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.JavaTokenType;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiMethod;
|
||||
import com.intellij.psi.impl.source.tree.Factory;
|
||||
import com.intellij.psi.impl.source.tree.SharedImplUtil;
|
||||
import com.intellij.psi.util.PsiUtilBase;
|
||||
@@ -97,6 +100,12 @@ public class ChangeSignatureUtil {
|
||||
}
|
||||
}
|
||||
|
||||
public static void invokeChangeSignatureOn(PsiMethod method, Project project) {
|
||||
final ChangeSignatureHandler handler =
|
||||
LanguageRefactoringSupport.INSTANCE.forLanguage(method.getLanguage()).getChangeSignatureHandler();
|
||||
handler.invoke(project, new PsiElement[]{method}, null);
|
||||
}
|
||||
|
||||
public interface ChildrenGenerator<Parent extends PsiElement, Child extends PsiElement> {
|
||||
List<Child> getChildren(Parent parent);
|
||||
}
|
||||
|
||||
+3
-3
@@ -63,9 +63,9 @@ public class JavaChangeSignatureHandler implements ChangeSignatureHandler {
|
||||
}
|
||||
}
|
||||
|
||||
public void invoke(@NotNull final Project project, @NotNull final PsiElement[] elements, final DataContext dataContext) {
|
||||
public void invoke(@NotNull final Project project, @NotNull final PsiElement[] elements, @Nullable final DataContext dataContext) {
|
||||
if (elements.length != 1) return;
|
||||
Editor editor = PlatformDataKeys.EDITOR.getData(dataContext);
|
||||
Editor editor = dataContext != null ? PlatformDataKeys.EDITOR.getData(dataContext) : null;
|
||||
invokeOnElement(project, editor, elements[0]);
|
||||
}
|
||||
|
||||
@@ -76,7 +76,7 @@ public class JavaChangeSignatureHandler implements ChangeSignatureHandler {
|
||||
if (newMethod == null) return;
|
||||
|
||||
if (!newMethod.equals(method)) {
|
||||
invoke(newMethod, project, editor);
|
||||
ChangeSignatureUtil.invokeChangeSignatureOn(newMethod, project);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user