From fba1cddfd888f83a010a22e2c7dd2fd81c455c53 Mon Sep 17 00:00:00 2001 From: Vyacheslav Karpukhin Date: Sun, 5 Nov 2017 20:16:32 +0100 Subject: [PATCH] OC-15517 PsiInvalidElementAccessException on extracting method to category, create from usage and other actions --- .../refactoring/safeDelete/SafeDeleteProcessor.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/refactoring/safeDelete/SafeDeleteProcessor.java b/platform/lang-impl/src/com/intellij/refactoring/safeDelete/SafeDeleteProcessor.java index 86280e23c96f..08c6f8924aa3 100644 --- a/platform/lang-impl/src/com/intellij/refactoring/safeDelete/SafeDeleteProcessor.java +++ b/platform/lang-impl/src/com/intellij/refactoring/safeDelete/SafeDeleteProcessor.java @@ -36,6 +36,7 @@ import com.intellij.usageView.UsageViewUtil; import com.intellij.usages.*; import com.intellij.util.ArrayUtil; import com.intellij.util.IncorrectOperationException; +import com.intellij.util.containers.ContainerUtil; import com.intellij.util.containers.HashMap; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -382,8 +383,14 @@ public class SafeDeleteProcessor extends BaseRefactoringProcessor { delegate.prepareForDeletion(element); } } - - element.delete(); + } + SmartPointerManager pointerManager = SmartPointerManager.getInstance(myProject); + List> pointers = ContainerUtil.map(myElements, pointerManager::createSmartPsiElementPointer); + for (SmartPsiElementPointer pointer : pointers) { + PsiElement element = pointer.getElement(); + if (element != null) { + element.delete(); + } } if (myAfterRefactoringCallback != null) myAfterRefactoringCallback.run(); } catch (IncorrectOperationException e) {