diff --git a/java/java-impl/src/com/intellij/refactoring/util/duplicates/DuplicatesFinder.java b/java/java-impl/src/com/intellij/refactoring/util/duplicates/DuplicatesFinder.java index cf1ca752b9d9..251118af2797 100644 --- a/java/java-impl/src/com/intellij/refactoring/util/duplicates/DuplicatesFinder.java +++ b/java/java-impl/src/com/intellij/refactoring/util/duplicates/DuplicatesFinder.java @@ -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; } } diff --git a/java/java-tests/testData/refactoring/methodDuplicatesMisc/Qualifiers.java b/java/java-tests/testData/refactoring/methodDuplicatesMisc/Qualifiers.java new file mode 100644 index 000000000000..33d05b35b39d --- /dev/null +++ b/java/java-tests/testData/refactoring/methodDuplicatesMisc/Qualifiers.java @@ -0,0 +1,20 @@ +class Utilz { + static int func(){ + return 1; + } + + static int foo1(){ + return 2*Utilz.func(); + } + + static int foo2(){ + return 2*func(); + } + +} + +class Something { + Something(){ + int x = 2*Utilz.func(); + } +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/methodDuplicatesMisc/Qualifiers.java.after b/java/java-tests/testData/refactoring/methodDuplicatesMisc/Qualifiers.java.after new file mode 100644 index 000000000000..aebe8e7f4851 --- /dev/null +++ b/java/java-tests/testData/refactoring/methodDuplicatesMisc/Qualifiers.java.after @@ -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(); + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/refactoring/FindMethodDuplicatesMiscTest.java b/java/java-tests/testSrc/com/intellij/refactoring/FindMethodDuplicatesMiscTest.java index 08cf2792a90b..fa0fbcbb3f56 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/FindMethodDuplicatesMiscTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/FindMethodDuplicatesMiscTest.java @@ -89,4 +89,8 @@ public class FindMethodDuplicatesMiscTest extends FindMethodDuplicatesBaseTest { public void testSkipNotAccessible() throws Exception { doTest(false); } + + public void testQualifiers() throws Exception { + doTest(); + } } \ No newline at end of file