mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-08 15:09:39 +07:00
push down: show conflict if method already exist in target class when super signature was generics (IDEA-155578)
This commit is contained in:
@@ -19,6 +19,7 @@ import com.intellij.codeInsight.AnnotationUtil;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.search.searches.ReferencesSearch;
|
||||
import com.intellij.psi.util.InheritanceUtil;
|
||||
import com.intellij.psi.util.MethodSignatureUtil;
|
||||
import com.intellij.refactoring.RefactoringBundle;
|
||||
import com.intellij.refactoring.util.CommonRefactoringUtil;
|
||||
import com.intellij.refactoring.util.RefactoringConflictsUtil;
|
||||
@@ -157,7 +158,7 @@ public class PushDownConflicts {
|
||||
assert modifierList != null;
|
||||
if (!modifierList.hasModifierProperty(PsiModifier.ABSTRACT)) {
|
||||
PsiMethod method = (PsiMethod)movedMember;
|
||||
final PsiMethod overrider = targetClass.findMethodBySignature(method, false);
|
||||
final PsiMethod overrider = MethodSignatureUtil.findMethodBySuperMethod(targetClass, method, false);
|
||||
if (overrider != null) {
|
||||
String message = RefactoringBundle.message("0.is.already.overridden.in.1",
|
||||
RefactoringUIUtil.getDescription(method, true), RefactoringUIUtil.getDescription(targetClass, false));
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
class Parent<T> {
|
||||
public void fo<caret>o(T p) {
|
||||
System.out.println("a");
|
||||
}
|
||||
}
|
||||
|
||||
class Child extends Parent {
|
||||
public void foo(Object p) {
|
||||
System.out.println("b");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
class Parent<T> {
|
||||
}
|
||||
|
||||
class Child extends Parent {
|
||||
public void foo(Object p) {
|
||||
System.out.println("b");
|
||||
}
|
||||
}
|
||||
@@ -83,6 +83,10 @@ public class PushDownTest extends LightRefactoringTestCase {
|
||||
doTest();
|
||||
}
|
||||
|
||||
public void testAlreadyContainsMethodWithTheSignatureForGenericsSuperclass() throws Exception {
|
||||
doTest(true);
|
||||
}
|
||||
|
||||
private void doTest() {
|
||||
doTest(false);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user