From 9df30d7d787dccceea6b30e7ba59c126339e0f8a Mon Sep 17 00:00:00 2001 From: Alexandr Suhinin Date: Wed, 28 Jul 2021 17:05:25 +0300 Subject: [PATCH] EA-208931 [copy classes] fix: avoid unnecessary class copy when rename is not needed GitOrigin-RevId: 26f511ea09c2c42fe09a4981e59027da61e063e0 --- .../refactoring/copy/CopyClassesHandler.java | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/java/java-impl/src/com/intellij/refactoring/copy/CopyClassesHandler.java b/java/java-impl/src/com/intellij/refactoring/copy/CopyClassesHandler.java index 056715ed374f..e25f1aac6882 100644 --- a/java/java-impl/src/com/intellij/refactoring/copy/CopyClassesHandler.java +++ b/java/java-impl/src/com/intellij/refactoring/copy/CopyClassesHandler.java @@ -374,9 +374,14 @@ public class CopyClassesHandler extends CopyHandlerDelegateBase { } for (final Map.Entry classEntry : sourceToDestination.entrySet()) { - final PsiClass copy = copy(classEntry.getKey(), sourceToDestination.size() > 1 ? null : copyClassName); - PsiClass newClass = WriteAction.compute(() -> (PsiClass) classEntry.getValue().replace(copy)); - oldToNewMap.put(classEntry.getKey(), newClass); + if (copyClassName != null && sourceToDestination.size() == 1) { + final PsiClass copy = copy(classEntry.getKey(), copyClassName); + PsiClass newClass = WriteAction.compute(() -> (PsiClass) classEntry.getValue().replace(copy)); + oldToNewMap.put(classEntry.getKey(), newClass); + } + else { + oldToNewMap.put(classEntry.getKey(), classEntry.getValue()); + } } } } @@ -459,12 +464,10 @@ public class CopyClassesHandler extends CopyHandlerDelegateBase { return current; } - private static PsiClass copy(PsiClass aClass, String name) { + private static PsiClass copy(@NotNull PsiClass aClass, @NotNull String name) { final PsiClass classNavigationElement = (PsiClass)aClass.getNavigationElement(); final PsiClass classCopy = (PsiClass)classNavigationElement.copy(); - if (name != null) { - classCopy.setName(name); - } + classCopy.setName(name); return classCopy; }