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

This commit is contained in:
Anna Kozlova
2017-09-05 12:00:19 +03:00
parent 0e7118f5de
commit ed9b3db88f
3 changed files with 11 additions and 6 deletions
@@ -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
@@ -0,0 +1,6 @@
// "Create local variable 'x'" "true"
class other {
Runnable field = () -> {
Object x;
x};
}
@@ -0,0 +1,4 @@
// "Create local variable 'x'" "true"
class other {
Runnable field = () -> {<caret>x};
}