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 a248352d626f..872ec85a52aa 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,14 +15,8 @@ */ 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.psi.*; import com.intellij.refactoring.safeDelete.ImportSearcher; import com.intellij.refactoring.util.RefactoringUtil; import com.intellij.util.IncorrectOperationException; @@ -52,7 +46,10 @@ public class SafeDeleteReferenceJavaDeleteUsageInfo extends SafeDeleteReferenceS LOG.assertTrue(element != null); PsiElement importStatement = ImportSearcher.getImport(element, false); if (importStatement != null) { - importStatement.delete(); + if (element instanceof PsiImportStaticReferenceElement && + ((PsiImportStaticReferenceElement)element).multiResolve(false).length < 2) { + importStatement.delete(); + } } else { if (element instanceof PsiExpressionStatement && RefactoringUtil.isLoopOrIf(element.getParent())) { diff --git a/java/java-tests/testData/refactoring/safeDelete/overloadedMethods/after/foo/A.java b/java/java-tests/testData/refactoring/safeDelete/overloadedMethods/after/foo/A.java new file mode 100644 index 000000000000..edc05f28cba2 --- /dev/null +++ b/java/java-tests/testData/refactoring/safeDelete/overloadedMethods/after/foo/A.java @@ -0,0 +1,4 @@ +package foo; +public class A { + public static void foo(int i){} +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/safeDelete/overloadedMethods/after/foo/B.java b/java/java-tests/testData/refactoring/safeDelete/overloadedMethods/after/foo/B.java new file mode 100644 index 000000000000..2144e420ce6c --- /dev/null +++ b/java/java-tests/testData/refactoring/safeDelete/overloadedMethods/after/foo/B.java @@ -0,0 +1,9 @@ +package foo; + +import static foo.A.foo; + +public class B { + { + foo(1); + } +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/safeDelete/overloadedMethods/before/foo/A.java b/java/java-tests/testData/refactoring/safeDelete/overloadedMethods/before/foo/A.java new file mode 100644 index 000000000000..b563c7906c13 --- /dev/null +++ b/java/java-tests/testData/refactoring/safeDelete/overloadedMethods/before/foo/A.java @@ -0,0 +1,5 @@ +package foo; +public class A { + public static void foo(int i){} + public static void foo(String i){} +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/safeDelete/overloadedMethods/before/foo/B.java b/java/java-tests/testData/refactoring/safeDelete/overloadedMethods/before/foo/B.java new file mode 100644 index 000000000000..2144e420ce6c --- /dev/null +++ b/java/java-tests/testData/refactoring/safeDelete/overloadedMethods/before/foo/B.java @@ -0,0 +1,9 @@ +package foo; + +import static foo.A.foo; + +public class B { + { + foo(1); + } +} \ 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 e99d8a5d1cec..4c241cd82ee5 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/SafeDeleteTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/SafeDeleteTest.java @@ -85,6 +85,10 @@ public class SafeDeleteTest extends MultiFileTestCase { doTest("foo.C1"); } + public void testOverloadedMethods() throws Exception { + doTest("foo.A"); + } + public void testTopParameterInHierarchy() throws Exception { doTest("I"); }