remove variable: do not leave tailing loops/ifs (IDEA-124489)

This commit is contained in:
Anna Kozlova
2014-06-04 21:41:29 +04:00
parent 83abbd012d
commit 9d5429e77f
3 changed files with 25 additions and 2 deletions

View File

@@ -18,7 +18,6 @@ package com.intellij.codeInsight.daemon.impl.quickfix;
import com.intellij.psi.*;
import com.intellij.psi.util.InheritanceUtil;
import com.intellij.psi.util.PropertyUtil;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.psi.util.PsiUtil;
import com.intellij.util.IncorrectOperationException;
import gnu.trove.THashSet;
@@ -221,7 +220,12 @@ public class RemoveUnusedVariableUtil {
}
}
else if (element instanceof PsiExpressionStatement && deleteMode != CANCEL) {
element.delete();
final PsiElement parent = element.getParent();
if (parent instanceof PsiIfStatement || parent instanceof PsiLoopStatement && ((PsiLoopStatement)parent).getBody() == element) {
element.replace(JavaPsiFacade.getElementFactory(element.getProject()).createStatementFromText(";", element));
} else {
element.delete();
}
break;
}
else if (element instanceof PsiVariable && element == variable) {

View File

@@ -0,0 +1,9 @@
// "Remove variable 'foo'" "true"
class a {
private int refactorTest(int i) {
int bar = 0;
if (i >0) ;
return bar;
}
}

View File

@@ -0,0 +1,10 @@
// "Remove variable 'foo'" "true"
class a {
private int refactorTest(int i) {
int f<caret>oo = 0;
int bar = 0;
if (i >0) foo++;
return bar;
}
}