mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
merge pulled interfaces (IDEA-87191)
This commit is contained in:
@@ -33,8 +33,10 @@ import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.application.ModalityState;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.progress.ProgressManager;
|
||||
import com.intellij.openapi.util.Comparing;
|
||||
import com.intellij.openapi.util.Condition;
|
||||
import com.intellij.openapi.util.Key;
|
||||
import com.intellij.openapi.util.Ref;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.codeStyle.CodeStyleSettings;
|
||||
@@ -62,6 +64,7 @@ import com.intellij.util.IncorrectOperationException;
|
||||
import com.intellij.util.Query;
|
||||
import com.intellij.util.VisibilityUtil;
|
||||
import com.intellij.util.containers.HashMap;
|
||||
import com.intellij.util.containers.MultiMap;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@@ -148,7 +151,7 @@ public class PullUpHelper extends BaseRefactoringProcessor{
|
||||
final Set<PsiMember> methodsToSearchDuplicates = new HashSet<PsiMember>();
|
||||
for (PsiMember psiMember : myMembersAfterMove) {
|
||||
if (psiMember instanceof PsiMethod && ((PsiMethod)psiMember).getBody() != null) {
|
||||
methodsToSearchDuplicates.add((PsiMethod)psiMember);
|
||||
methodsToSearchDuplicates.add(psiMember);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -289,7 +292,7 @@ public class PullUpHelper extends BaseRefactoringProcessor{
|
||||
PsiJavaCodeReferenceElement ref = mySourceClass.equals(sourceReferenceList.getParent()) ?
|
||||
RefactoringUtil.removeFromReferenceList(sourceReferenceList, aClass) :
|
||||
RefactoringUtil.findReferenceToClass(sourceReferenceList, aClass);
|
||||
if (ref != null) {
|
||||
if (ref != null && !myTargetSuperClass.isInheritor(aClass, false)) {
|
||||
RefactoringUtil.replaceMovedMemberTypeParameters(ref, PsiUtil.typeParametersIterable(mySourceClass), substitutor, elementFactory);
|
||||
final PsiReferenceList referenceList =
|
||||
myTargetSuperClass.isInterface() ? myTargetSuperClass.getExtendsList() : myTargetSuperClass.getImplementsList();
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
class Base implements I<String> {}
|
||||
class Te<caret>st extends Base implements I<String> {}
|
||||
interface I<T>{}
|
||||
@@ -0,0 +1,3 @@
|
||||
class Base implements I<String> {}
|
||||
class Test extends Base {}
|
||||
interface I<T>{}
|
||||
@@ -111,6 +111,10 @@ public class PullUpTest extends LightRefactoringTestCase {
|
||||
doTest(false, new RefactoringTestUtil.MemberDescriptor("foo", PsiMethod.class));
|
||||
}
|
||||
|
||||
public void testMergeInterfaces() throws Exception {
|
||||
doTest(false, new RefactoringTestUtil.MemberDescriptor("I", PsiClass.class));
|
||||
}
|
||||
|
||||
private void doTest(RefactoringTestUtil.MemberDescriptor... membersToFind) throws Exception {
|
||||
doTest(true, membersToFind);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user