mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-06 03:21:12 +07:00
extract method: enable duplicates inside inner classes called methods from outer (IDEA-143504)
This commit is contained in:
@@ -376,10 +376,13 @@ public class DuplicatesFinder {
|
||||
final PsiClass patternClass = RefactoringChangeUtil.getThisClass(pattern);
|
||||
final PsiClass candidateClass = RefactoringChangeUtil.getThisClass(candidate);
|
||||
if (resolveResult1 == resolveResult2 &&
|
||||
resolveResult1 instanceof PsiMember &&
|
||||
!InheritanceUtil.isInheritorOrSelf(candidateClass, patternClass, true) &&
|
||||
InheritanceUtil.isInheritorOrSelf(candidateClass, ((PsiMember)resolveResult1).getContainingClass(), true)) {
|
||||
return false;
|
||||
resolveResult1 instanceof PsiMember) {
|
||||
final PsiClass containingClass = ((PsiMember)resolveResult1).getContainingClass();
|
||||
if (!InheritanceUtil.isInheritorOrSelf(candidateClass, patternClass, true) &&
|
||||
InheritanceUtil.isInheritorOrSelf(candidateClass, containingClass, true) &&
|
||||
InheritanceUtil.isInheritorOrSelf(patternClass, containingClass, true)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
import java.util.*;
|
||||
|
||||
class Main {
|
||||
|
||||
private final Map<Integer, Map<String, String>> myScheduledUpdates = null;
|
||||
|
||||
void foo() {
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
<selection>myScheduledUpdates.keySet().toArray(new Object[myScheduledUpdates.keySet().size()])</selection>;
|
||||
}
|
||||
};
|
||||
myScheduledUpdates.keySet().toArray(new Object[myScheduledUpdates.keySet().size()]);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
import java.util.*;
|
||||
|
||||
class Main {
|
||||
|
||||
private final Map<Integer, Map<String, String>> myScheduledUpdates = null;
|
||||
|
||||
void foo() {
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
newMethod();
|
||||
}
|
||||
};
|
||||
newMethod();
|
||||
}
|
||||
|
||||
private Object[] newMethod() {
|
||||
return myScheduledUpdates.keySet().toArray(new Object[myScheduledUpdates.keySet().size()]);
|
||||
}
|
||||
}
|
||||
@@ -225,6 +225,10 @@ public class ExtractMethodTest extends LightCodeInsightTestCase {
|
||||
doDuplicatesTest();
|
||||
}
|
||||
|
||||
public void testDuplicatesFromAnonymous() throws Exception {
|
||||
doDuplicatesTest();
|
||||
}
|
||||
|
||||
public void testCodeDuplicatesWithContinueNoReturn() throws Exception {
|
||||
doDuplicatesTest();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user