From e8ae89f5e3d557d1f7c3923bf378255568da4ae0 Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Fri, 12 Feb 2010 19:20:20 +0300 Subject: [PATCH] more general replace() implementation --- .../src/com/intellij/extapi/psi/ASTDelegatePsiElement.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/extapi/psi/ASTDelegatePsiElement.java b/platform/lang-impl/src/com/intellij/extapi/psi/ASTDelegatePsiElement.java index 0474126303..5dbb53923a 100644 --- a/platform/lang-impl/src/com/intellij/extapi/psi/ASTDelegatePsiElement.java +++ b/platform/lang-impl/src/com/intellij/extapi/psi/ASTDelegatePsiElement.java @@ -29,7 +29,6 @@ import com.intellij.psi.PsiFile; import com.intellij.psi.PsiInvalidElementAccessException; import com.intellij.psi.impl.CheckUtil; import com.intellij.psi.impl.PsiManagerEx; -import com.intellij.psi.impl.source.PsiFileImpl; import com.intellij.psi.impl.source.SourceTreeToPsiMap; import com.intellij.psi.impl.source.codeStyle.CodeEditUtil; import com.intellij.psi.impl.source.tree.ChangeUtil; @@ -304,16 +303,17 @@ public abstract class ASTDelegatePsiElement extends PsiElementBase { @Override public PsiElement replace(@NotNull final PsiElement newElement) throws IncorrectOperationException { + CheckUtil.checkWritable(this); + TreeElement elementCopy = ChangeUtil.copyToElement(newElement); if (getParent() instanceof ASTDelegatePsiElement) { final ASTDelegatePsiElement parentElement = (ASTDelegatePsiElement)getParent(); - CheckUtil.checkWritable(this); - TreeElement elementCopy = ChangeUtil.copyToElement(newElement); parentElement.replaceChildInternal(this, elementCopy); - elementCopy = ChangeUtil.decodeInformation(elementCopy); - return SourceTreeToPsiMap.treeElementToPsi(elementCopy); } - - return super.replace(newElement); + else { + CodeEditUtil.replaceChild(getParent().getNode(), getNode(), elementCopy); + } + elementCopy = ChangeUtil.decodeInformation(elementCopy); + return SourceTreeToPsiMap.treeElementToPsi(elementCopy); } public void replaceChildInternal(final PsiElement child, final TreeElement newElement) { -- 2.11.4.GIT