clang 20.0.0git
Public Member Functions | Static Public Member Functions | Friends | List of all members
clang::DeclRefExpr Class Referencefinal

A reference to a declared variable, function, enum, etc. More...

#include "clang/AST/Expr.h"

Inheritance diagram for clang::DeclRefExpr:
Inheritance graph
[legend]

Public Member Functions

 DeclRefExpr (const ASTContext &Ctx, ValueDecl *D, bool RefersToEnclosingVariableOrCapture, QualType T, ExprValueKind VK, SourceLocation L, const DeclarationNameLoc &LocInfo=DeclarationNameLoc(), NonOdrUseReason NOUR=NOUR_None)
 
ValueDeclgetDecl ()
 
const ValueDeclgetDecl () const
 
void setDecl (ValueDecl *NewD)
 
DeclarationNameInfo getNameInfo () const
 
SourceLocation getLocation () const
 
void setLocation (SourceLocation L)
 
SourceLocation getBeginLoc () const LLVM_READONLY
 
SourceLocation getEndLoc () const LLVM_READONLY
 
bool hasQualifier () const
 Determine whether this declaration reference was preceded by a C++ nested-name-specifier, e.g., N::foo.
 
NestedNameSpecifierLoc getQualifierLoc () const
 If the name was qualified, retrieves the nested-name-specifier that precedes the name, with source-location information.
 
NestedNameSpecifiergetQualifier () const
 If the name was qualified, retrieves the nested-name-specifier that precedes the name.
 
NamedDeclgetFoundDecl ()
 Get the NamedDecl through which this reference occurred.
 
const NamedDeclgetFoundDecl () const
 Get the NamedDecl through which this reference occurred.
 
bool hasTemplateKWAndArgsInfo () const
 
SourceLocation getTemplateKeywordLoc () const
 Retrieve the location of the template keyword preceding this name, if any.
 
SourceLocation getLAngleLoc () const
 Retrieve the location of the left angle bracket starting the explicit template argument list following the name, if any.
 
SourceLocation getRAngleLoc () const
 Retrieve the location of the right angle bracket ending the explicit template argument list following the name, if any.
 
bool hasTemplateKeyword () const
 Determines whether the name in this declaration reference was preceded by the template keyword.
 
bool hasExplicitTemplateArgs () const
 Determines whether this declaration reference was followed by an explicit template argument list.
 
void copyTemplateArgumentsInto (TemplateArgumentListInfo &List) const
 Copies the template arguments (if present) into the given structure.
 
const TemplateArgumentLocgetTemplateArgs () const
 Retrieve the template arguments provided as part of this template-id.
 
unsigned getNumTemplateArgs () const
 Retrieve the number of template arguments provided as part of this template-id.
 
ArrayRef< TemplateArgumentLoctemplate_arguments () const
 
bool hadMultipleCandidates () const
 Returns true if this expression refers to a function that was resolved from an overloaded set having size greater than 1.
 
void setHadMultipleCandidates (bool V=true)
 Sets the flag telling whether this expression refers to a function that was resolved from an overloaded set having size greater than 1.
 
NonOdrUseReason isNonOdrUse () const
 Is this expression a non-odr-use reference, and if so, why?
 
bool refersToEnclosingVariableOrCapture () const
 Does this DeclRefExpr refer to an enclosing local or a captured variable?
 
bool isImmediateEscalating () const
 
void setIsImmediateEscalating (bool Set)
 
bool isCapturedByCopyInLambdaWithExplicitObjectParameter () const
 
void setCapturedByCopyInLambdaWithExplicitObjectParameter (bool Set, const ASTContext &Context)
 
child_range children ()
 
const_child_range children () const
 
- Public Member Functions inherited from clang::Expr
 Expr ()=delete
 
 Expr (const Expr &)=delete
 
 Expr (Expr &&)=delete
 
Exproperator= (const Expr &)=delete
 
Exproperator= (Expr &&)=delete
 
QualType getType () const
 
void setType (QualType t)
 
QualType getEnumCoercedType (const ASTContext &Ctx) const
 If this expression is an enumeration constant, return the enumeration type under which said constant was declared.
 
ExprDependence getDependence () const
 
bool isValueDependent () const
 Determines whether the value of this expression depends on.
 
bool isTypeDependent () const
 Determines whether the type of this expression depends on.
 
bool isInstantiationDependent () const
 Whether this expression is instantiation-dependent, meaning that it depends in some way on.
 
bool containsUnexpandedParameterPack () const
 Whether this expression contains an unexpanded parameter pack (for C++11 variadic templates).
 
bool containsErrors () const
 Whether this expression contains subexpressions which had errors, e.g.
 
SourceLocation getExprLoc () const LLVM_READONLY
 getExprLoc - Return the preferred location for the arrow when diagnosing a problem with a generic expression.
 
bool isReadIfDiscardedInCPlusPlus11 () const
 Determine whether an lvalue-to-rvalue conversion should implicitly be applied to this expression if it appears as a discarded-value expression in C++11 onwards.
 
bool isUnusedResultAWarning (const Expr *&WarnExpr, SourceLocation &Loc, SourceRange &R1, SourceRange &R2, ASTContext &Ctx) const
 isUnusedResultAWarning - Return true if this immediate expression should be warned about if the result is unused.
 
bool isLValue () const
 isLValue - True if this expression is an "l-value" according to the rules of the current language.
 
bool isPRValue () const
 
bool isXValue () const
 
bool isGLValue () const
 
