IntroduceVariable scope fixed

This commit is contained in:
Danila Ponomarenko
2012-06-08 19:16:51 +04:00
parent c4950c8dd5
commit 09281b34e4
@@ -43,18 +43,24 @@ public class IntroduceVariableAction extends BaseRunRefactoringAction<IntroduceV
if (element == null) {
return false;
}
final PsiStatement statement = PsiTreeUtil.getParentOfType(element, PsiStatement.class, false);
if (statement == null || !(statement instanceof PsiExpressionStatement)) {
final PsiExpression expression = getExpression(element);
if (expression == null || !(expression.getParent() instanceof PsiExpressionStatement)) {
return false;
}
final PsiExpressionStatement expressionStatement = (PsiExpressionStatement)statement;
final PsiExpression expression = expressionStatement.getExpression();
return expression.getType() != PsiType.VOID && !(expression instanceof PsiAssignmentExpression);
}
@Nullable
private static PsiExpression getExpression(@NotNull PsiElement element) {
PsiExpression expression = PsiTreeUtil.getParentOfType(element, PsiExpression.class, false);
while (expression != null && expression instanceof PsiReferenceExpression) {
expression = PsiTreeUtil.getParentOfType(expression, PsiExpression.class, true);
}
return expression;
}
@Nullable
protected static PsiElement getElement(Editor editor, @NotNull PsiFile file) {
if (!file.getManager().isInProject(file)) return null;