create local from usage: check containing code block (IDEA-178443)

This commit is contained in:
Anna Kozlova
2017-09-04 18:21:54 +03:00
parent 0e7118f5de
commit ed9b3db88f
3 changed files with 11 additions and 6 deletions

View File

@@ -56,12 +56,7 @@ public class CreateLocalFromUsageFix extends CreateVarFromUsageFix {
protected boolean isAvailableImpl(int offset) {
if (!super.isAvailableImpl(offset)) return false;
if(myReferenceExpression.isQualified()) return false;
PsiElement scope = PsiTreeUtil.getParentOfType(myReferenceExpression, PsiModifierListOwner.class);
if (scope instanceof PsiAnonymousClass) {
scope = PsiTreeUtil.getParentOfType(scope, PsiModifierListOwner.class, true);
}
return scope instanceof PsiMethod || scope instanceof PsiClassInitializer ||
scope instanceof PsiLocalVariable;
return PsiTreeUtil.getParentOfType(myReferenceExpression, PsiCodeBlock.class) != null;
}
@Override

View File

@@ -0,0 +1,6 @@
// "Create local variable 'x'" "true"
class other {
Runnable field = () -> {
Object x;
x};
}

View File

@@ -0,0 +1,4 @@
// "Create local variable 'x'" "true"
class other {
Runnable field = () -> {<caret>x};
}