diff --git a/java/java-impl/src/com/intellij/codeInspection/defUse/DefUseInspection.java b/java/java-impl/src/com/intellij/codeInspection/defUse/DefUseInspection.java index a017bd1d11c5..edd718b0bd7f 100644 --- a/java/java-impl/src/com/intellij/codeInspection/defUse/DefUseInspection.java +++ b/java/java-impl/src/com/intellij/codeInspection/defUse/DefUseInspection.java @@ -118,8 +118,13 @@ public class DefUseInspection extends DefUseInspectionBase { else if (res == RemoveUnusedVariableUtil.MAKE_STATEMENT) { final PsiElementFactory factory = JavaPsiFacade.getInstance(project).getElementFactory(); final PsiStatement statementFromText = factory.createStatementFromText(psiInitializer.getText() + ";", null); - declaration.getParent().addAfter(statementFromText, declaration); - elementToDelete.delete(); + final PsiElement parent = elementToDelete.getParent(); + if (parent instanceof PsiExpressionStatement) { + parent.replace(statementFromText); + } else { + declaration.getParent().addAfter(statementFromText, declaration); + elementToDelete.delete(); + } } } catch (IncorrectOperationException e) { diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/unusedAssignment/afterSideEffect.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/unusedAssignment/afterSideEffect.java new file mode 100644 index 000000000000..acbbf18820de --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/unusedAssignment/afterSideEffect.java @@ -0,0 +1,15 @@ +// "Remove redundant assignment" "true" +class A { + A a = null; + String m(String str) { + return str; + } + + { + String ss = ""; + + System.out.println(); + + a.m(ss); + } +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/unusedAssignment/beforeSideEffect.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/unusedAssignment/beforeSideEffect.java new file mode 100644 index 000000000000..014f3fcb3358 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/unusedAssignment/beforeSideEffect.java @@ -0,0 +1,15 @@ +// "Remove redundant assignment" "true" +class A { + A a = null; + String m(String str) { + return str; + } + + { + String ss = ""; + + System.out.println(); + + ss = a.m(ss); + } +} \ No newline at end of file