From 9d9d1b73a064fcf7fa8785c8c177e1166dc5d651 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Wed, 10 May 2017 19:28:34 +0300 Subject: [PATCH] safe delete: don't warn if class is used in import list of file to delete (IDEA-172496) --- .../safeDelete/JavaSafeDeleteProcessor.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/java/java-impl/src/com/intellij/refactoring/safeDelete/JavaSafeDeleteProcessor.java b/java/java-impl/src/com/intellij/refactoring/safeDelete/JavaSafeDeleteProcessor.java index b5c72021d887..ba55571274a3 100644 --- a/java/java-impl/src/com/intellij/refactoring/safeDelete/JavaSafeDeleteProcessor.java +++ b/java/java-impl/src/com/intellij/refactoring/safeDelete/JavaSafeDeleteProcessor.java @@ -516,10 +516,22 @@ public class JavaSafeDeleteProcessor extends SafeDeleteProcessorDelegateBase { final String qualifiedName = psiClass.getQualifiedName(); final boolean annotationType = psiClass.isAnnotationType() && qualifiedName != null; + PsiElement[] topElementsToDelete = Arrays.stream(allElementsToDelete).map(element -> { + if (element instanceof PsiClass) { + PsiElement parent = element.getParent(); + if (parent instanceof PsiClassOwner) { + PsiClass[] classes = ((PsiClassOwner)parent).getClasses(); + if (classes.length == 1 && classes[0] == element) { + return element.getContainingFile(); + } + } + } + return element; + }).toArray(PsiElement[]::new); ReferencesSearch.search(psiClass).forEach(reference -> { final PsiElement element = reference.getElement(); - if (!isInside(element, allElementsToDelete)) { + if (!isInside(element, topElementsToDelete)) { PsiElement parent = element.getParent(); if (parent instanceof PsiReferenceList) { final PsiElement pparent = parent.getParent();