mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
push down: search for method in inheritor by super method signature (IDEA-86806)
This commit is contained in:
@@ -30,6 +30,7 @@ import com.intellij.psi.codeStyle.JavaCodeStyleManager;
|
||||
import com.intellij.psi.javadoc.PsiDocComment;
|
||||
import com.intellij.psi.search.searches.ClassInheritorsSearch;
|
||||
import com.intellij.psi.search.searches.ReferencesSearch;
|
||||
import com.intellij.psi.util.MethodSignatureUtil;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.psi.util.PsiUtil;
|
||||
import com.intellij.psi.util.TypeConversionUtil;
|
||||
@@ -356,7 +357,8 @@ public class PushDownProcessor extends BaseRefactoringProcessor {
|
||||
}
|
||||
else if (member instanceof PsiMethod) {
|
||||
PsiMethod method = (PsiMethod)member;
|
||||
final PsiMethod methodBySignature = targetClass.findMethodBySignature(method, false);
|
||||
final PsiMethod methodBySignature =
|
||||
MethodSignatureUtil.findMethodBySuperSignature(targetClass, method.getSignature(substitutor), false);
|
||||
if (methodBySignature == null) {
|
||||
final boolean wasInterface = myClass.isInterface();
|
||||
newMember = (PsiMethod)targetClass.add(method);
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
abstract class BaseTask<T, S extends BaseTask<T, S>> {
|
||||
public abstract S make<caret>Task(int depth, ParallelStream<T> coll);
|
||||
}
|
||||
|
||||
|
||||
class ForEachTask<T> extends BaseTask<T, ForEachTask<T>> {
|
||||
public ForEachTask<T> makeTask(int depth, ParallelStream<T> coll) {
|
||||
return new ForEachTask<T>();
|
||||
}
|
||||
}
|
||||
|
||||
class ParallelStream<T> {
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
abstract class BaseTask<T, S extends BaseTask<T, S>> {
|
||||
}
|
||||
|
||||
|
||||
class ForEachTask<T> extends BaseTask<T, ForEachTask<T>> {
|
||||
public ForEachTask<T> makeTask(int depth, ParallelStream<T> coll) {
|
||||
return new ForEachTask<T>();
|
||||
}
|
||||
}
|
||||
|
||||
class ParallelStream<T> {
|
||||
}
|
||||
@@ -115,6 +115,10 @@ public class PushDownTest extends LightRefactoringTestCase {
|
||||
doTest();
|
||||
}
|
||||
|
||||
public void testOverridingMethodWithSubst() throws Exception {
|
||||
doTest();
|
||||
}
|
||||
|
||||
public void testSameClassInterface() throws Exception {
|
||||
final String filePath = "/refactoring/pushDown/" + getTestName(false) + ".java";
|
||||
configureByFile(filePath);
|
||||
|
||||
Reference in New Issue
Block a user