diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/GrReferenceElementImpl.java b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/GrReferenceElementImpl.java index 7bac89f3aaa0abcedd2436d10a86a38673c73074..c29b6ec5976755ec6c8e3fd132f68bae220c10d2 100644 --- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/GrReferenceElementImpl.java +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/GrReferenceElementImpl.java @@ -137,8 +137,18 @@ public abstract class GrReferenceElementImpl<Q extends PsiElement> extends Groov throw new IncorrectOperationException("Cannot bind to:" + element + " of class " + element.getClass()); } + private GrReferenceElement<Q> bindWithQualifiedRef(@NotNull String qName) { + GrReferenceElement<Q> qualifiedRef = createQualifiedRef(qName); + final GrTypeArgumentList list = getTypeArgumentList(); + if (list != null) { + qualifiedRef.getNode().addChild(list.copy().getNode()); + } + getNode().getTreeParent().replaceChild(getNode(), qualifiedRef.getNode()); + return qualifiedRef; + } - protected abstract GrReferenceElement<Q> bindWithQualifiedRef(@NotNull String qName); + @NotNull + protected abstract GrReferenceElement<Q> createQualifiedRef(@NotNull String qName); protected boolean bindsCorrectly(PsiElement element) { return isReferenceTo(element); diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/expressions/GrReferenceExpressionImpl.java b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/expressions/GrReferenceExpressionImpl.java index 045702ac1b21385fd730ee3b0ebeccd374bf1ec7..f90012289a28887f931cdb3237d29a48ad0e5ffb 100644 --- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/expressions/GrReferenceExpressionImpl.java +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/expressions/GrReferenceExpressionImpl.java @@ -18,6 +18,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.plugins.groovy.lang.lexer.GroovyTokenTypes; import org.jetbrains.plugins.groovy.lang.lexer.TokenSets; +import org.jetbrains.plugins.groovy.lang.psi.GrReferenceElement; import org.jetbrains.plugins.groovy.lang.psi.GroovyElementVisitor; import org.jetbrains.plugins.groovy.lang.psi.GroovyFile; import org.jetbrains.plugins.groovy.lang.psi.GroovyPsiElementFactory; @@ -32,7 +33,6 @@ import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrMethod import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrParenthesizedExpression; import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrReferenceExpression; import org.jetbrains.plugins.groovy.lang.psi.api.toplevel.imports.GrImportStatement; -import org.jetbrains.plugins.groovy.lang.psi.api.types.GrTypeArgumentList; import org.jetbrains.plugins.groovy.lang.psi.dataFlow.types.TypeInferenceHelper; import org.jetbrains.plugins.groovy.lang.psi.impl.*; import org.jetbrains.plugins.groovy.lang.psi.impl.statements.expressions.literals.GrLiteralImpl; @@ -134,15 +134,10 @@ public class GrReferenceExpressionImpl extends GrReferenceElementImpl<GrExpressi return super.handleElementRename(newElementName); } + @NotNull @Override - protected GrReferenceExpression bindWithQualifiedRef(@NotNull String qName) { - GrReferenceExpression qualifiedRef = GroovyPsiElementFactory.getInstance(getProject()).createReferenceExpressionFromText(qName); - final GrTypeArgumentList list = getTypeArgumentList(); - if (list != null) { - qualifiedRef.getNode().addChild(list.copy().getNode()); - } - getNode().getTreeParent().replaceChild(getNode(), qualifiedRef.getNode()); - return qualifiedRef; + protected GrReferenceElement<GrExpression> createQualifiedRef(@NotNull String qName) { + return GroovyPsiElementFactory.getInstance(getProject()).createReferenceExpressionFromText(qName); } @Override diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/types/GrCodeReferenceElementImpl.java b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/types/GrCodeReferenceElementImpl.java index acc2be72c0dedf76074d88583adc91f063eb31f0..e6edad1bfacfe8e3d03f7b30d840560f7094ee61 100644 --- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/types/GrCodeReferenceElementImpl.java +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/types/GrCodeReferenceElementImpl.java @@ -11,6 +11,7 @@ import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.plugins.groovy.lang.lexer.TokenSets; import org.jetbrains.plugins.groovy.lang.parser.GroovyElementTypes; +import org.jetbrains.plugins.groovy.lang.psi.GrReferenceElement; import org.jetbrains.plugins.groovy.lang.psi.GroovyElementVisitor; import org.jetbrains.plugins.groovy.lang.psi.GroovyPsiElementFactory; import org.jetbrains.plugins.groovy.lang.psi.api.GroovyResolveResult; @@ -70,15 +71,10 @@ public class GrCodeReferenceElementImpl extends GrReferenceElementImpl<GrCodeRef } } + @NotNull @Override - protected GrCodeReferenceElement bindWithQualifiedRef(@NotNull String qName) { - final GrCodeReferenceElement qualifiedRef = GroovyPsiElementFactory.getInstance(getProject()).createTypeOrPackageReference(qName); - final PsiElement list = getTypeArgumentList(); - if (list != null) { - qualifiedRef.getNode().addChild(list.copy().getNode()); - } - getNode().getTreeParent().replaceChild(getNode(), qualifiedRef.getNode()); - return qualifiedRef; + protected GrReferenceElement<GrCodeReferenceElement> createQualifiedRef(@NotNull String qName) { + return GroovyPsiElementFactory.getInstance(getProject()).createTypeOrPackageReference(qName); } @Override