mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
inline: choose top level inner class to control flow (IDEA-57027)
This commit is contained in:
@@ -90,10 +90,14 @@ public class InlineLocalHandler extends JavaInlineActionHandler {
|
||||
query.forEach(new Processor<PsiReference>() {
|
||||
public boolean process(final PsiReference psiReference) {
|
||||
final PsiElement element = psiReference.getElement();
|
||||
final PsiClass psiClass = PsiTreeUtil.getParentOfType(element, PsiClass.class);
|
||||
if (psiClass != containingClass) {
|
||||
innerClassesWithUsages.add(psiClass);
|
||||
innerClassUsages.add(element);
|
||||
PsiClass psiClass = PsiTreeUtil.getParentOfType(element, PsiClass.class);
|
||||
while (psiClass != containingClass && psiClass != null) {
|
||||
final PsiClass parentPsiClass = PsiTreeUtil.getParentOfType(psiClass, PsiClass.class, true);
|
||||
if (parentPsiClass == containingClass) {
|
||||
innerClassesWithUsages.add(psiClass);
|
||||
innerClassUsages.add(element);
|
||||
}
|
||||
psiClass = parentPsiClass;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
public class In {
|
||||
|
||||
void fool() {
|
||||
final boolean delete = narr();
|
||||
new Runnable() {
|
||||
public void run() {
|
||||
new Runnable() {
|
||||
public void run() {
|
||||
if (del<caret>ete) {
|
||||
|
||||
}
|
||||
}
|
||||
}.run();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
boolean narr() {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
public class In {
|
||||
|
||||
void fool() {
|
||||
new Runnable() {
|
||||
public void run() {
|
||||
new Runnable() {
|
||||
public void run() {
|
||||
if (narr()) {
|
||||
|
||||
}
|
||||
}
|
||||
}.run();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
boolean narr() {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -34,6 +34,10 @@ public class InlineLocalTest extends LightCodeInsightTestCase {
|
||||
doTest(false);
|
||||
}
|
||||
|
||||
public void testInnerInnerClass() throws Exception {
|
||||
doTest(true);
|
||||
}
|
||||
|
||||
public void testIDEADEV950 () throws Exception {
|
||||
doTest(false);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user