DeleteSideEffectsAwareFix: do not remove message for non-expression-statement

The fix is still useful if invoked for if condition/switch expression/etc. Fixes IDEA-180372.
This commit is contained in:
Tagir Valeev
2017-10-11 15:43:06 +07:00
parent d292076730
commit a07277260c
3 changed files with 26 additions and 1 deletions

View File

@@ -47,7 +47,8 @@ public class DeleteSideEffectsAwareFix extends LocalQuickFixAndIntentionActionOn
if (sideEffects.isEmpty()) {
myMessage = QuickFixBundle.message("delete.element.fix.text");
}
else if (sideEffects.size() == 1 && sideEffects.get(0) == PsiUtil.skipParenthesizedExprDown(expression)) {
else if (sideEffects.size() == 1 && statement instanceof PsiExpressionStatement &&
sideEffects.get(0) == PsiUtil.skipParenthesizedExprDown(expression)) {
// "Remove unnecessary parentheses" action is already present which will do the same
myMessage = "";
}

View File

@@ -0,0 +1,11 @@
// "Extract side effect" "true"
class Test {
void test(int x) {
foo(x, 2);
}
boolean foo(int x, int y) {
System.out.println(x);
return x > y;
}
}

View File

@@ -0,0 +1,13 @@
// "Extract side effect" "true"
class Test {
void test(int x) {
i<caret>f(foo(x, 2)) {
}
}
boolean foo(int x, int y) {
System.out.println(x);
return x > y;
}
}