method duplicates: correctly process qualifiers (IDEA-79954)

This commit is contained in:
anna
2012-01-16 17:12:19 +01:00
parent 194385c953
commit a71612a457
4 changed files with 46 additions and 2 deletions
@@ -395,7 +395,7 @@ public class DuplicatesFinder {
PsiClass contextClass = PsiTreeUtil.getParentOfType(pattern, PsiClass.class);
if (candidateQualifier instanceof PsiReferenceExpression) {
final PsiElement resolved = ((PsiReferenceExpression)candidateQualifier).resolve();
if (resolved instanceof PsiClass && contextClass != null && contextClass.isInheritor((PsiClass)resolved, true)) {
if (resolved instanceof PsiClass && contextClass != null && InheritanceUtil.isInheritorOrSelf(contextClass, (PsiClass)resolved, true)) {
return true;
}
}
@@ -430,7 +430,7 @@ public class DuplicatesFinder {
final PsiElement resolved = ((PsiReferenceExpression)patternQualifier).resolve();
if (resolved instanceof PsiClass) {
final PsiClass classContext = PsiTreeUtil.getParentOfType(candidate, PsiClass.class);
if (classContext != null && classContext.isInheritor((PsiClass)resolved, true)) {
if (classContext != null && InheritanceUtil.isInheritorOrSelf(classContext, (PsiClass)resolved, true)) {
return true;
}
}
@@ -0,0 +1,20 @@
class Utilz {
static int func(){
return 1;
}
static int foo1(){
return 2*Utilz.func();
}
static int fo<caret>o2(){
return 2*func();
}
}
class Something {
Something(){
int x = 2*Utilz.func();
}
}
@@ -0,0 +1,20 @@
class Utilz {
static int func(){
return 1;
}
static int foo1(){
return foo2();
}
static int foo2(){
return 2*func();
}
}
class Something {
Something(){
int x = Utilz.foo2();
}
}
@@ -89,4 +89,8 @@ public class FindMethodDuplicatesMiscTest extends FindMethodDuplicatesBaseTest {
public void testSkipNotAccessible() throws Exception {
doTest(false);
}
public void testQualifiers() throws Exception {
doTest();
}
}