find method duplicates: correct this according to the replacement place ( IDEA-22960 )

This commit is contained in:
anna
2010-05-31 13:07:34 +04:00
parent 559a74ac8f
commit 67ef43adcc
4 changed files with 36 additions and 0 deletions
@@ -406,6 +406,10 @@ public class DuplicatesFinder {
if (contextClass != null && InheritanceUtil.isInheritorOrSelf(thisClass, contextClass, true)) {
contextClass = thisClass;
}
final PsiClass thisCandidate = RefactoringUtil.getThisClass(candidate);
if (thisCandidate != null && InheritanceUtil.isInheritorOrSelf(thisCandidate, contextClass, true)) {
contextClass = thisCandidate;
}
return contextClass != null && match.putParameter(parameter, RefactoringUtil.createThisExpression(patternQualifier.getManager(), contextClass));
}
@@ -0,0 +1,14 @@
public class BaseClass extends JComponent {
}
class SubClass extends BaseClass {
void a() {
System.out.println(getLocation());
}
}
class Util {
public static void met<caret>hod(BaseClass base) {
System.out.println(base.getLocation());
}
}
@@ -0,0 +1,14 @@
public class BaseClass extends JComponent {
}
class SubClass extends BaseClass {
void a() {
Util.method(SubClass.this);
}
}
class Util {
public static void method(BaseClass base) {
System.out.println(base.getLocation());
}
}
@@ -49,4 +49,8 @@ public class FindMethodDuplicatesMiscTest extends FindMethodDuplicatesBaseTest {
public void testDetectNameConflictsWithStatic() throws Exception {
doTest();
}
public void testCorrectThis() throws Exception {
doTest();
}
}