LValueClassification ClassifyLValue (ASTContext &Ctx) const
 Reasons why an expression might not be an l-value.
 
isModifiableLvalueResult isModifiableLvalue (ASTContext &Ctx, SourceLocation *Loc=nullptr) const
 isModifiableLvalue - C99 6.3.2.1: an lvalue that does not have array type, does not have an incomplete type, does not have a const-qualified type, and if it is a structure or union, does not have any member (including, recursively, any member or element of all contained aggregates or unions) with a const-qualified type.
 
Classification Classify (ASTContext &Ctx) const
 Classify - Classify this expression according to the C++11 expression taxonomy.
 
Classification ClassifyModifiable (ASTContext &Ctx, SourceLocation &Loc) const
 ClassifyModifiable - Classify this expression according to the C++11 expression taxonomy, and see if it is valid on the left side of an assignment.
 
FPOptions getFPFeaturesInEffect (const LangOptions &LO) const
 Returns the set of floating point options that apply to this expression.
 
ExprValueKind getValueKind () const
 getValueKind - The value kind that this expression produces.
 
ExprObjectKind getObjectKind () const
 getObjectKind - The object kind that this expression produces.
 
bool isOrdinaryOrBitFieldObject () const
 
void setValueKind (ExprValueKind Cat)
 setValueKind - Set the value kind produced by this expression.
 
void setObjectKind (ExprObjectKind Cat)
 setObjectKind - Set the object kind produced by this expression.
 
bool refersToBitField () const
 Returns true if this expression is a gl-value that potentially refers to a bit-field.
 
FieldDeclgetSourceBitField ()
 If this expression refers to a bit-field, retrieve the declaration of that bit-field.
 
EnumConstantDeclgetEnumConstantDecl ()
 If this expression refers to an enum constant, retrieve its declaration.
 
const EnumConstantDeclgetEnumConstantDecl () const
 
const FieldDeclgetSourceBitField () const
 
DeclgetReferencedDeclOfCallee ()
 
const DeclgetReferencedDeclOfCallee () const
 
const ObjCPropertyRefExprgetObjCProperty () const
 If this expression is an l-value for an Objective C property, find the underlying property reference expression.
 
bool isObjCSelfExpr () const
 Check if this expression is the ObjC 'self' implicit parameter.
 
bool refersToVectorElement () const
 Returns whether this expression refers to a vector element.
 
bool refersToMatrixElement () const
 Returns whether this expression refers to a matrix element.
 
bool refersToGlobalRegisterVar () const
 Returns whether this expression refers to a global register variable.
 
bool hasPlaceholderType () const
 Returns whether this expression has a placeholder type.
 
bool hasPlaceholderType (BuiltinType::Kind K) const
 Returns whether this expression has a specific placeholder type.
 
bool isKnownToHaveBooleanValue (bool Semantic=true) const
 isKnownToHaveBooleanValue - Return true if this is an integer expression that is known to return 0 or 1.
 
bool isFlexibleArrayMemberLike (ASTContext &Context, LangOptions::StrictFlexArraysLevelKind StrictFlexArraysLevel, bool IgnoreTemplateOrMacroSubstitution=false) const
 Check whether this array fits the idiom of a flexible array member, depending on the value of -fstrict-flex-array.
 
std::optional< llvm::APSInt > getIntegerConstantExpr (const ASTContext &Ctx, SourceLocation *Loc=nullptr) const
 isIntegerConstantExpr - Return the value if this expression is a valid integer constant expression.
 
bool isIntegerConstantExpr (const ASTContext &Ctx, SourceLocation *Loc=nullptr) const
 
bool isCXX98IntegralConstantExpr (const ASTContext &Ctx) const
 isCXX98IntegralConstantExpr - Return true if this expression is an integral constant expression in C++98.
 
bool isCXX11ConstantExpr (const ASTContext &Ctx, APValue *Result=nullptr, SourceLocation *Loc=nullptr) const
 isCXX11ConstantExpr - Return true if this expression is a constant expression in C++11.
 
bool isConstantInitializer (ASTContext &Ctx, bool ForRef, const Expr **Culprit=nullptr) const
 isConstantInitializer - Returns true if this expression can be emitted to IR as a constant, and thus can be used as a constant initializer in C.
 
const ValueDeclgetAsBuiltinConstantDeclRef (const ASTContext &Context) const
 If this expression is an unambiguous reference to a single declaration, in the style of __builtin_function_start, return that declaration.
 
bool EvaluateAsRValue (EvalResult &Result, const ASTContext &Ctx, bool InConstantContext=false) const
 EvaluateAsRValue - Return true if this is a constant which we can fold to an rvalue using any crazy technique (that has nothing to do with language standards) that we want to, even if the expression has side-effects.
 
bool EvaluateAsBooleanCondition (bool &Result, const ASTContext &Ctx, bool InConstantContext=false) const
 EvaluateAsBooleanCondition - Return true if this is a constant which we can fold and convert to a boolean condition using any crazy technique that we want to, even if the expression has side-effects.
 
bool EvaluateAsInt (EvalResult &Result, const ASTContext &Ctx, SideEffectsKind AllowSideEffects=SE_NoSideEffects, bool InConstantContext=false) const
 EvaluateAsInt - Return true if this is a constant which we can fold and convert to an integer, using any crazy technique that we want to.
 
bool EvaluateAsFloat (llvm::APFloat &Result, const ASTContext &Ctx, SideEffectsKind AllowSideEffects=