diff --git a/java/java-impl/src/com/intellij/refactoring/move/moveInstanceMethod/MoveInstanceMethodProcessor.java b/java/java-impl/src/com/intellij/refactoring/move/moveInstanceMethod/MoveInstanceMethodProcessor.java index 6f634bbd9a7e..8e03e5b5976c 100644 --- a/java/java-impl/src/com/intellij/refactoring/move/moveInstanceMethod/MoveInstanceMethodProcessor.java +++ b/java/java-impl/src/com/intellij/refactoring/move/moveInstanceMethod/MoveInstanceMethodProcessor.java @@ -248,7 +248,7 @@ public class MoveInstanceMethodProcessor extends BaseRefactoringProcessor{ if (!methodExpression.isReferenceTo(myMethod)) return; final PsiExpression oldQualifier = methodExpression.getQualifierExpression(); PsiExpression newQualifier = null; - + final PsiClass classReferencedByThis = MoveInstanceMembersUtil.getClassReferencedByThis(methodExpression); if (myTargetVariable instanceof PsiParameter) { final int index = myMethod.getParameterList().getParameterIndex((PsiParameter)myTargetVariable); final PsiExpression[] arguments = expression.getArgumentList().getExpressions(); @@ -264,7 +264,6 @@ public class MoveInstanceMethodProcessor extends BaseRefactoringProcessor{ PsiExpression newArgument = null; - final PsiClass classReferencedByThis = MoveInstanceMembersUtil.getClassReferencedByThis(methodExpression); if (classReferencedByThis != null) { @NonNls String thisArgumentText = null; if (manager.areElementsEquivalent(myMethod.getContainingClass(), classReferencedByThis)) { diff --git a/java/java-tests/testData/refactoring/moveInstanceMethod/OverloadingMethods.java b/java/java-tests/testData/refactoring/moveInstanceMethod/OverloadingMethods.java new file mode 100644 index 000000000000..08cbe7b33c54 --- /dev/null +++ b/java/java-tests/testData/refactoring/moveInstanceMethod/OverloadingMethods.java @@ -0,0 +1,18 @@ +public class A { + + public void m(B b){ + System.out.println(this); + } + + public void show(B b){ + m(b); + } + + public void m (C c){ + System.out.println(this); + } + +} + +class B{} +class C{} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/moveInstanceMethod/OverloadingMethods.java.after b/java/java-tests/testData/refactoring/moveInstanceMethod/OverloadingMethods.java.after new file mode 100644 index 000000000000..f5aea34bd983 --- /dev/null +++ b/java/java-tests/testData/refactoring/moveInstanceMethod/OverloadingMethods.java.after @@ -0,0 +1,18 @@ +public class A { + + public void show(B b){ + b.m(this); + } + + public void m (C c){ + System.out.println(this); + } + +} + +class B{ + public void m(A a){ + System.out.println(a); + } +} +class C{} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/refactoring/moveMethod/MoveInstanceMethodTest.java b/java/java-tests/testSrc/com/intellij/refactoring/moveMethod/MoveInstanceMethodTest.java index 13a7f43f6095..b30e8798151f 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/moveMethod/MoveInstanceMethodTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/moveMethod/MoveInstanceMethodTest.java @@ -51,6 +51,8 @@ public class MoveInstanceMethodTest extends LightRefactoringTestCase { public void testThisInAnonymous() throws Exception { doTest(true, 0); } + public void testOverloadingMethods() throws Exception { doTest(true, 0); } + public void testEscalateVisibility() throws Exception { doTest(true, 0, VisibilityUtil.ESCALATE_VISIBILITY); }