From 020eb4a96c8b3d37ba9e8f5e95a997c0f26a9af7 Mon Sep 17 00:00:00 2001 From: Max Medvedev Date: Fri, 19 Oct 2012 14:31:06 +0400 Subject: [PATCH] EA-39269 - IOE: LightElement.replace --- .../impl/synthetic/GrSyntheticTypeElement.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/synthetic/GrSyntheticTypeElement.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/synthetic/GrSyntheticTypeElement.java index f144f4a06026..c5833ee7c951 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/synthetic/GrSyntheticTypeElement.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/synthetic/GrSyntheticTypeElement.java @@ -18,8 +18,10 @@ package org.jetbrains.plugins.groovy.lang.psi.impl.synthetic; import com.intellij.openapi.util.TextRange; import com.intellij.psi.*; import com.intellij.psi.impl.light.LightElement; +import com.intellij.util.IncorrectOperationException; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; +import org.jetbrains.plugins.groovy.lang.psi.GroovyPsiElementFactory; import org.jetbrains.plugins.groovy.lang.psi.api.types.GrTypeElement; import org.jetbrains.plugins.groovy.lang.psi.impl.PsiImplUtil; @@ -48,7 +50,7 @@ public class GrSyntheticTypeElement extends LightElement implements PsiTypeEleme @Override public PsiAnnotationOwner getOwner(PsiAnnotation annotation) { - return null; + return this; } @Override @@ -84,6 +86,17 @@ public class GrSyntheticTypeElement extends LightElement implements PsiTypeEleme return "Synthetic PsiTypeElement"; } + @Override + public PsiElement replace(@NotNull PsiElement newElement) throws IncorrectOperationException { + if (newElement instanceof PsiTypeElement) { + GrTypeElement groovyTypeElement = GroovyPsiElementFactory.getInstance(getProject()).createTypeElement(newElement.getText(), newElement); + return myElement.replace(groovyTypeElement); + } + else { + return super.replace(newElement); + } + } + @Override public TextRange getTextRange() { return myElement.getTextRange();