mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-04 17:20:55 +07:00
move instance methods: leave this refs inside anonymous classes untouched (IDEA-71575)
This commit is contained in:
@@ -61,7 +61,7 @@ public class MoveInstanceMembersUtil {
|
||||
if (expression instanceof PsiThisExpression) {
|
||||
final PsiJavaCodeReferenceElement thisQualifier = ((PsiThisExpression)expression).getQualifier();
|
||||
PsiClass thisClass = thisQualifier == null ? PsiTreeUtil.getParentOfType(expression, PsiClass.class, true) : ((PsiClass)thisQualifier.resolve());
|
||||
if (thisClass != null) {
|
||||
if (thisClass != null && !PsiTreeUtil.isAncestor( refMember,thisClass, false)) {
|
||||
addReferencedMember(map, thisClass, null);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -372,7 +372,7 @@ public class MoveInstanceMethodProcessor extends BaseRefactoringProcessor{
|
||||
body.accept(new JavaRecursiveElementVisitor() {
|
||||
@Override public void visitThisExpression(PsiThisExpression expression) {
|
||||
final PsiClass classReferencedByThis = MoveInstanceMembersUtil.getClassReferencedByThis(expression);
|
||||
if (classReferencedByThis != null) {
|
||||
if (classReferencedByThis != null && !PsiTreeUtil.isAncestor(myMethod, classReferencedByThis, false)) {
|
||||
final PsiElementFactory factory = JavaPsiFacade.getInstance(myProject).getElementFactory();
|
||||
String paramName = getParameterNameToCreate(classReferencedByThis);
|
||||
try {
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
public class Test {
|
||||
private void prepare<caret>AnonymousClasses(JetElement aClass) {
|
||||
aClass.acceptChildren(new JetVisitor() {
|
||||
public void visitJetElement(JetElement element) {
|
||||
element.acceptChildren(this);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
class JetElement {
|
||||
void acceptChildren(JetVisitor v) {}
|
||||
}
|
||||
|
||||
class JetVisitor {}
|
||||
@@ -0,0 +1,17 @@
|
||||
public class Test {
|
||||
}
|
||||
|
||||
|
||||
class JetElement {
|
||||
void acceptChildren(JetVisitor v) {}
|
||||
|
||||
private void prepareAnonymousClasses() {
|
||||
acceptChildren(new JetVisitor() {
|
||||
public void visitJetElement(JetElement element) {
|
||||
element.acceptChildren(this);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
class JetVisitor {}
|
||||
@@ -47,6 +47,8 @@ public class MoveInstanceMethodTest extends LightCodeInsightTestCase {
|
||||
|
||||
public void testIDEADEV11257() throws Exception { doTest(true, 0); }
|
||||
|
||||
public void testThisInAnonymous() throws Exception { doTest(true, 0); }
|
||||
|
||||
public void testEscalateVisibility() throws Exception {
|
||||
doTest(true, 0, VisibilityUtil.ESCALATE_VISIBILITY);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user