Commit d03ea6d6 authored by Daniil Ovchinnikov's avatar Daniil Ovchinnikov
Browse files

[groovy] get rid of duplicate code

parent 5d244d0e
Branches unavailable Tags unavailable
No related merge requests found
Showing with 19 additions and 18 deletions
+19 -18
......@@ -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);
......
......@@ -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
......
......@@ -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
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment