diff --git a/java/java-impl/src/com/intellij/refactoring/safeDelete/JavaImportSearcher.java b/java/java-impl/src/com/intellij/refactoring/safeDelete/JavaImportSearcher.java index e59c950b0423..3c2077ea4158 100644 --- a/java/java-impl/src/com/intellij/refactoring/safeDelete/JavaImportSearcher.java +++ b/java/java-impl/src/com/intellij/refactoring/safeDelete/JavaImportSearcher.java @@ -27,15 +27,10 @@ public class JavaImportSearcher extends ImportSearcher { final PsiFile containingFile = element.getContainingFile(); if (!(containingFile instanceof PsiJavaFile)) return null; - if (onlyNonStatic) { - PsiElement parent = element.getParent(); - if (parent instanceof PsiImportStatement) { - return parent; - } + PsiImportStatementBase importStatementBase = PsiTreeUtil.getParentOfType(element, PsiImportStatementBase.class); + if (onlyNonStatic && importStatementBase instanceof PsiImportStaticStatement) { + return null; } - else { - return PsiTreeUtil.getParentOfType(element, PsiImportStatementBase.class); - } - return null; + return importStatementBase; } } diff --git a/java/java-tests/testData/refactoring/safeDelete/safeDeleteImportsOnInnerClasses/after/p/B.java b/java/java-tests/testData/refactoring/safeDelete/safeDeleteImportsOnInnerClasses/after/p/B.java new file mode 100644 index 000000000000..1f10062fab19 --- /dev/null +++ b/java/java-tests/testData/refactoring/safeDelete/safeDeleteImportsOnInnerClasses/after/p/B.java @@ -0,0 +1,5 @@ +package p; + +class B { + +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/safeDelete/safeDeleteImportsOnInnerClasses/before/p/A.java b/java/java-tests/testData/refactoring/safeDelete/safeDeleteImportsOnInnerClasses/before/p/A.java new file mode 100644 index 000000000000..5fa9644e8ac7 --- /dev/null +++ b/java/java-tests/testData/refactoring/safeDelete/safeDeleteImportsOnInnerClasses/before/p/A.java @@ -0,0 +1,5 @@ +package p; +public class A { + public static class Inner {} +} + diff --git a/java/java-tests/testData/refactoring/safeDelete/safeDeleteImportsOnInnerClasses/before/p/B.java b/java/java-tests/testData/refactoring/safeDelete/safeDeleteImportsOnInnerClasses/before/p/B.java new file mode 100644 index 000000000000..cd0f9aad27a6 --- /dev/null +++ b/java/java-tests/testData/refactoring/safeDelete/safeDeleteImportsOnInnerClasses/before/p/B.java @@ -0,0 +1,6 @@ +package p; + +import p.A.Inner; +class B { + +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/java/refactoring/SafeDeleteTest.java b/java/java-tests/testSrc/com/intellij/java/refactoring/SafeDeleteTest.java index bd31168da085..aff6a84b72a7 100644 --- a/java/java-tests/testSrc/com/intellij/java/refactoring/SafeDeleteTest.java +++ b/java/java-tests/testSrc/com/intellij/java/refactoring/SafeDeleteTest.java @@ -168,6 +168,10 @@ public class SafeDeleteTest extends MultiFileTestCase { doTest("B"); } + public void testSafeDeleteImportsOnInnerClasses() { + doTest("p.B"); + } + public void testRemoveOverridersInspiteOfUnsafeUsages() { try { BaseRefactoringProcessor.ConflictsInTestsException.setTestIgnore(true);