mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
inline superclass: preserve superclass extends/implements list (IDEA-69339)
This commit is contained in:
+25
-1
@@ -44,6 +44,7 @@ import com.intellij.util.Processor;import com.intellij.util.containers.HashMap;
|
||||
import com.intellij.util.containers.MultiMap;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@@ -65,13 +66,36 @@ public class InlineSuperClassRefactoringProcessor extends FixableUsagesRefactori
|
||||
return true;
|
||||
}
|
||||
});
|
||||
final List<MemberInfo> members = memberInfoStorage.getClassMemberInfos(mySuperClass);
|
||||
List<MemberInfo> members = memberInfoStorage.getClassMemberInfos(mySuperClass);
|
||||
for (MemberInfo member : members) {
|
||||
member.setChecked(true);
|
||||
}
|
||||
members = appendSuperRefs(members);
|
||||
myMemberInfos = members.toArray(new MemberInfo[members.size()]);
|
||||
}
|
||||
|
||||
private List<MemberInfo> appendSuperRefs(List<MemberInfo> members) {
|
||||
if (!mySuperClass.isInterface()) {
|
||||
PsiReferenceList extendsList = mySuperClass.getExtendsList();
|
||||
if (extendsList != null && extendsList.getReferenceElements().length > 0) {
|
||||
PsiElement resolve = extendsList.getReferenceElements()[0].resolve();
|
||||
if (resolve instanceof PsiClass) {
|
||||
members = new ArrayList<MemberInfo>(members);
|
||||
|
||||
MemberInfo memberInfo = new MemberInfo((PsiMember)resolve, true, extendsList) {
|
||||
{
|
||||
overrides = false;
|
||||
}
|
||||
};
|
||||
|
||||
memberInfo.setChecked(true);
|
||||
members.add(memberInfo);
|
||||
}
|
||||
}
|
||||
}
|
||||
return members;
|
||||
}
|
||||
|
||||
protected UsageViewDescriptor createUsageViewDescriptor(final UsageInfo[] usages) {
|
||||
return new InlineSuperClassUsageViewDescriptor(mySuperClass);
|
||||
}
|
||||
|
||||
@@ -388,7 +388,11 @@ public class PushDownProcessor extends BaseRefactoringProcessor {
|
||||
final PsiClass aClass = (PsiClass)member;
|
||||
if (!targetClass.isInheritor(aClass, false)) {
|
||||
PsiJavaCodeReferenceElement classRef = factory.createClassReferenceElement(aClass);
|
||||
targetClass.getImplementsList().add(classRef);
|
||||
if (aClass.isInterface()) {
|
||||
targetClass.getImplementsList().add(classRef);
|
||||
} else {
|
||||
targetClass.getExtendsList().add(classRef);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
|
||||
interface Int {}
|
||||
|
||||
class Dummy {}
|
||||
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
class Test extends Dummy implements Int {
|
||||
Test(){}
|
||||
|
||||
public void main() {}
|
||||
}
|
||||
|
||||
class U {
|
||||
public static void main(String[] args) {
|
||||
new Test().main();
|
||||
}
|
||||
}
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
|
||||
interface Int {}
|
||||
|
||||
class Dummy {}
|
||||
|
||||
public class Super extends Dummy implements Int {
|
||||
public void main() {}
|
||||
}
|
||||
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
class Test extends Super{
|
||||
Test(){}
|
||||
}
|
||||
|
||||
class U {
|
||||
public static void main(String[] args) {
|
||||
new Test().main();
|
||||
}
|
||||
}
|
||||
@@ -171,6 +171,10 @@ public class InlineSuperClassTest extends MultiFileTestCase {
|
||||
doTestMultipleSubclasses();
|
||||
}
|
||||
|
||||
public void testInlineSuperclassExtendsList() throws Exception {
|
||||
doTest();
|
||||
}
|
||||
|
||||
private void doTestMultipleSubclasses() throws Exception {
|
||||
doTest(new PerformAction() {
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user