mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
inline super: push class initializers as well (IDEA-172790)
This commit is contained in:
+4
-1
@@ -329,6 +329,9 @@ public class JavaPushDownDelegate extends PushDownDelegate<MemberInfo, PsiMember
|
||||
newMember = (PsiMember)targetClass.add(member);
|
||||
}
|
||||
}
|
||||
else if (member instanceof PsiClassInitializer) {
|
||||
newMember = (PsiMember)targetClass.add(member);
|
||||
}
|
||||
|
||||
if (newMember != null) {
|
||||
decodeRefs(sourceClass, newMember, targetClass);
|
||||
@@ -348,7 +351,7 @@ public class JavaPushDownDelegate extends PushDownDelegate<MemberInfo, PsiMember
|
||||
for (MemberInfoBase<? extends PsiElement> memberInfo : pushDownData.getMembersToMove()) {
|
||||
final PsiElement member = memberInfo.getMember();
|
||||
|
||||
if (member instanceof PsiField) {
|
||||
if (member instanceof PsiField || member instanceof PsiClassInitializer) {
|
||||
member.delete();
|
||||
}
|
||||
else if (member instanceof PsiMethod) {
|
||||
|
||||
@@ -20,9 +20,9 @@ import com.intellij.psi.*;
|
||||
import com.intellij.psi.util.PsiFormatUtil;
|
||||
import com.intellij.refactoring.RefactoringBundle;
|
||||
import com.intellij.refactoring.classMembers.MemberInfoBase;
|
||||
import java.util.HashSet;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
@@ -79,6 +79,11 @@ public class MemberInfo extends MemberInfoBase<PsiMember> {
|
||||
}
|
||||
isStatic = aClass.hasModifierProperty(PsiModifier.STATIC);
|
||||
}
|
||||
else if (member instanceof PsiClassInitializer) {
|
||||
isStatic = member.hasModifierProperty(PsiModifier.STATIC);
|
||||
overrides = null;
|
||||
displayName = isStatic ? "static {...}" : "{...}";
|
||||
}
|
||||
else {
|
||||
LOG.assertTrue(false);
|
||||
isStatic = false;
|
||||
@@ -129,6 +134,12 @@ public class MemberInfo extends MemberInfoBase<PsiMember> {
|
||||
result.add(new MemberInfo(field));
|
||||
}
|
||||
}
|
||||
|
||||
for (PsiClassInitializer initializer : subclass.getInitializers()) {
|
||||
if (filter.includeMember(initializer)) {
|
||||
result.add(new MemberInfo(initializer));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static void extractSuperInterfaces(final PsiClass subclass,
|
||||
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
class Test {
|
||||
static {
|
||||
System.out.println("static");
|
||||
}
|
||||
|
||||
{
|
||||
System.out.println("instance");
|
||||
}
|
||||
|
||||
void foo() {
|
||||
Test s = new Test();
|
||||
}
|
||||
}
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
class Super {
|
||||
{
|
||||
System.out.println("instance");
|
||||
}
|
||||
|
||||
static {
|
||||
System.out.println("static");
|
||||
}
|
||||
}
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
class Test extends Super{
|
||||
void foo() {
|
||||
Super s = new Super();
|
||||
}
|
||||
}
|
||||
@@ -53,6 +53,7 @@ public class InlineSuperClassTest extends MultiFileTestCase {
|
||||
public void testConflictMultipleConstructors() { doTest(true, false); }
|
||||
public void testMultipleConstructors() { doTest(); }
|
||||
public void testImplicitChildConstructor() { doTest(); }
|
||||
public void testClassInitializers() { doTest(); }
|
||||
public void testStaticMembers() { doTest(); }
|
||||
public void testSuperReference() { doTest(); }
|
||||
public void testInnerClassReference() { doTest(); }
|
||||
|
||||
Reference in New Issue
Block a user