From 68d4b5d86cc1ffafe83cc1f1401a9dc23f25c510 Mon Sep 17 00:00:00 2001 From: peter Date: Mon, 26 Jul 2010 20:30:17 +0100 Subject: [PATCH] PsiReferenceBase.createSelfReference(PsiElement, PsiElement, TextRange) --- .../com/intellij/psi/PsiReferenceBase.java | 59 ++++++++++++++----- 1 file changed, 43 insertions(+), 16 deletions(-) diff --git a/platform/lang-api/src/com/intellij/psi/PsiReferenceBase.java b/platform/lang-api/src/com/intellij/psi/PsiReferenceBase.java index 4e527134996f..a2840604b3c3 100644 --- a/platform/lang-api/src/com/intellij/psi/PsiReferenceBase.java +++ b/platform/lang-api/src/com/intellij/psi/PsiReferenceBase.java @@ -107,23 +107,11 @@ public abstract class PsiReferenceBase implements PsiRefer } public static PsiReferenceBase createSelfReference(T element, final PsiElement resolveTo) { + return new Immediate(element, true, resolveTo); + } - return new PsiReferenceBase(element,true) { - //do nothing. the element will be renamed via PsiMetaData (com.intellij.refactoring.rename.RenameUtil.doRenameGenericNamedElement()) - public PsiElement handleElementRename(final String newElementName) throws IncorrectOperationException { - return getElement(); - } - - @Nullable - public PsiElement resolve() { - return resolveTo; - } - - @NotNull - public Object[] getVariants() { - return EMPTY_ARRAY; - } - }; + public static PsiReferenceBase createSelfReference(T element, TextRange range, final PsiElement resolveTo) { + return new Immediate(element, range, resolveTo); } @Nullable @@ -165,4 +153,43 @@ public abstract class PsiReferenceBase implements PsiRefer return resolveResults.length == 1 ? resolveResults[0].getElement() : null; } } + + public static class Immediate extends PsiReferenceBase { + private final PsiElement myResolveTo; + + public Immediate(T element, TextRange range, boolean soft, PsiElement resolveTo) { + super(element, range, soft); + myResolveTo = resolveTo; + } + + public Immediate(T element, TextRange range, PsiElement resolveTo) { + super(element, range); + myResolveTo = resolveTo; + } + + public Immediate(T element, boolean soft, PsiElement resolveTo) { + super(element, soft); + myResolveTo = resolveTo; + } + + public Immediate(@NotNull T element, PsiElement resolveTo) { + super(element); + myResolveTo = resolveTo; + } + + //do nothing. the element will be renamed via PsiMetaData (com.intellij.refactoring.rename.RenameUtil.doRenameGenericNamedElement()) + public PsiElement handleElementRename(final String newElementName) throws IncorrectOperationException { + return getElement(); + } + + @Nullable + public PsiElement resolve() { + return myResolveTo; + } + + @NotNull + public Object[] getVariants() { + return EMPTY_ARRAY; + } + } }