mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
safe delete: more precise check for safe delete top level classes (IDEA-150276)
This commit is contained in:
@@ -519,9 +519,13 @@ public class JavaSafeDeleteProcessor extends SafeDeleteProcessorDelegateBase {
|
||||
}
|
||||
LOG.assertTrue(element.getTextRange() != null);
|
||||
final PsiFile containingFile = psiClass.getContainingFile();
|
||||
final boolean sameFileWithSingleClass = containingFile instanceof PsiClassOwner &&
|
||||
((PsiClassOwner)containingFile).getClasses().length == 1 &&
|
||||
element.getContainingFile() == containingFile;
|
||||
boolean sameFileWithSingleClass = false;
|
||||
if (containingFile instanceof PsiClassOwner) {
|
||||
final PsiClass[] classes = ((PsiClassOwner)containingFile).getClasses();
|
||||
sameFileWithSingleClass = classes.length == 1 &&
|
||||
classes[0] == psiClass &&
|
||||
element.getContainingFile() == containingFile;
|
||||
}
|
||||
usages.add(new SafeDeleteReferenceJavaDeleteUsageInfo(element, psiClass, sameFileWithSingleClass || isInNonStaticImport(element)));
|
||||
}
|
||||
return true;
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
class Test {
|
||||
public void method(Foo p) {}
|
||||
|
||||
static class F<caret>oo {}
|
||||
}
|
||||
@@ -289,6 +289,17 @@ public class SafeDeleteTest extends MultiFileTestCase {
|
||||
doTest("ClassWithInnerStaticImport");
|
||||
}
|
||||
|
||||
public void testInnerClassUsedInTheSameFile() throws Exception {
|
||||
try {
|
||||
doSingleFileTest();
|
||||
fail("Side effect was ignored");
|
||||
}
|
||||
catch (BaseRefactoringProcessor.ConflictsInTestsException e) {
|
||||
String message = e.getMessage();
|
||||
assertEquals("class <b><code>Test.Foo</code></b> has 1 usage that is not safe to delete.", message);
|
||||
}
|
||||
}
|
||||
|
||||
private void doTest(@NonNls final String qClassName) throws Exception {
|
||||
doTest((rootDir, rootAfter) -> {
|
||||
SafeDeleteTest.this.performAction(qClassName);
|
||||
|
||||
Reference in New Issue
Block a user