inline local: fix usages inside lambda body (IDEA-151960)

This commit is contained in:
Anna Kozlova
2016-02-24 11:22:01 +01:00
parent 9b850d3996
commit af1a898ee8
4 changed files with 22 additions and 5 deletions

View File

@@ -99,11 +99,9 @@ public class InlineLocalHandler extends JavaInlineActionHandler {
if (innerClass instanceof PsiLambdaExpression) {
if (PsiTreeUtil.isAncestor(innerClass, local, false)) {
innerClassesWithUsages.add(element);
} else {
innerClassesWithUsages.add(innerClass);
}
innerClass = parentPsiClass;
continue;
innerClass = parentPsiClass;
continue;
}
}
innerClassesWithUsages.add(innerClass);
innerClassUsages.add(element);

View File

@@ -0,0 +1,8 @@
class Test {
{
String hello = new String("hello");
Runnable x = () -> {
System.out.println(<caret>hello);
};
}
}

View File

@@ -0,0 +1,7 @@
class Test {
{
Runnable x = () -> {
System.out.println(new String("hello"));
};
}
}

View File

@@ -204,6 +204,10 @@ public class InlineLocalTest extends LightCodeInsightTestCase {
doTest(true);
}
public void testLocalVarUsedInLambdaBody() throws Exception {
doTest(true);
}
public void testCastAroundLambda() throws Exception {
doTest(true);
}