IDEA-91421

This commit is contained in:
Anna Kozlova
2012-09-12 17:53:28 +04:00
parent e2b747be71
commit 2c5beb00d0
3 changed files with 25 additions and 5 deletions
@@ -95,11 +95,16 @@ public class InlineLocalHandler extends JavaInlineActionHandler {
while (innerClass != containingClass && innerClass != null) {
final PsiClass parentPsiClass = PsiTreeUtil.getParentOfType(innerClass, PsiClass.class, true);
if (parentPsiClass == containingClass) {
if (innerClass instanceof PsiLambdaExpression && PsiTreeUtil.isAncestor(innerClass, local, false)) {
innerClassesWithUsages.add(((PsiLambdaExpression)innerClass).getBody());
} else {
innerClassesWithUsages.add(innerClass);
}
if (innerClass instanceof PsiLambdaExpression) {
if (PsiTreeUtil.isAncestor(innerClass, local, false)) {
innerClassesWithUsages.add(((PsiLambdaExpression)innerClass).getBody());
} else {
innerClassesWithUsages.add(innerClass);
}
innerClass = parentPsiClass;
continue;
}
innerClassesWithUsages.add(innerClass);
innerClassUsages.add(element);
}
innerClass = parentPsiClass;
@@ -0,0 +1,10 @@
class Test {
{
Runnable x = () -> {
int hello = 9;
System.out.println(hello);
++hello;
System.out.println(he<caret>llo);
};
}
}
@@ -162,6 +162,11 @@ public class InlineLocalTest extends LightCodeInsightTestCase {
doTest(true);
}
public void testLocalVarInsideLambdaBodyWriteUsage() throws Exception {
doTest(true, "Cannot perform refactoring.\n" +
"Variable 'hello' is accessed for writing.");
}
private void doTest(final boolean inlineDef, String conflictMessage) throws Exception {
try {
doTest(inlineDef);