public class PsiReferenceExpressionImpl extends ExpressionPsiElement implements PsiReferenceExpression, SourceJavaCodeReference
Modifier and Type | Class and Description |
---|---|
static class |
PsiReferenceExpressionImpl.OurGenericsResolver |
Iconable.IconFlags, Iconable.LastComputedIcon
ourHC
EMPTY_ARRAY
FLAGS_LOCKED, ICON_PLACEHOLDER
ARRAY_FACTORY, EMPTY_ARRAY, EXPRESSION_TO_TYPE
ARRAY_FACTORY, EMPTY_ARRAY
ICON_FLAG_IGNORE_MASK, ICON_FLAG_OPEN, ICON_FLAG_READ_STATUS, ICON_FLAG_VISIBILITY
EMPTY_NAVIGATION_ITEM_ARRAY
Constructor and Description |
---|
PsiReferenceExpressionImpl() |
Modifier and Type | Method and Description |
---|---|
void |
accept(PsiElementVisitor visitor)
Passes the element to the specified visitor.
|
JavaResolveResult |
advancedResolve(boolean incompleteCode)
Resolves the reference and returns the result as a
JavaResolveResult
instead of a plain PsiElement . |
PsiElement |
bindToElement(PsiElement element)
Changes the reference so that it starts to point to the specified element.
|
PsiElement |
bindToElementViaStaticImport(PsiClass qualifierClass)
Creates an
import static statement importing the referenced member
from the specified class, or qualifies the reference with the class name if
that class is already imported by a regular import statement. |
static void |
bindToElementViaStaticImport(PsiClass qualifierClass,
java.lang.String staticName,
PsiImportList importList) |
void |
clearCaches() |
static TreeElement |
createEmptyRefParameterList(Project project) |
void |
deleteChildInternal(ASTNode child) |
ASTNode |
findChildByRole(int role) |
void |
fullyQualify(PsiClass targetClass)
Helper method for ReferenceAdjuster.
|
java.lang.String |
getCanonicalText()
Returns the name of the reference target element which does not depend on import statements
and other context (for example, the full-qualified name of the class if the reference targets
a Java class).
|
int |
getChildRole(ASTNode child) |
java.lang.String |
getClassNameText() |
PsiElement |
getElement()
Returns the underlying (referencing) element of the reference.
|
PsiReferenceParameterList |
getParameterList()
Returns the list of type arguments specified on the reference.
|
java.lang.String |
getQualifiedName()
Returns the text of the reference including its qualifier.
|
PsiElement |
getQualifier()
Returns the qualifier of the reference (the element representing the content up to the
last period).
|
PsiExpression |
getQualifierExpression()
Returns the expression used as the qualifier of the reference (the content up to the
last period).
|
TextRange |
getRangeInElement()
Returns the part of the underlying element which serves as a reference, or the complete
text range of the element if the entire element is a reference.
|
PsiReference |
getReference()
Returns the reference from this PSI element to another PSI element (or elements), if one exists.
|
java.lang.String |
getReferenceName()
Returns the text of the reference not including its qualifier.
|
PsiElement |
getReferenceNameElement()
Returns the element representing the name of the referenced element.
|
int |
getTextOffset()
Returns the offset in the file to which the caret should be placed
when performing the navigation to the element.
|
PsiType |
getType()
Returns the type of the expression.
|
PsiType [] |
getTypeParameters()
Returns the array of types for the type arguments specified on the reference.
|
PsiElement |
handleElementRename(java.lang.String newElementName)
Called when the reference target element has been renamed, in order to change the reference
text according to the new name.
|
boolean |
isQualified()
Checks if the reference is qualified (consists of elements separated with periods).
|
boolean |
isReferenceTo(PsiElement element)
Checks if the reference targets the specified element.
|
boolean |
isSoft()
Returns
false if the underlying element is guaranteed to be a reference, or true
if the underlying element is a possible reference which should not be reported as
an error if it fails to resolve. |
JavaResolveResult [] |
multiResolve(boolean incompleteCode)
Returns the results of resolving the reference.
|
void |
processVariants(PsiScopeProcessor processor)
Passes all variants to which the reference may resolve to the specified
processor.
|
PsiElement |
resolve()
Returns the element which is the target of the reference.
|
static boolean |
seemsScrambled(PsiClass aClass) |
static boolean |
seemsScrambledByStructure(PsiClass aClass) |
void |
setQualifierExpression(PsiExpression newQualifier) |
java.lang.String |
toString()
toString() should never be presented to the user.
|
hashCode, replaceChildInternal
acceptChildren, add, addAfter, addBefore, addRange, addRangeAfter, addRangeBefore, canNavigate, canNavigateToSource, checkAdd, checkDelete, clone, copy, delete, deleteChildRange, findElementAt, findReferenceAt, getChildren, getContainingFile, getContext, getFirstChild, getLanguage, getLastChild, getName, getNavigationElement, getNextSibling, getNode, getOriginalElement, getParent, getPresentation, getPrevSibling, getProject, getReferences, getResolveScope, getUseScope, isEquivalentTo, isPhysical, isValid, isWritable, navigate, processDeclarations, replace
acceptTree, addChild, addChild, addChildren, addInternal, addLeaf, countChildren, createPsiNoLock, findChildByRoleAsPsiElement, findChildByType, findChildByType, findChildByType, findChildByType, findLeafElementAt, findPsiChildByType, findPsiChildByType, getCachedLength, getChars, getChildren, getChildrenAsPsiElements, getChildrenAsPsiElements, getChildRole, getFirstChildNode, getLastChildNode, getPsi, getPsi, getText, getTextLength, hc, rawAddChildren, rawAddChildrenWithoutNotifications, rawFirstChild, rawLastChild, rawRemoveAllChildren, removeAllChildren, removeChild, removeRange, replaceAllChildrenToChildrenOf, replaceChild, setPsi, subtreeChanged, textContains, textMatches, textToCharArray
copyElement, equals, getElementType, getManager, getStartOffset, getStartOffsetInParent, getTextRange, getTreeNext, getTreeParent, getTreePrev, invalidate, onInvalidated, rawInsertAfterMe, rawInsertBeforeMe, rawRemove, rawRemoveUpTo, rawRemoveUpToLast, rawReplaceWithList, textMatches, textMatches, textMatches
buildRowIcon, computeBaseIcon, createLayeredIcon, getAdjustedBaseIcon, getBaseIcon, getElementIcon, getIcon, iconWithVisibilityIfNeeded, isNativeFileType, isVisibilitySupported, overlayIcons, registerIconLayer, transformFlags
changeUserMap, clearUserData, copyCopyableDataTo, copyUserDataTo, getCopyableUserData, getUserData, getUserDataString, getUserMap, isUserDataEmpty, putCopyableUserData, putUserData, putUserDataIfAbsent, replace, setUserMap
finalize, getClass, notify, notifyAll, wait, wait, wait
resolveReference
acceptChildren, add, addAfter, addBefore, addRange, addRangeAfter, addRangeBefore, checkAdd, checkDelete, copy, delete, deleteChildRange, findElementAt, findReferenceAt, getChildren, getContainingFile, getContext, getCopyableUserData, getFirstChild, getLanguage, getLastChild, getManager, getNavigationElement, getNextSibling, getNode, getOriginalElement, getOwnReferences, getParent, getPrevSibling, getProject, getReferences, getResolveScope, getStartOffsetInParent, getText, getTextLength, getTextRange, getTextRangeInParent, getUseScope, isEquivalentTo, isPhysical, isValid, isWritable, processDeclarations, putCopyableUserData, replace, textContains, textMatches, textMatches, textToCharArray
getUserData, putUserData
getVariants, resolvesTo
getAbsoluteRange
getCopyableUserData, putCopyableUserData
public PsiExpression getQualifierExpression()
PsiReferenceExpression
getQualifierExpression
in interface PsiReferenceExpression
public PsiElement bindToElementViaStaticImport(PsiClass qualifierClass) throws IncorrectOperationException
PsiReferenceExpression
import static
statement importing the referenced member
from the specified class, or qualifies the reference with the class name if
that class is already imported by a regular import statement.bindToElementViaStaticImport
in interface PsiReferenceExpression
qualifierClass
- the class to import.IncorrectOperationException
- if the modification failed for some reason.public static void bindToElementViaStaticImport(PsiClass qualifierClass, java.lang.String staticName, PsiImportList importList) throws IncorrectOperationException
IncorrectOperationException
public void setQualifierExpression(PsiExpression newQualifier) throws IncorrectOperationException
setQualifierExpression
in interface PsiReferenceExpression
IncorrectOperationException
public PsiElement getQualifier()
PsiQualifiedReference
getQualifier
in interface SourceJavaCodeReference
getQualifier
in interface PsiQualifiedReference
public java.lang.String getReferenceName()
PsiQualifiedReference
getReferenceName
in interface PsiQualifiedReference
public void clearCaches()
clearCaches
in class CompositeElement
public JavaResolveResult [] multiResolve(boolean incompleteCode)
PsiPolyVariantReference
multiResolve
in interface PsiJavaReference
multiResolve
in interface PsiPolyVariantReference
incompleteCode
- if true, the code in the context of which the reference is
being resolved is considered incomplete, and the method may return additional
invalid results.public java.lang.String getCanonicalText()
PsiReference
getCanonicalText
in interface PsiReference
public PsiType getType()
PsiExpression
getType
in interface PsiExpression
public boolean isReferenceTo(PsiElement element)
PsiReference
isReferenceTo
in interface PsiReference
element
- the element to check target for.true
if the reference targets that element, false
otherwise.public boolean isSoft()
PsiReference
false
if the underlying element is guaranteed to be a reference, or true
if the underlying element is a possible reference which should not be reported as
an error if it fails to resolve. For example, a text in an XML file which looks
like a full-qualified Java class name is a soft reference.isSoft
in interface PsiReference
true
if the reference is soft, false
otherwise.public void processVariants(PsiScopeProcessor processor)
PsiJavaReference
processVariants
in interface PsiJavaReference
processor
- the processor accepting the variantspublic JavaResolveResult advancedResolve(boolean incompleteCode)
PsiJavaReference
JavaResolveResult
instead of a plain PsiElement
.advancedResolve
in interface PsiJavaReference
incompleteCode
- if true, the code in the context of which the reference is
being resolved is considered incomplete, and the method may return an invalid
result.public static boolean seemsScrambled(PsiClass aClass)
public static boolean seemsScrambledByStructure(PsiClass aClass)
public PsiElement getReferenceNameElement()
PsiJavaCodeReferenceElement
getReferenceNameElement
in interface PsiJavaCodeReferenceElement
public PsiReferenceParameterList getParameterList()
PsiJavaCodeReferenceElement
getParameterList
in interface PsiJavaCodeReferenceElement
public PsiType [] getTypeParameters()
PsiJavaCodeReferenceElement
getTypeParameters
in interface PsiJavaCodeReferenceElement
public int getTextOffset()
PsiElement
PsiNamedElement
, this should return the offset in the file of the
name identifier.)getTextOffset
in interface PsiElement
getTextOffset
in class TreeElement
public PsiElement handleElementRename(java.lang.String newElementName) throws IncorrectOperationException
PsiReference
handleElementRename
in interface PsiReference
newElementName
- the new name of the target element.IncorrectOperationException
- if the rename cannot be handled for some reason.public PsiElement bindToElement(PsiElement element) throws IncorrectOperationException
PsiReference
bindToElement
in interface PsiReference
element
- the element which should become the target of the reference.IncorrectOperationException
- if the rebind cannot be handled for some reason.public void deleteChildInternal(ASTNode child)
deleteChildInternal
in class CompositeElement
public static TreeElement createEmptyRefParameterList(Project project)
public ASTNode findChildByRole(int role)
findChildByRole
in class CompositeElement
public int getChildRole(ASTNode child)
getChildRole
in class CompositeElement
public PsiReference getReference()
PsiElement
PsiElement.getReferences()
for an example), returns the first associated reference.getReference
in interface PsiElement
getReference
in class CompositePsiElement
ReferencesSearch
public void accept(PsiElementVisitor visitor)
PsiElement
accept
in interface PsiElement
accept
in class CompositePsiElement
visitor
- the visitor to pass the element to.public PsiElement getElement()
PsiReference
getElement
in interface PsiSymbolReference
getElement
in interface PsiReference
public TextRange getRangeInElement()
PsiReference
PsiElement text: qualified.LongName PsiReferences: [Ref1---]X[Ref2--]where
Ref1
would resolve to a "namespace" and Ref2
to an "element".getRangeInElement
in interface PsiSymbolReference
getRangeInElement
in interface PsiReference
public PsiElement resolve()
PsiReference
resolve
in interface PsiReference
null
if it was not possible to resolve the reference to a valid target.PsiPolyVariantReference.multiResolve(boolean)
public java.lang.String getClassNameText()
getClassNameText
in interface SourceJavaCodeReference
public void fullyQualify(PsiClass targetClass)
SourceJavaCodeReference
targetClass
. Does not check that it indeed references
targetClassfullyQualify
in interface SourceJavaCodeReference
public boolean isQualified()
PsiJavaCodeReferenceElement
isQualified
in interface SourceJavaCodeReference
isQualified
in interface PsiJavaCodeReferenceElement
public java.lang.String getQualifiedName()
PsiJavaCodeReferenceElement
getQualifiedName
in interface PsiJavaCodeReferenceElement
public java.lang.String toString()
PsiElement
toString
in interface PsiElement
toString
in class CompositePsiElement