clang
3.7.0
|
A reference to an overloaded function set, either an UnresolvedLookupExpr
or an UnresolvedMemberExpr
.
More...
#include <ExprCXX.h>
Classes | |
struct | FindResult |
Public Member Functions | |
CXXRecordDecl * | getNamingClass () const |
Gets the naming class of this lookup, if any. More... | |
decls_iterator | decls_begin () const |
decls_iterator | decls_end () const |
llvm::iterator_range < decls_iterator > | decls () const |
unsigned | getNumDecls () const |
Gets the number of declarations in the unresolved set. More... | |
const DeclarationNameInfo & | getNameInfo () const |
Gets the full name info. More... | |
DeclarationName | getName () const |
Gets the name looked up. More... | |
SourceLocation | getNameLoc () const |
Gets the location of the name. More... | |
NestedNameSpecifier * | getQualifier () const |
Fetches the nested-name qualifier, if one was given. More... | |
NestedNameSpecifierLoc | getQualifierLoc () const |
Fetches the nested-name qualifier with source-location information, if one was given. More... | |
SourceLocation | getTemplateKeywordLoc () const |
Retrieve the location of the template keyword preceding this name, if any. More... | |
SourceLocation | getLAngleLoc () const |
Retrieve the location of the left angle bracket starting the explicit template argument list following the name, if any. More... | |
SourceLocation | getRAngleLoc () const |
Retrieve the location of the right angle bracket ending the explicit template argument list following the name, if any. More... | |
bool | hasTemplateKeyword () const |
Determines whether the name was preceded by the template keyword. More... | |
bool | hasExplicitTemplateArgs () const |
Determines whether this expression had explicit template arguments. More... | |
ASTTemplateArgumentListInfo & | getExplicitTemplateArgs () |
const ASTTemplateArgumentListInfo & | getExplicitTemplateArgs () const |
TemplateArgumentLoc const * | getTemplateArgs () const |
unsigned | getNumTemplateArgs () const |
void | copyTemplateArgumentsInto (TemplateArgumentListInfo &List) const |
Copies the template arguments into the given structure. More... | |
const ASTTemplateArgumentListInfo * | getOptionalExplicitTemplateArgs () const |
Retrieves the optional explicit template arguments. More... | |
![]() | |
QualType | getType () const |
void | setType (QualType t) |
bool | isValueDependent () const |
void | setValueDependent (bool VD) |
Set whether this expression is value-dependent or not. More... | |
bool | isTypeDependent () const |
void | setTypeDependent (bool TD) |
Set whether this expression is type-dependent or not. More... | |
bool | isInstantiationDependent () const |
Whether this expression is instantiation-dependent, meaning that it depends in some way on a template parameter, even if neither its type nor (constant) value can change due to the template instantiation. More... | |
void | setInstantiationDependent (bool ID) |
Set whether this expression is instantiation-dependent or not. More... | |
bool | containsUnexpandedParameterPack () const |
Whether this expression contains an unexpanded parameter pack (for C++11 variadic templates). More... | |
void | setContainsUnexpandedParameterPack (bool PP=true) |
Set the bit that describes whether this expression contains an unexpanded parameter pack. More... | |
SourceLocation | getExprLoc () const LLVM_READONLY |
bool | isUnusedResultAWarning (const Expr *&WarnExpr, SourceLocation &Loc, SourceRange &R1, SourceRange &R2, ASTContext &Ctx) const |
bool | isLValue () const |
bool | isRValue () const |
bool | isXValue () const |
bool | isGLValue () const |
LValueClassification | ClassifyLValue (ASTContext &Ctx) const |
Reasons why an expression might not be an l-value. More... | |
isModifiableLvalueResult | isModifiableLvalue (ASTContext &Ctx, SourceLocation *Loc=nullptr) const |
Classification | Classify (ASTContext &Ctx) const |
Classify - Classify this expression according to the C++11 expression taxonomy. More... | |
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. More... | |
ExprValueKind | getValueKind () const |
getValueKind - The value kind that this expression produces. More... | |
ExprObjectKind | getObjectKind () const |
bool | isOrdinaryOrBitFieldObject () const |
void | setValueKind (ExprValueKind Cat) |
setValueKind - Set the value kind produced by this expression. More... | |
void | setObjectKind (ExprObjectKind Cat) |
setObjectKind - Set the object kind produced by this expression. More... | |
bool | refersToBitField () const |
Returns true if this expression is a gl-value that potentially refers to a bit-field. More... | |
FieldDecl * | getSourceBitField () |
If this expression refers to a bit-field, retrieve the declaration of that bit-field. More... | |
const FieldDecl * | getSourceBitField () const |
const ObjCPropertyRefExpr * | getObjCProperty () const |
If this expression is an l-value for an Objective C property, find the underlying property reference expression. More... | |
bool | isObjCSelfExpr () const |
Check if this expression is the ObjC 'self' implicit parameter. More... | |
bool | refersToVectorElement () const |
Returns whether this expression refers to a vector element. More... | |
bool | hasPlaceholderType () const |
Returns whether this expression has a placeholder type. More... | |
bool | hasPlaceholderType (BuiltinType::Kind K) const |
Returns whether this expression has a specific placeholder type. More... | |
bool | isKnownToHaveBooleanValue () const |
bool | isIntegerConstantExpr (llvm::APSInt &Result, const ASTContext &Ctx, SourceLocation *Loc=nullptr, bool isEvaluated=true) const |
bool | isIntegerConstantExpr (const ASTContext &Ctx, SourceLocation *Loc=nullptr) const |
bool | isCXX98IntegralConstantExpr (const ASTContext &Ctx) const |
bool | isCXX11ConstantExpr (const ASTContext &Ctx, APValue *Result=nullptr, SourceLocation *Loc=nullptr) const |
bool | isConstantInitializer (ASTContext &Ctx, bool ForRef, const Expr **Culprit=nullptr) const |
bool | EvaluateAsRValue (EvalResult &Result, const ASTContext &Ctx) const |
bool | EvaluateAsBooleanCondition (bool &Result, const ASTContext &Ctx) const |
bool | EvaluateAsInt (llvm::APSInt &Result, const ASTContext &Ctx, SideEffectsKind AllowSideEffects=SE_NoSideEffects) const |
bool | isEvaluatable (const ASTContext &Ctx) const |
bool | HasSideEffects (const ASTContext &Ctx, bool IncludePossibleEffects=true) const |
bool | hasNonTrivialCall (const ASTContext &Ctx) const |
Determine whether this expression involves a call to any function that is not trivial. More... | |
llvm::APSInt | EvaluateKnownConstInt (const ASTContext &Ctx, SmallVectorImpl< PartialDiagnosticAt > *Diag=nullptr) const |
void | EvaluateForOverflow (const ASTContext &Ctx) const |
bool | EvaluateAsLValue (EvalResult &Result, const ASTContext &Ctx) const |
bool | EvaluateAsInitializer (APValue &Result, const ASTContext &Ctx, const VarDecl *VD, SmallVectorImpl< PartialDiagnosticAt > &Notes) const |
bool | EvaluateWithSubstitution (APValue &Value, ASTContext &Ctx, const FunctionDecl *Callee, ArrayRef< const Expr * > Args) const |
NullPointerConstantKind | isNullPointerConstant (ASTContext &Ctx, NullPointerConstantValueDependence NPC) const |
bool | isOBJCGCCandidate (ASTContext &Ctx) const |
bool | isBoundMemberFunction (ASTContext &Ctx) const |
Returns true if this expression is a bound member function. More... | |
Expr * | IgnoreImpCasts () LLVM_READONLY |
Expr * | IgnoreImplicit () LLVM_READONLY |
const Expr * | IgnoreImplicit () const LLVM_READONLY |
Expr * | IgnoreParens () LLVM_READONLY |
Expr * | IgnoreParenCasts () LLVM_READONLY |
Expr * | IgnoreCasts () LLVM_READONLY |
Ignore casts. Strip off any CastExprs, returning their operand. More... | |
Expr * | IgnoreParenImpCasts () LLVM_READONLY |
Expr * | IgnoreConversionOperator () LLVM_READONLY |
const Expr * | IgnoreConversionOperator () const LLVM_READONLY |
const Expr * | IgnoreParenImpCasts () const LLVM_READONLY |
Expr * | IgnoreParenLValueCasts () LLVM_READONLY |
const Expr * | IgnoreParenLValueCasts () const LLVM_READONLY |
Expr * | IgnoreParenNoopCasts (ASTContext &Ctx) LLVM_READONLY |
Expr * | ignoreParenBaseCasts () LLVM_READONLY |
Ignore parentheses and derived-to-base casts. More... | |
const Expr * | ignoreParenBaseCasts () const LLVM_READONLY |
bool | isDefaultArgument () const |
Determine whether this expression is a default function argument. More... | |
bool | isTemporaryObject (ASTContext &Ctx, const CXXRecordDecl *TempTy) const |
Determine whether the result of this expression is a temporary object of the given class type. More... | |
bool | isImplicitCXXThis () const |
Whether this expression is an implicit reference to 'this' in C++. More... | |
const Expr * | IgnoreImpCasts () const LLVM_READONLY |
const Expr * | IgnoreParens () const LLVM_READONLY |
const Expr * | IgnoreParenCasts () const LLVM_READONLY |
const Expr * | IgnoreCasts () const LLVM_READONLY |
Strip off casts, but keep parentheses. More... | |
const Expr * | IgnoreParenNoopCasts (ASTContext &Ctx) const LLVM_READONLY |
const CXXRecordDecl * | getBestDynamicClassType () const |
For an expression of class type or pointer to class type, return the most derived class decl the expression is known to refer to. More... | |
const Expr * | skipRValueSubobjectAdjustments (SmallVectorImpl< const Expr * > &CommaLHS, SmallVectorImpl< SubobjectAdjustment > &Adjustments) const |
Static Public Member Functions | |
static FindResult | find (Expr *E) |
Finds the overloaded expression in the given expression E of OverloadTy. More... | |
static bool | classof (const Stmt *T) |
![]() | |
static ExprValueKind | getValueKindForType (QualType T) |
static bool | isPotentialConstantExpr (const FunctionDecl *FD, SmallVectorImpl< PartialDiagnosticAt > &Diags) |
static bool | isPotentialConstantExprUnevaluated (Expr *E, const FunctionDecl *FD, SmallVectorImpl< PartialDiagnosticAt > &Diags) |
static QualType | findBoundMemberType (const Expr *expr) |
Given an expression of bound-member type, find the type of the member. Returns null if this is an overloaded bound member expression. More... | |
static bool | hasAnyTypeDependentArguments (ArrayRef< Expr * > Exprs) |
static bool | classof (const Stmt *T) |
Protected Member Functions | |
ASTTemplateKWAndArgsInfo * | getTemplateKWAndArgsInfo () |
Return the optional template keyword and arguments info. More... | |
const ASTTemplateKWAndArgsInfo * | getTemplateKWAndArgsInfo () const |
Return the optional template keyword and arguments info. More... | |
OverloadExpr (StmtClass K, const ASTContext &C, NestedNameSpecifierLoc QualifierLoc, SourceLocation TemplateKWLoc, const DeclarationNameInfo &NameInfo, const TemplateArgumentListInfo *TemplateArgs, UnresolvedSetIterator Begin, UnresolvedSetIterator End, bool KnownDependent, bool KnownInstantiationDependent, bool KnownContainsUnexpandedParameterPack) | |
OverloadExpr (StmtClass K, EmptyShell Empty) | |
void | initializeResults (const ASTContext &C, UnresolvedSetIterator Begin, UnresolvedSetIterator End) |
![]() | |
Expr (StmtClass SC, QualType T, ExprValueKind VK, ExprObjectKind OK, bool TD, bool VD, bool ID, bool ContainsUnexpandedParameterPack) | |
Expr (StmtClass SC, EmptyShell) | |
Construct an empty expression. More... | |
Protected Attributes | |
bool | HasTemplateKWAndArgsInfo |
Whether the name includes info for explicit template keyword and arguments. More... | |
Friends | |
class | ASTStmtReader |
class | ASTStmtWriter |
A reference to an overloaded function set, either an UnresolvedLookupExpr
or an UnresolvedMemberExpr
.
|
protected |
Definition at line 320 of file ExprCXX.cpp.
References clang::ASTContext::Allocate(), clang::ASTContext::DependentTy, End, getTemplateKWAndArgsInfo(), clang::ASTTemplateKWAndArgsInfo::initializeFrom(), clang::Expr::isTypeDependent(), clang::SourceLocation::isValid(), and clang::Expr::setType().
|
inlineprotected |
|
inline |
Copies the template arguments into the given structure.
Definition at line 2467 of file ExprCXX.h.
References clang::ASTTemplateArgumentListInfo::copyInto(), and getExplicitTemplateArgs().
Referenced by clang::Sema::AddOverloadedCallCandidates(), clang::Sema::BuildCallToMemberFunction(), and BuildRecoveryCallExpr().
|
inline |
Definition at line 2393 of file ExprCXX.h.
References decls_begin(), and decls_end().
Referenced by clang::Sema::FindAssociatedClassesAndNamespaces().
|
inline |
Definition at line 2389 of file ExprCXX.h.
Referenced by clang::Sema::AddOverloadedCallCandidates(), clang::Sema::BuildCallToMemberFunction(), clang::Sema::buildOverloadedCallSet(), decls(), isParenthesizedADLCallee(), clang::Sema::NoteAllOverloadCandidates(), ResolveOverloadForDeduction(), clang::Sema::ResolveSingleFunctionTemplateSpecialization(), and clang::Sema::tryExprAsCall().
|
inline |
Definition at line 2390 of file ExprCXX.h.
Referenced by clang::Sema::AddOverloadedCallCandidates(), clang::Sema::BuildCallToMemberFunction(), clang::Sema::buildOverloadedCallSet(), decls(), clang::Sema::NoteAllOverloadCandidates(), ResolveOverloadForDeduction(), clang::Sema::ResolveSingleFunctionTemplateSpecialization(), and clang::Sema::tryExprAsCall().
|
inlinestatic |
Finds the overloaded expression in the given expression E
of OverloadTy.
Definition at line 2362 of file ExprCXX.h.
References getQualifier(), clang::Expr::getType(), clang::Expr::IgnoreParens(), clang::Type::isSpecificBuiltinType(), clang::Result, and clang::UO_AddrOf.
Referenced by clang::Sema::ActOnCallExpr(), clang::Sema::CheckAddressOfMemberAccess(), clang::Sema::DiagnoseAssignmentResult(), DiagnoseBadDeduction(), clang::Sema::NoteAllOverloadCandidates(), clang::Sema::ResolveAndFixSingleFunctionTemplateSpecialization(), ResolveOverloadForDeduction(), and clang::Sema::tryExprAsCall().
|
inline |
Definition at line 2449 of file ExprCXX.h.
References getTemplateKWAndArgsInfo(), and hasExplicitTemplateArgs().
Referenced by copyTemplateArgumentsInto(), getExplicitTemplateArgs(), getNumTemplateArgs(), getOptionalExplicitTemplateArgs(), getTemplateArgs(), ResolveOverloadForDeduction(), and clang::Sema::ResolveSingleFunctionTemplateSpecialization().
|
inline |
Definition at line 2454 of file ExprCXX.h.
References getExplicitTemplateArgs().
|
inline |
Retrieve the location of the left angle bracket starting the explicit template argument list following the name, if any.
Definition at line 2427 of file ExprCXX.h.
References getTemplateKWAndArgsInfo(), HasTemplateKWAndArgsInfo, and clang::ASTTemplateArgumentListInfo::LAngleLoc.
Referenced by hasExplicitTemplateArgs().
|
inline |
Gets the name looked up.
Definition at line 2404 of file ExprCXX.h.
References clang::DeclarationNameInfo::getName().
Referenced by clang::Sema::AddOverloadedCallCandidates(), BuildRecoveryCallExpr(), DiagnoseBadDeduction(), FinishOverloadedCallExpr(), clang::UnresolvedMemberExpr::getMemberName(), and clang::Sema::ResolveSingleFunctionTemplateSpecialization().
|
inline |
Gets the full name info.
Definition at line 2401 of file ExprCXX.h.
Referenced by clang::UnresolvedLookupExpr::getLocEnd(), clang::UnresolvedLookupExpr::getLocStart(), and clang::UnresolvedMemberExpr::getMemberNameInfo().
|
inline |
Gets the location of the name.
Definition at line 2407 of file ExprCXX.h.
References clang::DeclarationNameInfo::getLoc().
Referenced by clang::Sema::BuildCallToMemberFunction(), BuildRecoveryCallExpr(), clang::Sema::CheckAddressOfMemberAccess(), clang::Sema::CheckUnresolvedLookupAccess(), FinishOverloadedCallExpr(), clang::UnresolvedMemberExpr::getMemberLoc(), ResolveOverloadForDeduction(), and clang::Sema::ResolveSingleFunctionTemplateSpecialization().
CXXRecordDecl * OverloadExpr::getNamingClass | ( | ) | const |
Gets the naming class of this lookup, if any.
Definition at line 405 of file ExprCXX.cpp.
Referenced by clang::Sema::CheckAddressOfMemberAccess().
|
inline |
Gets the number of declarations in the unresolved set.
Definition at line 2398 of file ExprCXX.h.
Referenced by isParenthesizedADLCallee().
|
inline |
Definition at line 2462 of file ExprCXX.h.
References getExplicitTemplateArgs(), and clang::ASTTemplateArgumentListInfo::NumTemplateArgs.
|
inline |
Retrieves the optional explicit template arguments.
This points to the same data as getExplicitTemplateArgs(), but returns null if there are no explicit template arguments.
Definition at line 2475 of file ExprCXX.h.
References getExplicitTemplateArgs(), and hasExplicitTemplateArgs().
|
inline |
Fetches the nested-name qualifier, if one was given.
Definition at line 2410 of file ExprCXX.h.
References clang::NestedNameSpecifierLoc::getNestedNameSpecifier().
Referenced by clang::Sema::BuildCallToMemberFunction(), clang::Sema::buildOverloadedCallSet(), find(), clang::UnresolvedMemberExpr::getNamingClass(), and isParenthesizedADLCallee().
|
inline |
Fetches the nested-name qualifier with source-location information, if one was given.
Definition at line 2416 of file ExprCXX.h.
Referenced by BuildRecoveryCallExpr(), clang::UnresolvedLookupExpr::getLocStart(), and clang::UnresolvedMemberExpr::getLocStart().
|
inline |
Retrieve the location of the right angle bracket ending the explicit template argument list following the name, if any.
Definition at line 2434 of file ExprCXX.h.
References getTemplateKWAndArgsInfo(), HasTemplateKWAndArgsInfo, and clang::ASTTemplateArgumentListInfo::RAngleLoc.
Referenced by clang::UnresolvedLookupExpr::getLocEnd(), and clang::UnresolvedMemberExpr::getLocEnd().
|
inline |
Definition at line 2458 of file ExprCXX.h.
References getExplicitTemplateArgs(), and clang::ASTTemplateArgumentListInfo::getTemplateArgs().
|
inline |
Retrieve the location of the template keyword preceding this name, if any.
Definition at line 2420 of file ExprCXX.h.
References clang::ASTTemplateKWAndArgsInfo::getTemplateKeywordLoc(), getTemplateKWAndArgsInfo(), and HasTemplateKWAndArgsInfo.
Referenced by BuildRecoveryCallExpr(), and hasTemplateKeyword().
|
inlineprotected |
Return the optional template keyword and arguments info.
Definition at line 3454 of file ExprCXX.h.
References HasTemplateKWAndArgsInfo.
Referenced by getExplicitTemplateArgs(), getLAngleLoc(), getRAngleLoc(), getTemplateKeywordLoc(), getTemplateKWAndArgsInfo(), and OverloadExpr().
|
inlineprotected |
Return the optional template keyword and arguments info.
Definition at line 2328 of file ExprCXX.h.
References getTemplateKWAndArgsInfo().
|
inline |
Determines whether this expression had explicit template arguments.
Definition at line 2443 of file ExprCXX.h.
References getLAngleLoc(), and clang::SourceLocation::isValid().
Referenced by clang::Sema::AddOverloadedCallCandidates(), clang::Sema::BuildCallToMemberFunction(), BuildRecoveryCallExpr(), getExplicitTemplateArgs(), clang::UnresolvedLookupExpr::getLocEnd(), clang::UnresolvedMemberExpr::getLocEnd(), getOptionalExplicitTemplateArgs(), ResolveOverloadForDeduction(), and clang::Sema::ResolveSingleFunctionTemplateSpecialization().
|
inline |
Determines whether the name was preceded by the template keyword.
Definition at line 2440 of file ExprCXX.h.
References getTemplateKeywordLoc(), and clang::SourceLocation::isValid().
|
protected |
Definition at line 391 of file ExprCXX.cpp.
References clang::ASTContext::Allocate().
|
friend |
|
friend |
|
protected |
Whether the name includes info for explicit template keyword and arguments.
Definition at line 2322 of file ExprCXX.h.
Referenced by clang::UnresolvedLookupExpr::CreateEmpty(), clang::UnresolvedMemberExpr::CreateEmpty(), getLAngleLoc(), getRAngleLoc(), getTemplateKeywordLoc(), and getTemplateKWAndArgsInfo().