diff --git a/java/java-impl/src/com/intellij/refactoring/safeDelete/usageInfo/SafeDeleteReferenceJavaDeleteUsageInfo.java b/java/java-impl/src/com/intellij/refactoring/safeDelete/usageInfo/SafeDeleteReferenceJavaDeleteUsageInfo.java index dbac6e9e069a..a248352d626f 100644 --- a/java/java-impl/src/com/intellij/refactoring/safeDelete/usageInfo/SafeDeleteReferenceJavaDeleteUsageInfo.java +++ b/java/java-impl/src/com/intellij/refactoring/safeDelete/usageInfo/SafeDeleteReferenceJavaDeleteUsageInfo.java @@ -15,9 +15,16 @@ */ package com.intellij.refactoring.safeDelete.usageInfo; +import com.intellij.lang.ASTNode; import com.intellij.openapi.diagnostic.Logger; +import com.intellij.psi.JavaPsiFacade; import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiExpressionStatement; +import com.intellij.psi.PsiStatement; +import com.intellij.psi.impl.source.codeStyle.CodeEditUtil; +import com.intellij.psi.impl.source.tree.TreeUtil; import com.intellij.refactoring.safeDelete.ImportSearcher; +import com.intellij.refactoring.util.RefactoringUtil; import com.intellij.util.IncorrectOperationException; /** @@ -48,7 +55,12 @@ public class SafeDeleteReferenceJavaDeleteUsageInfo extends SafeDeleteReferenceS importStatement.delete(); } else { - element.delete(); + if (element instanceof PsiExpressionStatement && RefactoringUtil.isLoopOrIf(element.getParent())) { + final PsiStatement emptyTest = JavaPsiFacade.getInstance(getProject()).getElementFactory().createStatementFromText(";", null); + element.replace(emptyTest); + } else { + element.delete(); + } } } } diff --git a/java/java-tests/testData/refactoring/safeDelete/EmptyIf.java b/java/java-tests/testData/refactoring/safeDelete/EmptyIf.java new file mode 100644 index 000000000000..ea06c0f167ba --- /dev/null +++ b/java/java-tests/testData/refactoring/safeDelete/EmptyIf.java @@ -0,0 +1,8 @@ +class A { + void f(String p){ + String t; + if (p == null) + t = "1"; + System.out.println(""); + } +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/safeDelete/EmptyIf_after.java b/java/java-tests/testData/refactoring/safeDelete/EmptyIf_after.java new file mode 100644 index 000000000000..de3970038e63 --- /dev/null +++ b/java/java-tests/testData/refactoring/safeDelete/EmptyIf_after.java @@ -0,0 +1,7 @@ +class A { + void f(String p){ + if (p == null) + ; + System.out.println(""); + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/refactoring/SafeDeleteTest.java b/java/java-tests/testSrc/com/intellij/refactoring/SafeDeleteTest.java index 2240ef54bd4e..5a9b17611d11 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/SafeDeleteTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/SafeDeleteTest.java @@ -163,6 +163,10 @@ public class SafeDeleteTest extends MultiFileTestCase { public void testStripOverride() throws Exception { doSingleFileTest(); } + + public void testEmptyIf() throws Exception { + doSingleFileTest(); + } private void doTest(@NonNls final String qClassName) throws Exception { doTest(new PerformAction() {