15 #ifndef LLVM_CLANG_AST_EXPRCXX_H
16 #define LLVM_CLANG_AST_EXPRCXX_H
25 #include "llvm/Support/Compiler.h"
29 class CXXConstructorDecl;
30 class CXXDestructorDecl;
34 class TemplateArgumentListInfo;
62 unsigned FPContractable : 1;
64 SourceRange getSourceRangeImpl()
const LLVM_READONLY;
69 :
CallExpr(C, CXXOperatorCallExprClass, fn, 0, args, t, VK,
71 Operator(Op), FPContractable(fpContractable) {
72 Range = getSourceRangeImpl();
75 CallExpr(C, CXXOperatorCallExprClass, Empty) { }
90 return (Operator < OO_Plus || Operator >= OO_Arrow ||
91 Operator == OO_PlusPlus || Operator == OO_MinusMinus)
101 return T->getStmtClass() == CXXOperatorCallExprClass;
128 :
CallExpr(C, CXXMemberCallExprClass, fn, 0, args, t, VK, RP) {}
131 :
CallExpr(C, CXXMemberCallExprClass, Empty) { }
150 return T->getStmtClass() == CXXMemberCallExprClass;
157 enum { CONFIG, END_PREARG };
163 :
CallExpr(C, CUDAKernelCallExprClass, fn, END_PREARG, args, t, VK, RP) {
168 :
CallExpr(C, CUDAKernelCallExprClass, END_PREARG, Empty) { }
171 return cast_or_null<CallExpr>(
getPreArg(CONFIG));
177 return T->getStmtClass() == CUDAKernelCallExprClass;
200 RParenLoc(RParenLoc), AngleBrackets(AngleBrackets) {}
222 switch (T->getStmtClass()) {
223 case CXXStaticCastExprClass:
224 case CXXDynamicCastExprClass:
225 case CXXReinterpretCastExprClass:
226 case CXXConstCastExprClass:
244 writtenTy, l, RParenLoc, AngleBrackets) {}
260 return T->getStmtClass() == CXXStaticCastExprClass;
275 writtenTy, l, RParenLoc, AngleBrackets) {}
294 return T->getStmtClass() == CXXDynamicCastExprClass;
308 Expr *op,
unsigned pathSize,
313 pathSize, writtenTy, l, RParenLoc, AngleBrackets) {}
329 return T->getStmtClass() == CXXReinterpretCastExprClass;
345 0, writtenTy, l, RParenLoc, AngleBrackets) {}
359 return T->getStmtClass() == CXXConstCastExprClass;
380 :
CallExpr(C, UserDefinedLiteralClass, Fn, 0, Args, T, VK, LitEndLoc),
381 UDSuffixLoc(SuffixLoc) {}
383 :
CallExpr(C, UserDefinedLiteralClass, Empty) {}
410 return getArg(0)->getLocStart();
425 return S->getStmtClass() == UserDefinedLiteralClass;
441 Value(val), Loc(l) {}
444 :
Expr(CXXBoolLiteralExprClass, Empty) { }
456 return T->getStmtClass() == CXXBoolLiteralExprClass;
475 :
Expr(CXXNullPtrLiteralExprClass, Empty) { }
484 return T->getStmtClass() == CXXNullPtrLiteralExprClass;
496 :
Expr(CXXStdInitializerListExprClass, Empty), SubExpr(
nullptr) {}
510 return SubExpr->getLocStart();
513 return SubExpr->getLocEnd();
516 return SubExpr->getSourceRange();
520 return S->getStmtClass() == CXXStdInitializerListExprClass;
523 child_range
children() {
return child_range(&SubExpr, &SubExpr + 1); }
536 llvm::PointerUnion<Stmt *, TypeSourceInfo *> Operand;
545 Operand->
getType()->isDependentType(),
546 Operand->
getType()->isInstantiationDependentType(),
548 Operand(Operand), Range(R) { }
558 Operand(Operand), Range(R) { }
561 :
Expr(CXXTypeidExprClass, Empty) {
563 Operand = (
Expr*)
nullptr;
580 assert(
isTypeOperand() &&
"Cannot call getTypeOperand for typeid(expr)");
585 assert(
isTypeOperand() &&
"Cannot call getTypeOperand for typeid(expr)");
590 assert(!
isTypeOperand() &&
"Cannot call getExprOperand for typeid(type)");
591 return static_cast<Expr*
>(Operand.get<
Stmt *>());
595 assert(!
isTypeOperand() &&
"Cannot call getExprOperand for typeid(type)");
605 return T->getStmtClass() == CXXTypeidExprClass;
611 Stmt **begin =
reinterpret_cast<Stmt**
>(&Operand);
612 return child_range(begin, begin + 1);
637 BaseExpr(baseExpr), TheDecl(decl),
638 MemberLoc(nameLoc), IsArrow(isArrow),
639 QualifierLoc(qualifierLoc) {}
651 return BaseExpr->getLocStart();
652 else if (QualifierLoc)
660 return child_range((
Stmt**)&BaseExpr, (
Stmt**)&BaseExpr + 1);
663 return T->getStmtClass() == MSPropertyRefExprClass;
681 llvm::PointerUnion<Stmt *, TypeSourceInfo *> Operand;
688 Operand->
getType()->isInstantiationDependentType(),
690 Operand(Operand), Range(R) { }
697 Operand(Operand), Range(R) { }
700 :
Expr(CXXUuidofExprClass, Empty) {
702 Operand = (
Expr*)
nullptr;
715 assert(
isTypeOperand() &&
"Cannot call getTypeOperand for __uuidof(expr)");
720 assert(
isTypeOperand() &&
"Cannot call getTypeOperand for __uuidof(expr)");
725 assert(!
isTypeOperand() &&
"Cannot call getExprOperand for __uuidof(type)");
726 return static_cast<Expr*
>(Operand.get<
Stmt *>());
730 assert(!
isTypeOperand() &&
"Cannot call getExprOperand for __uuidof(type)");
742 return T->getStmtClass() == CXXUuidofExprClass;
748 bool *HasMultipleGUIDsPtr =
nullptr);
753 Stmt **begin =
reinterpret_cast<Stmt**
>(&Operand);
754 return child_range(begin, begin + 1);
779 Type->isDependentType(), Type->isDependentType(),
780 Type->isInstantiationDependentType(),
782 Loc(L), Implicit(isImplicit) { }
796 return T->getStmtClass() == CXXThisExprClass;
812 unsigned IsThrownVariableInScope : 1;
821 bool IsThrownVariableInScope) :
825 Op(expr), ThrowLoc(l), IsThrownVariableInScope(IsThrownVariableInScope) {}
848 return T->getStmtClass() == CXXThrowExprClass;
853 return child_range(&Op, Op ? &Op+1 : &Op);
868 llvm::PointerIntPair<ParmVarDecl *, 1, bool> Param;
880 Param(param,
false), Loc(Loc) { }
886 false,
false,
false,
false),
887 Param(param,
true), Loc(Loc) {
888 *
reinterpret_cast<Expr **
>(
this + 1) = SubExpr;
913 return *reinterpret_cast<Expr const * const*> (
this + 1);
918 return *reinterpret_cast<Expr **> (
this + 1);
934 return T->getStmtClass() == CXXDefaultArgExprClass;
990 return T->getStmtClass() == CXXDefaultInitExprClass;
1006 : Destructor(destructor) { }
1038 :
Expr(CXXBindTemporaryExprClass, SubExpr->
getType(),
1043 Temp(temp), SubExpr(SubExpr) { }
1047 :
Expr(CXXBindTemporaryExprClass, Empty), Temp(nullptr), SubExpr(nullptr) {}
1061 return SubExpr->getLocStart();
1067 return T->getStmtClass() == CXXBindTemporaryExprClass;
1071 child_range
children() {
return child_range(&SubExpr, &SubExpr + 1); }
1089 unsigned NumArgs : 16;
1091 bool HadMultipleCandidates : 1;
1092 bool ListInitialization : 1;
1093 bool StdInitListInitialization : 1;
1094 bool ZeroInitialization : 1;
1095 unsigned ConstructKind : 2;
1103 bool HadMultipleCandidates,
1104 bool ListInitialization,
1105 bool StdInitListInitialization,
1106 bool ZeroInitialization,
1112 :
Expr(SC, Empty), Constructor(nullptr), NumArgs(0), Elidable(
false),
1113 HadMultipleCandidates(
false), ListInitialization(
false),
1114 ZeroInitialization(
false), ConstructKind(0), Args(nullptr)
1120 :
Expr(CXXConstructExprClass, Empty), Constructor(nullptr),
1121 NumArgs(0), Elidable(
false), HadMultipleCandidates(
false),
1122 ListInitialization(
false), ZeroInitialization(
false),
1123 ConstructKind(0), Args(nullptr)
1130 bool HadMultipleCandidates,
1131 bool ListInitialization,
1132 bool StdInitListInitialization,
1133 bool ZeroInitialization,
1167 ZeroInitialization = ZeroInit;
1202 assert(Arg < NumArgs &&
"Arg access out of range!");
1203 return cast<Expr>(Args[Arg]);
1206 assert(Arg < NumArgs &&
"Arg access out of range!");
1207 return cast<Expr>(Args[Arg]);
1212 assert(Arg < NumArgs &&
"Arg access out of range!");
1213 Args[Arg] = ArgExpr;
1222 return T->getStmtClass() == CXXConstructExprClass ||
1223 T->getStmtClass() == CXXTemporaryObjectExprClass;
1228 return child_range(&Args[0], &Args[0]+NumArgs);
1250 castExpr, pathSize, writtenTy),
1251 LParenLoc(lParenLoc), RParenLoc(rParenLoc) {}
1276 return T->getStmtClass() == CXXFunctionalCastExprClass;
1303 bool HadMultipleCandidates,
1304 bool ListInitialization,
1305 bool StdInitListInitialization,
1306 bool ZeroInitialization);
1316 return T->getStmtClass() == CXXTemporaryObjectExprClass;
1351 unsigned NumCaptures : 16;
1355 unsigned CaptureDefault : 2;
1359 unsigned ExplicitParams : 1;
1362 unsigned ExplicitResultType : 1;
1366 unsigned HasArrayIndexVars : 1;
1389 bool ExplicitParams,
1390 bool ExplicitResultType,
1395 bool ContainsUnexpandedParameterPack);
1398 LambdaExpr(EmptyShell Empty,
unsigned NumCaptures,
bool HasArrayIndexVars)
1399 :
Expr(LambdaExprClass, Empty),
1400 NumCaptures(NumCaptures), CaptureDefault(
LCD_None), ExplicitParams(
false),
1401 ExplicitResultType(
false), HasArrayIndexVars(
true) {
1402 getStoredStmts()[NumCaptures] =
nullptr;
1405 Stmt **getStoredStmts()
const {
1406 return reinterpret_cast<Stmt **
>(
const_cast<LambdaExpr *
>(
this) + 1);
1411 unsigned *getArrayIndexStarts()
const {
1412 return reinterpret_cast<unsigned *
>(getStoredStmts() + NumCaptures + 1);
1416 VarDecl **getArrayIndexVars()
const {
1417 unsigned ArrayIndexSize = llvm::RoundUpToAlignment(
1418 sizeof(
unsigned) * (NumCaptures + 1), llvm::alignOf<VarDecl *>());
1419 return reinterpret_cast<VarDecl **
>(
1420 reinterpret_cast<char *
>(getArrayIndexStarts()) + ArrayIndexSize);
1431 bool ExplicitParams,
1432 bool ExplicitResultType,
1437 bool ContainsUnexpandedParameterPack);
1442 unsigned NumCaptures,
1443 unsigned NumArrayIndexVars);
1452 return CaptureDefaultLoc;
1513 return reinterpret_cast<Expr **
>(getStoredStmts());
1567 return T->getStmtClass() == LambdaExprClass;
1576 return child_range(getStoredStmts(), getStoredStmts() + NumCaptures + 1);
1597 false,
false, Type->isInstantiationDependentType(),
1599 RParenLoc(rParenLoc), TypeInfo(TypeInfo) {}
1602 :
Expr(CXXScalarValueInitExprClass, Shell) { }
1614 return T->getStmtClass() == CXXScalarValueInitExprClass;
1652 bool UsualArrayDeleteWantsSize : 1;
1654 unsigned NumPlacementArgs : 13;
1658 unsigned StoredInitializationStyle : 2;
1670 FunctionDecl *operatorDelete,
bool usualArrayDeleteWantsSize,
1677 :
Expr(CXXNewExprClass, Shell), SubExprs(nullptr) { }
1683 assert(
getType()->isPointerType());
1688 return AllocatedTypeInfo;
1715 return Array ? cast<Expr>(SubExprs[0]) :
nullptr;
1718 return Array ? cast<Expr>(SubExprs[0]) :
nullptr;
1727 assert(i < NumPlacementArgs &&
"Index out of range");
1731 assert(i < NumPlacementArgs &&
"Index out of range");
1745 if (StoredInitializationStyle == 0)
1767 return UsualArrayDeleteWantsSize;
1808 return T->getStmtClass() == CXXNewExprClass;
1827 bool GlobalDelete : 1;
1833 bool ArrayFormAsWritten : 1;
1836 bool UsualArrayDeleteWantsSize : 1;
1839 bool arrayFormAsWritten,
bool usualArrayDeleteWantsSize,
1844 OperatorDelete(operatorDelete), Argument(arg), Loc(loc),
1845 GlobalDelete(globalDelete),
1846 ArrayForm(arrayForm), ArrayFormAsWritten(arrayFormAsWritten),
1847 UsualArrayDeleteWantsSize(usualArrayDeleteWantsSize) { }
1849 :
Expr(CXXDeleteExprClass, Shell), OperatorDelete(nullptr),
1850 Argument(nullptr) {}
1861 return UsualArrayDeleteWantsSize;
1879 return T->getStmtClass() == CXXDeleteExprClass;
1883 child_range
children() {
return child_range(&Argument, &Argument+1); }
1892 llvm::PointerUnion<TypeSourceInfo *, IdentifierInfo *>
Type;
1901 :
Type(II), Location(Loc) { }
1981 :
Expr(CXXPseudoDestructorExprClass, Shell),
1982 Base(nullptr), IsArrow(
false), QualifierLoc(), ScopeType(nullptr) { }
2068 return T->getStmtClass() == CXXPseudoDestructorExprClass;
2123 return static_cast<TypeTrait>(TypeTraitExprBits.Kind);
2128 return TypeTraitExprBits.Value;
2132 unsigned getNumArgs()
const {
return TypeTraitExprBits.NumArgs; }
2136 assert(I <
getNumArgs() &&
"Argument out-of-range");
2142 return llvm::makeArrayRef(getTypeSourceInfos(),
getNumArgs());
2147 return getTypeSourceInfos();
2163 return T->getStmtClass() == TypeTraitExprClass;
2183 virtual void anchor();
2209 (queried->
getType()->isInstantiationDependentType() ||
2212 ATT(att),
Value(value), Dimension(dimension),
2213 Loc(loc), RParen(rparen), QueriedType(queried) { }
2236 return T->getStmtClass() == ArrayTypeTraitExprClass;
2265 Expr* QueriedExpression;
2268 Expr *queried,
bool value,
2276 ET(et),
Value(value), Loc(loc), RParen(rparen),
2277 QueriedExpression(queried) { }
2281 QueriedExpression() { }
2293 return T->getStmtClass() == ExpressionTraitExprClass;
2317 unsigned NumResults;
2338 bool KnownDependent,
2339 bool KnownInstantiationDependent,
2340 bool KnownContainsUnexpandedParameterPack);
2343 :
Expr(K, Empty), QualifierLoc(), Results(nullptr), NumResults(0),
2368 if (isa<UnaryOperator>(E)) {
2369 assert(cast<UnaryOperator>(E)->getOpcode() ==
UO_AddrOf);
2370 E = cast<UnaryOperator>(E)->getSubExpr();
2373 Result.HasFormOfMemberPointer = (E == Ovl && Ovl->
getQualifier());
2374 Result.IsAddressOfOperand =
true;
2375 Result.Expression = Ovl;
2377 Result.HasFormOfMemberPointer =
false;
2378 Result.IsAddressOfOperand =
false;
2379 Result.Expression = cast<OverloadExpr>(E);
2393 llvm::iterator_range<decls_iterator>
decls()
const {
2481 return T->getStmtClass() == UnresolvedLookupExprClass ||
2482 T->getStmtClass() == UnresolvedMemberExprClass;
2522 bool RequiresADL,
bool Overloaded,
2525 :
OverloadExpr(UnresolvedLookupExprClass, C, QualifierLoc, TemplateKWLoc,
2526 NameInfo, TemplateArgs, Begin, End,
false,
false,
false),
2527 RequiresADL(RequiresADL),
2528 Overloaded(Overloaded), NamingClass(NamingClass)
2533 RequiresADL(
false), Overloaded(
false), NamingClass(
nullptr)
2543 bool ADL,
bool Overloaded,
2548 ADL, Overloaded,
nullptr, Begin,
End);
2563 unsigned NumTemplateArgs);
2579 return l.getBeginLoc();
2591 return T->getStmtClass() == UnresolvedLookupExprClass;
2619 bool HasTemplateKWAndArgsInfo;
2623 if (!HasTemplateKWAndArgsInfo)
return nullptr;
2629 ->getTemplateKWAndArgsInfo();
2646 bool HasTemplateKWAndArgsInfo,
2647 unsigned NumTemplateArgs);
2681 return getTemplateKWAndArgsInfo()->
LAngleLoc;
2688 return getTemplateKWAndArgsInfo()->
RAngleLoc;
2747 return T->getStmtClass() == DependentScopeDeclRefExprClass;
2790 unsigned numObjects);
2796 return llvm::makeArrayRef(getObjectsBuffer(),
getNumObjects());
2814 return SubExpr->getLocStart();
2820 return T->getStmtClass() == ExprWithCleanupsClass;
2824 child_range
children() {
return child_range(&SubExpr, &SubExpr + 1); }
2867 :
Expr(CXXUnresolvedConstructExprClass, Empty), Type(), NumArgs(NumArgs) { }
2908 return reinterpret_cast<const Expr*
const *
>(
this + 1);
2915 assert(I < NumArgs &&
"Argument index out-of-range");
2920 assert(I < NumArgs &&
"Argument index out-of-range");
2925 assert(I < NumArgs &&
"Argument index out-of-range");
2931 if (!RParenLoc.
isValid() && NumArgs > 0)
2932 return getArg(NumArgs - 1)->getLocEnd();
2937 return T->getStmtClass() == CXXUnresolvedConstructExprClass;
2942 Stmt **begin =
reinterpret_cast<Stmt**
>(
this+1);
2943 return child_range(begin, begin + NumArgs);
2969 bool HasTemplateKWAndArgsInfo : 1;
2994 if (!HasTemplateKWAndArgsInfo)
return nullptr;
3000 ->getTemplateKWAndArgsInfo();
3029 unsigned NumTemplateArgs);
3040 return cast<Expr>(Base);
3075 return FirstQualifierFoundInScope;
3081 return MemberNameInfo;
3103 return getTemplateKWAndArgsInfo()->
LAngleLoc;
3110 return getTemplateKWAndArgsInfo()->
RAngleLoc;
3168 return Base->getLocStart();
3181 return T->getStmtClass() == CXXDependentScopeMemberExprClass;
3187 return child_range(&Base, &Base + 1);
3216 bool HasUnresolvedUsing : 1;
3240 :
OverloadExpr(UnresolvedMemberExprClass, Empty), IsArrow(
false),
3241 HasUnresolvedUsing(
false), Base(
nullptr) { }
3258 unsigned NumTemplateArgs);
3270 return cast<Expr>(Base);
3274 return cast<Expr>(Base);
3311 return Base->getLocStart();
3313 return l.getBeginLoc();
3323 return T->getStmtClass() == UnresolvedMemberExprClass;
3329 return child_range(&Base, &Base + 1);
3352 Value(Val ==
CT_Cannot), Operand(Operand), Range(Keyword, RParen)
3356 :
Expr(CXXNoexceptExprClass, Empty)
3368 return T->getStmtClass() == CXXNoexceptExprClass;
3372 child_range
children() {
return child_range(&Operand, &Operand + 1); }
3400 unsigned NumExpansions;
3414 EllipsisLoc(EllipsisLoc),
3415 NumExpansions(NumExpansions? *NumExpansions + 1 : 0),
3416 Pattern(Pattern) { }
3434 return NumExpansions - 1;
3440 return Pattern->getLocStart();
3445 return T->getStmtClass() == PackExpansionExprClass;
3450 return child_range(&Pattern, &Pattern + 1);
3456 if (isa<UnresolvedLookupExpr>(
this))
3458 (cast<UnresolvedLookupExpr>(
this) + 1);
3461 (cast<UnresolvedMemberExpr>(
this) + 1);
3505 OperatorLoc(OperatorLoc), PackLoc(PackLoc), RParenLoc(RParenLoc),
3506 Length(0), Pack(Pack) { }
3517 OperatorLoc(OperatorLoc), PackLoc(PackLoc), RParenLoc(RParenLoc),
3518 Length(Length), Pack(Pack) { }
3541 "Cannot get the length of a value-dependent pack size expression");
3549 return T->getStmtClass() == SizeOfPackExprClass;
3571 :
Expr(SubstNonTypeTemplateParmExprClass, Empty) { }
3579 :
Expr(SubstNonTypeTemplateParmExprClass, type, valueKind,
OK_Ordinary,
3583 Param(param), Replacement(replacement), NameLoc(loc) {}
3594 return s->getStmtClass() == SubstNonTypeTemplateParmExprClass;
3598 child_range
children() {
return child_range(&Replacement, &Replacement+1); }
3622 unsigned NumArguments;
3630 :
Expr(SubstNonTypeTemplateParmPackExprClass, Empty) { }
3652 return T->getStmtClass() == SubstNonTypeTemplateParmPackExprClass;
3681 unsigned NumParameters;
3685 Decl *
const *Params);
3696 unsigned NumParams);
3720 return T->getStmtClass() == FunctionParmPackExprClass;
3757 unsigned ManglingNumber;
3759 llvm::PointerUnion<Stmt *, ExtraState *> State;
3764 void initializeExtraState(
const ValueDecl *ExtendedBy,
3765 unsigned ManglingNumber);
3769 bool BoundToLvalueReference)
3770 :
Expr(MaterializeTemporaryExprClass, T,
3778 :
Expr(MaterializeTemporaryExprClass, Empty) { }
3782 :
State.get<ExtraState *>()->Temporary;
3796 if (isa<FieldDecl>(ExtendingDecl))
3805 :
State.get<ExtraState *>()->ExtendingDecl;
3811 return State.is<
Stmt *>() ? 0 :
State.get<ExtraState *>()->ManglingNumber;
3828 return T->getStmtClass() == MaterializeTemporaryExprClass;
3834 return child_range(
State.getAddrOfPtr1(),
State.getAddrOfPtr1() + 1);
3836 auto ES =
State.get<ExtraState *>();
3837 return child_range(&ES->Temporary, &ES->Temporary + 1);
3865 LParenLoc(LParenLoc), EllipsisLoc(EllipsisLoc), RParenLoc(RParenLoc),
3897 return T->getStmtClass() == CXXFoldExprClass;
3901 child_range
children() {
return child_range(SubExprs, SubExprs + 2); }
SourceLocation getLocStart() const LLVM_READONLY
A call to an overloaded operator written using operator syntax.
Raw form: operator "" X (const char *)
SourceRange getParenOrBraceRange() const
void copyTemplateArgumentsInto(TemplateArgumentListInfo &List) const
Copies the template arguments into the given structure.
CXXDeleteExpr(EmptyShell Shell)
void setRParenLoc(SourceLocation L)
LiteralOperatorKind
The kind of literal operator which is invoked.
operator "" X (long double)
DeclarationName getMember() const
Retrieve the name of the member that this expression refers to.
CXXNewExpr(const ASTContext &C, bool globalNew, FunctionDecl *operatorNew, FunctionDecl *operatorDelete, bool usualArrayDeleteWantsSize, ArrayRef< Expr * > placementArgs, SourceRange typeIdParens, Expr *arraySize, InitializationStyle initializationStyle, Expr *initializer, QualType ty, TypeSourceInfo *AllocatedTypeInfo, SourceRange Range, SourceRange directInitRange)
SourceLocation getEnd() const
const ASTTemplateArgumentListInfo & getExplicitTemplateArgs() const
Retrieve the explicit template argument list that followed the member template name, if any.
ParmVarDecl *const * iterator
Iterators over the parameters which the parameter pack expanded into.
The null pointer literal (C++11 [lex.nullptr])
ExprObjectKind getObjectKind() const
TypeSourceInfo * getDestroyedTypeInfo() const
Retrieve the source location information for the type being destroyed.
unsigned arg_size() const
Retrieve the number of arguments.
const internal::VariadicDynCastAllOfMatcher< Stmt, Expr > expr
Matches expressions.
void setPreArg(unsigned i, Stmt *PreArg)
SourceRange getSourceRange() const LLVM_READONLY
bool isImplicitAccess() const
static bool classof(const Stmt *T)
bool hasExplicitResultType() const
Whether this lambda had its result type explicitly specified.
bool isFPContractable() const
Stores the type being destroyed by a pseudo-destructor expression.
CXXBoolLiteralExpr(EmptyShell Empty)
bool hasExplicitTemplateArgs() const
Determines whether this expression had explicit template arguments.
bool containsUnexpandedParameterPack() const
Whether this expression contains an unexpanded parameter pack (for C++11 variadic templates)...
bool isRightFold() const
Does this produce a right-associated sequence of operators?
bool isSpecificBuiltinType(unsigned K) const
isSpecificBuiltinType - Test for a particular builtin type.
SourceLocation getLParenLoc() const
Retrieve the location of the left parentheses ('(') that precedes the argument list.
Expr * getArg(unsigned Arg)
getArg - Return the specified argument.
SourceLocation getOperatorLoc() const
Retrieve the location of the '->' or '.' operator.
SourceLocation getThrowLoc() const
Defines enumerations for the type traits support.
void setLocation(SourceLocation L)
bool isElidable() const
Whether this construction is elidable.
Expr(StmtClass SC, QualType T, ExprValueKind VK, ExprObjectKind OK, bool TD, bool VD, bool ID, bool ContainsUnexpandedParameterPack)
SourceLocation getLocEnd() const LLVM_READONLY
llvm::iterator_range< const_arg_iterator > arg_const_range
const Expr * getArg(unsigned Arg) const
static CXXDependentScopeMemberExpr * Create(const ASTContext &C, Expr *Base, QualType BaseType, bool IsArrow, SourceLocation OperatorLoc, NestedNameSpecifierLoc QualifierLoc, SourceLocation TemplateKWLoc, NamedDecl *FirstQualifierFoundInScope, DeclarationNameInfo MemberNameInfo, const TemplateArgumentListInfo *TemplateArgs)
A type trait used in the implementation of various C++11 and Library TR1 trait templates.
CXXDeleteExpr(QualType ty, bool globalDelete, bool arrayForm, bool arrayFormAsWritten, bool usualArrayDeleteWantsSize, FunctionDecl *operatorDelete, Expr *arg, SourceLocation loc)
NestedNameSpecifierLoc getQualifierLoc() const
Retrieve the nested-name-specifier that qualifies the member name, with source location information...
void initializeFrom(const TemplateArgumentListInfo &List)
TypeSourceInfo const *const * arg_const_iterator
static CXXConstructExpr * Create(const ASTContext &C, QualType T, SourceLocation Loc, CXXConstructorDecl *D, bool Elidable, ArrayRef< Expr * > Args, bool HadMultipleCandidates, bool ListInitialization, bool StdInitListInitialization, bool ZeroInitialization, ConstructionKind ConstructKind, SourceRange ParenOrBraceRange)
static UnresolvedLookupExpr * Create(const ASTContext &C, CXXRecordDecl *NamingClass, NestedNameSpecifierLoc QualifierLoc, const DeclarationNameInfo &NameInfo, bool ADL, bool Overloaded, UnresolvedSetIterator Begin, UnresolvedSetIterator End)
StringRef getUuidAsStringRef(ASTContext &Context) const
TypeSourceInfo * getScopeTypeInfo() const
Retrieve the scope type in a qualified pseudo-destructor expression.
SourceLocation getLocStart() const LLVM_READONLY
SourceLocation getEndLoc() const
getEndLoc - Retrieve the location of the last token.
SourceLocation getPackLoc() const
Determine the location of the parameter pack.
static CXXDynamicCastExpr * Create(const ASTContext &Context, QualType T, ExprValueKind VK, CastKind Kind, Expr *Op, const CXXCastPath *Path, TypeSourceInfo *Written, SourceLocation L, SourceLocation RParenLoc, SourceRange AngleBrackets)
bool isGlobalDelete() const
Expr * GetTemporaryExpr() const
Retrieve the temporary-generating subexpression whose value will be materialized into a glvalue...
bool hasQualifier() const
Evalutes true when this nested-name-specifier location is empty.
SourceLocation getLocStart() const LLVM_READONLY
ConstExprIterator const_arg_iterator
SourceRange getTypeIdParens() const
ArrayRef< TypeSourceInfo * > getArgs() const
Retrieve the argument types.
unsigned getPackLength() const
Retrieve the length of the parameter pack.
SourceLocation getLocStart() const LLVM_READONLY
SourceLocation getLocStart() const LLVM_READONLY
LambdaCaptureDefault
The default, if any, capture method for a lambda expression.
const_arg_iterator arg_end() const
A reference to a name which we were able to look up during parsing but could not resolve to a specifi...
capture_range captures() const
Retrieve this lambda's captures.
bool isBoundToLvalueReference() const
Determine whether this materialized temporary is bound to an lvalue reference; otherwise, it's bound to an rvalue reference.
TypeSourceInfo * getArg(unsigned I) const
Retrieve the Ith argument.
SourceLocation getLocEnd() const LLVM_READONLY
static bool classof(const Stmt *T)
SourceLocation getLAngleLoc() const
Retrieve the location of the left angle bracket starting the explicit template argument list followin...
Represents a call to a C++ constructor.
bool hasExplicitTemplateArgs() const
Determines whether this lookup had explicit template arguments.
TypeSourceInfo * getTypeSourceInfo() const
An Embarcadero array type trait, as used in the implementation of __array_rank and __array_extent...
static bool classof(const Stmt *S)
A container of type source information.
StorageDuration
The storage duration for an object (per C++ [basic.stc]).
SourceLocation getLocStart() const LLVM_READONLY
static CXXFunctionalCastExpr * Create(const ASTContext &Context, QualType T, ExprValueKind VK, TypeSourceInfo *Written, CastKind Kind, Expr *Op, const CXXCastPath *Path, SourceLocation LPLoc, SourceLocation RPLoc)
void setLocation(SourceLocation Loc)
Describes the capture of a variable or of this, or of a C++1y init-capture.
Represents a C++ constructor within a class.
Represents a prvalue temporary that is written into memory so that a reference can bind to it...
unsigned getNumTemplateArgs() const
SourceLocation getLocEnd() const LLVM_READONLY
Expr * getInClassInitializer() const
capture_iterator capture_begin() const
Retrieve an iterator pointing to the first lambda capture.
const CXXTemporary * getTemporary() const
void setRParenLoc(SourceLocation L)
SourceLocation getLocStart() const LLVM_READONLY
bool doesUsualArrayDeleteWantSize() const
SourceLocation getLocStart() const LLVM_READONLY
SourceRange getSourceRange() const LLVM_READONLY
Expr * getOperand() const
SourceRange getSourceRange() const LLVM_READONLY
void setFPContractable(bool FPC)
SourceLocation getLocEnd() const LLVM_READONLY
static FunctionParmPackExpr * CreateEmpty(const ASTContext &Context, unsigned NumParams)
static DependentScopeDeclRefExpr * CreateEmpty(const ASTContext &C, bool HasTemplateKWAndArgsInfo, unsigned NumTemplateArgs)
const Expr * getArg(unsigned I) const
SourceLocation getLocation() const
Retrieve the location of the name within the expression.
bool hasExplicitParameters() const
Determine whether this lambda has an explicit parameter list vs. an implicit (empty) parameter list...
static bool classof(const Stmt *T)
Represents an explicit template argument list in C++, e.g., the "<int>" in "sort<int>". This is safe to be used inside an AST node, in contrast with TemplateArgumentListInfo.
bool hasTemplateKeyword() const
Determines whether the member name was preceded by the template keyword.
SourceLocation getRAngleLoc() const
Retrieve the location of the right angle bracket ending the explicit template argument list following...
Implicit construction of a std::initializer_list<T> object from an array temporary within list-initia...
SourceLocation getRAngleLoc() const
Retrieve the location of the right angle bracket ending the explicit template argument list following...
static bool classof(const Stmt *T)
Stores a list of template parameters for a TemplateDecl and its derived classes.
SourceLocation getOperatorLoc() const
Returns the location of the operator symbol in the expression.
static bool classof(const Stmt *T)
const ParmVarDecl * getParam() const
raw_arg_iterator raw_arg_begin()
void initializeResults(const ASTContext &C, UnresolvedSetIterator Begin, UnresolvedSetIterator End)
A C++ throw-expression (C++ [except.throw]).
ParmVarDecl - Represents a parameter to a function.
QualType getBaseType() const
CXXDefaultArgExpr(EmptyShell Empty)
ArrayTypeTrait getTrait() const
void copyTemplateArgumentsInto(TemplateArgumentListInfo &List) const
Copies the template arguments (if present) into the given structure.
TypeSourceInfo * getTypeSourceInfo() const
Retrieve the type source information for the type being constructed.
SourceLocation getDestroyedTypeLoc() const
Retrieve the starting location of the type being destroyed.
A C++ static_cast expression (C++ [expr.static.cast]).
SourceLocation getLocEnd() const LLVM_READONLY
static CXXUnresolvedConstructExpr * Create(const ASTContext &C, TypeSourceInfo *Type, SourceLocation LParenLoc, ArrayRef< Expr * > Args, SourceLocation RParenLoc)
UserDefinedLiteral(const ASTContext &C, Expr *Fn, ArrayRef< Expr * > Args, QualType T, ExprValueKind VK, SourceLocation LitEndLoc, SourceLocation SuffixLoc)
void AllocateArgsArray(const ASTContext &C, bool isArray, unsigned numPlaceArgs, bool hasInitializer)
CXXConstructExpr(StmtClass SC, EmptyShell Empty)
Construct an empty C++ construction expression.
SourceLocation getLocEnd() const LLVM_READONLY
DeclarationName getMemberName() const
Retrieve the name of the member that this expression refers to.
SourceLocation getLocEnd() const LLVM_READONLY
DeclarationName getName() const
getName - Returns the embedded declaration name.
SourceLocation getLocEnd() const LLVM_READONLY
void setExprOperand(Expr *E)
ExpressionTraitExpr(SourceLocation loc, ExpressionTrait et, Expr *queried, bool value, SourceLocation rparen, QualType resultType)
Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...
A C++ nested-name-specifier augmented with source location information.
static bool classof(const Stmt *T)
SourceLocation getStartLoc() const
LambdaCaptureDefault getCaptureDefault() const
Determine the default capture kind for this lambda.
static bool classof(const Stmt *T)
SourceLocation getLocStart() const LLVM_READONLY
bool isImplicitCXXThis() const
Whether this expression is an implicit reference to 'this' in C++.
CXXRecordDecl * getNamingClass() const
Gets the naming class of this lookup, if any.
Expr * getBase()
Retrieve the base object of this member expressions, e.g., the x in x.m.
static bool classof(const Stmt *T)
SourceLocation getLocStart() const LLVM_READONLY
unsigned getManglingNumber() const
const_arg_iterator placement_arg_begin() const
const Expr *const * const_arg_iterator
SourceLocation getLocStart() const LLVM_READONLY
Expr * getImplicitObjectArgument() const
Retrieves the implicit object argument for the member call.
void setRequiresZeroInitialization(bool ZeroInit)
ASTTemplateKWAndArgsInfo * getTemplateKWAndArgsInfo()
Return the optional template keyword and arguments info.
const internal::VariadicAllOfMatcher< Decl > decl
Matches declarations.
CXXTemporaryObjectExpr(const ASTContext &C, CXXConstructorDecl *Cons, TypeSourceInfo *Type, ArrayRef< Expr * > Args, SourceRange ParenOrBraceRange, bool HadMultipleCandidates, bool ListInitialization, bool StdInitListInitialization, bool ZeroInitialization)
void setArg(unsigned I, Expr *E)
SourceLocation getLocEnd() const LLVM_READONLY
TypeSourceInfo * getTypeSourceInfo() const
bool isPotentiallyEvaluated() const
CXXMethodDecl * getCallOperator() const
Retrieve the function call operator associated with this lambda expression.
Expr * getPlacementArg(unsigned i)
Expr * getArg(unsigned I)
Represents a C++ member access expression for which lookup produced a set of overloaded functions...
const DeclarationNameInfo & getNameInfo() const
Gets the full name info.
CXXScalarValueInitExpr(QualType Type, TypeSourceInfo *TypeInfo, SourceLocation rParenLoc)
Create an explicitly-written scalar-value initialization expression.
CUDAKernelCallExpr(ASTContext &C, Expr *fn, CallExpr *Config, ArrayRef< Expr * > args, QualType t, ExprValueKind VK, SourceLocation RP)
QualType getQueriedType() const
SourceLocation getLocStart() const LLVM_READONLY
static bool classof(const Stmt *T)
Represents a reference to a non-type template parameter pack that has been substituted with a non-tem...
SourceLocation getLocStart() const LLVM_READONLY
SourceLocation getRParenLoc() const
SourceLocation getLocEnd() const LLVM_READONLY
An r-value expression (a pr-value in the C++11 taxonomy) produces a temporary value.
llvm::iterator_range< capture_init_iterator > capture_inits() const
Retrieve the initialization expressions for this lambda's captures.
void setDestroyedType(TypeSourceInfo *Info)
Set the destroyed type.
bool isOverloaded() const
True if this lookup is overloaded.
SubstNonTypeTemplateParmExpr(QualType type, ExprValueKind valueKind, SourceLocation loc, NonTypeTemplateParmDecl *param, Expr *replacement)
const Expr * getArgument() const
ASTTemplateArgumentListInfo & getExplicitTemplateArgs()
void setConstructor(CXXConstructorDecl *C)
bool isGenericLambda() const
Whether this is a generic lambda.
bool isAlwaysNull() const
SourceLocation getLocStart() const LLVM_READONLY
MSPropertyRefExpr(Expr *baseExpr, MSPropertyDecl *decl, bool isArrow, QualType ty, ExprValueKind VK, NestedNameSpecifierLoc qualifierLoc, SourceLocation nameLoc)
CXXThisExpr(SourceLocation L, QualType Type, bool isImplicit)
SourceLocation getLocStart() const LLVM_READONLY
SourceLocation getLocStart() const LLVM_READONLY
void setOperatorNew(FunctionDecl *D)
IdentifierInfo * getIdentifier() const
void setLocation(SourceLocation L)
IdentifierInfo * getDestroyedTypeIdentifier() const
In a dependent pseudo-destructor expression for which we do not have full type information on the des...
static bool classof(const Stmt *T)
bool HasFormOfMemberPointer
PseudoDestructorTypeStorage(IdentifierInfo *II, SourceLocation Loc)
const ValueDecl * getExtendingDecl() const
Get the declaration which triggered the lifetime-extension of this temporary, if any.
ArrayRef< VarDecl * > getCaptureInitIndexVars(capture_init_iterator Iter) const
Retrieve the set of index variables used in the capture initializer of an array captured by copy...
const_arg_iterator placement_arg_end() const
capture_init_iterator capture_init_end() const
Retrieve the iterator pointing one past the last initialization argument for this lambda expression...
Expr * getInitializer()
The initializer of this new-expression.
An x-value expression is a reference to an object with independent storage but which can be "moved"...
Expr * getExprOperand() const
SourceLocation getLocStart() const LLVM_READONLY
static bool classof(const Stmt *T)
CXXFoldExpr(QualType T, SourceLocation LParenLoc, Expr *LHS, BinaryOperatorKind Opcode, SourceLocation EllipsisLoc, Expr *RHS, SourceLocation RParenLoc)
const DeclarationNameInfo & getMemberNameInfo() const
Retrieve the full name info for the member that this expression refers to.
ParmVarDecl * getExpansion(unsigned I) const
Get an expansion of the parameter pack by index.
capture_iterator capture_end() const
Retrieve an iterator pointing past the end of the sequence of lambda captures.
SourceLocation getTemplateKeywordLoc() const
Retrieve the location of the template keyword preceding the member name, if any.
SourceLocation getLocation() const
SourceLocation RAngleLoc
The source location of the right angle bracket ('>').
InitializationStyle getInitializationStyle() const
The kind of initializer this new-expression has.
bool isValueDependent() const
SourceLocation getRAngleLoc() const
Retrieve the location of the right angle bracket ending the explicit template argument list following...
SourceLocation getTemplateKeywordLoc() const
Retrieve the location of the template keyword preceding this name, if any.
NestedNameSpecifier * getQualifier() const
Retrieve the nested-name-specifier that qualifies this declaration.
static bool classof(const Stmt *T)
SourceLocation getEndLoc() const
SourceLocation getLocStart() const LLVM_READONLY
Expr * getBaseExpr() const
New-expression has a C++98 paren-delimited initializer.
SourceLocation getLocEnd() const LLVM_READONLY
void setListInitialization(bool V)
TypeSourceInfo * getTypeSourceInfo() const
FieldDecl * getField()
Get the field whose initializer will be used.
CXXStdInitializerListExpr(QualType Ty, Expr *SubExpr)
QualType getDestroyedType() const
Retrieve the type being destroyed.
Represents binding an expression to a temporary.
const Expr *const * getArgs() const
CompoundStmt * getBody() const
Retrieve the body of the lambda.
void setDestroyedType(IdentifierInfo *II, SourceLocation Loc)
Set the name of destroyed type for a dependent pseudo-destructor expression.
ArrayTypeTrait
Names for the array type traits.
CXXTemporary * getTemporary()
static bool classof(const Stmt *T)
SourceLocation getLocStart() const LLVM_READONLY
A C++ lambda expression, which produces a function object (of unspecified type) that can be invoked l...
QualType getTypeOperand(ASTContext &Context) const
Retrieves the type operand of this __uuidof() expression after various required adjustments (removing...
An ordinary object is located at an address in memory.
Represents a C++ member access expression where the actual member referenced could not be resolved be...
CleanupObject getObject(unsigned i) const
bool isArrow() const
Determine whether this pseudo-destructor expression was written using an '->' (otherwise, it used a '.').
capture_iterator implicit_capture_end() const
Retrieve an iterator pointing past the end of the sequence of implicit lambda captures.
CXXBindTemporaryExpr(EmptyShell Empty)
SourceLocation getUsedLocation() const
Retrieve the location where this default argument was actually used.
SourceLocation getLocStart() const
A default argument (C++ [dcl.fct.default]).
ExpressionTrait getTrait() const
void setSourceRange(SourceRange R)
arg_iterator placement_arg_end()
SizeOfPackExpr(EmptyShell Empty)
Create an empty expression.
Represents the this expression in C++.
bool hadMultipleCandidates() const
Whether the referred constructor was resolved from an overloaded set having size greater than 1...
MSPropertyDecl * getPropertyDecl() const
New-expression has no initializer as written.
Extends ASTTemplateArgumentListInfo with the source location information for the template keyword; th...
SourceLocation getLoc() const
getLoc - Returns the main location of the declaration name.
TypeTrait
Names for traits that operate specifically on types.
SourceLocation getCaptureDefaultLoc() const
Retrieve the location of this lambda's capture-default, if any.
Optional< unsigned > getNumExpansions() const
Determine the number of expansions that will be produced when this pack expansion is instantiated...
QualType getTypeAsWritten() const
Retrieve the type that is being constructed, as specified in the source code.
SourceLocation getTemplateKeywordLoc() const
Retrieve the location of the template keyword preceding this name, if any.
const Expr * getBase() const
SourceLocation getLocation() const
FunctionDecl * getOperatorDelete() const
UserDefinedLiteral(const ASTContext &C, EmptyShell Empty)
SourceLocation getColonColonLoc() const
Retrieve the location of the '::' in a qualified pseudo-destructor expression.
CXXScalarValueInitExpr(EmptyShell Shell)
unsigned getNumDecls() const
Gets the number of declarations in the unresolved set.
static LambdaExpr * CreateDeserialized(const ASTContext &C, unsigned NumCaptures, unsigned NumArrayIndexVars)
Construct a new lambda expression that will be deserialized from an external source.
Represents a C++ pseudo-destructor (C++ [expr.pseudo]).
SourceLocation getMemberLoc() const
static bool classof(const Stmt *T)
NestedNameSpecifier * getQualifier() const
Retrieve the nested-name-specifier that qualifies the member name.
CXXTypeidExpr(QualType Ty, TypeSourceInfo *Operand, SourceRange R)
CXXMethodDecl * getMethodDecl() const
Retrieves the declaration of the called method.
unsigned getNumArgs() const
Determine the number of arguments to this type trait.
ArrayTypeTraitExpr(EmptyShell Empty)
unsigned getNumObjects() const
llvm::iterator_range< decls_iterator > decls() const
CastKind
CastKind - The kind of operation required for a conversion.
capture_init_iterator capture_init_begin() const
Retrieve the first initialization argument for this lambda expression (which initializes the first ca...
unsigned getNumExpansions() const
Get the number of parameters in this parameter pack.
static bool classof(const Stmt *T)
CXXTypeidExpr(QualType Ty, Expr *Operand, SourceRange R)
Expr * getQueriedExpression() const
NestedNameSpecifierLoc getQualifierLoc() const
ASTTemplateArgumentListInfo & getExplicitTemplateArgs()
Stmt * getPreArg(unsigned i)
static bool classof(const Stmt *T)
SourceLocation getLocStart() const LLVM_READONLY
bool isInstantiationDependent() const
Whether this expression is instantiation-dependent, meaning that it depends in some way on a template...
const Expr * getExpr() const
Get the initialization expression that will be used.
static CXXDefaultArgExpr * Create(const ASTContext &C, SourceLocation Loc, ParmVarDecl *Param)
bool HasTemplateKWAndArgsInfo
Whether the name includes info for explicit template keyword and arguments.
FunctionDecl * getOperatorDelete() const
NamedDecl * getFirstQualifierFoundInScope() const
Retrieve the first part of the nested-name-specifier that was found in the scope of the member access...
SourceLocation getLocEnd() const LLVM_READONLY
bool requiresZeroInitialization() const
Whether this construction first requires zero-initialization before the initializer is called...
PseudoDestructorTypeStorage()
SourceLocation getLocEnd() const LLVM_READONLY
void setOperatorDelete(FunctionDecl *D)
SourceLocation getLocEnd() const LLVM_READONLY
SourceRange getSourceRange() const LLVM_READONLY
static bool classof(const Stmt *T)
bool isMutable() const
Determine whether the lambda is mutable, meaning that any captures values can be modified.
SourceLocation getLocEnd() const LLVM_READONLY
SourceLocation getLocStart() const LLVM_READONLY
ExprValueKind
The categorization of expression values, currently following the C++11 scheme.
unsigned getNumTemplateArgs() const
Retrieve the number of template arguments provided as part of this template-id.
SourceLocation getLocEnd() const LLVM_READONLY
CXXOperatorCallExpr(ASTContext &C, OverloadedOperatorKind Op, Expr *fn, ArrayRef< Expr * > args, QualType t, ExprValueKind VK, SourceLocation operatorloc, bool fpContractable)
NestedNameSpecifierLoc getQualifierLoc() const
Fetches the nested-name qualifier with source-location information, if one was given.
decls_iterator decls_end() const
SourceLocation getLocStart() const LLVM_READONLY
SourceLocation getNameLoc() const
Gets the location of the name.
bool isListInitialization() const
Whether this constructor call was written as list-initialization.
static FindResult find(Expr *E)
Finds the overloaded expression in the given expression E of OverloadTy.
const Expr * getSubExpr() const
StorageDuration getStorageDuration() const
Retrieve the storage duration for the materialized temporary.
unsigned NumTemplateArgs
The number of template arguments in TemplateArgs. The actual template arguments (if any) are stored a...
Represents a C++ functional cast expression that builds a temporary object.
const ASTTemplateArgumentListInfo & getExplicitTemplateArgs() const
Gets a reference to the explicit template argument list.
SourceLocation getMemberLoc() const
A C++ const_cast expression (C++ [expr.const.cast]).
void setTypeOperandSourceInfo(TypeSourceInfo *TSI)
Represents a C++ destructor within a class.
New-expression has a C++11 list-initializer.
SourceRange getSourceRange() const
const DeclarationNameInfo & getNameInfo() const
Retrieve the name that this expression refers to.
const Expr * getCookedLiteral() const
bool hasExplicitTemplateArgs() const
Determines whether this member expression actually had a C++ template argument list explicitly specif...
bool hasTemplateKeyword() const
Determines whether the name was preceded by the template keyword.
CXXConstructExpr(const ASTContext &C, StmtClass SC, QualType T, SourceLocation Loc, CXXConstructorDecl *d, bool elidable, ArrayRef< Expr * > Args, bool HadMultipleCandidates, bool ListInitialization, bool StdInitListInitialization, bool ZeroInitialization, ConstructionKind ConstructKind, SourceRange ParenOrBraceRange)
NestedNameSpecifierLoc getQualifierLoc() const
Retrieve the nested-name-specifier that qualifies the name, with source location information.
raw_arg_iterator raw_arg_end()
static CXXStaticCastExpr * Create(const ASTContext &Context, QualType T, ExprValueKind VK, CastKind K, Expr *Op, const CXXCastPath *Path, TypeSourceInfo *Written, SourceLocation L, SourceLocation RParenLoc, SourceRange AngleBrackets)
SourceLocation getLocation() const
static CXXReinterpretCastExpr * CreateEmpty(const ASTContext &Context, unsigned pathSize)
ConstructionKind getConstructionKind() const
Determine whether this constructor is actually constructing a base class (rather than a complete obje...
CXXUuidofExpr(QualType Ty, Expr *Operand, SourceRange R)
bool isImplicitAccess() const
True if this is an implicit access, i.e., one in which the member being accessed was not written in t...
static bool classof(const Stmt *T)
Represents an expression that computes the length of a parameter pack.
static bool classof(const Stmt *T)
ArrayTypeTraitExpr(SourceLocation loc, ArrayTypeTrait att, TypeSourceInfo *queried, uint64_t value, Expr *dimension, SourceLocation rparen, QualType ty)
static bool classof(const Stmt *s)
static DependentScopeDeclRefExpr * Create(const ASTContext &C, NestedNameSpecifierLoc QualifierLoc, SourceLocation TemplateKWLoc, const DeclarationNameInfo &NameInfo, const TemplateArgumentListInfo *TemplateArgs)
static bool classof(const Stmt *T)
SourceLocation getLocStart() const LLVM_READONLY
CXXRecordDecl * getNamingClass() const
Retrieve the naming class of this lookup.
NonTypeTemplateParmDecl * getParameterPack() const
Retrieve the non-type template parameter pack being substituted.
SourceRange getAngleBrackets() const LLVM_READONLY
SourceLocation getLocEnd() const LLVM_READONLY
bool shouldNullCheckAllocation(const ASTContext &Ctx) const
True if the allocation result needs to be null-checked.
QualType getAllocatedType() const
SourceLocation getExprLoc() const LLVM_READONLY
SourceLocation getBeginLoc() const
getBeginLoc - Retrieve the location of the first token.
static bool classof(const Stmt *T)
Stmt * getTemporary() const
Represents a folding of a pack over an operator.
static bool classof(const Stmt *T)
Expr * getDimensionExpression() const
SourceLocation getLocEnd() const LLVM_READONLY
A member reference to an MSPropertyDecl.
TemplateArgumentLoc * getTemplateArgs()
Retrieve the template arguments.
Represents a reference to a non-type template parameter that has been substituted with a template arg...
CXXUuidofExpr(QualType Ty, TypeSourceInfo *Operand, SourceRange R)
CXXMemberCallExpr(ASTContext &C, EmptyShell Empty)
NestedNameSpecifier * getQualifier() const
If the member name was qualified, retrieves the nested-name-specifier that precedes the member name...
The result type of a method or function.
SourceRange getSourceRange() const LLVM_READONLY
capture_iterator implicit_capture_begin() const
Retrieve an iterator pointing to the first implicit lambda capture.
const_arg_iterator arg_begin() const
MSPropertyRefExpr(EmptyShell Empty)
SourceLocation getLocStart() const LLVM_READONLY
UnresolvedSetImpl::iterator decls_iterator
CXXNewExpr(EmptyShell Shell)
ExplicitCastExpr(StmtClass SC, QualType exprTy, ExprValueKind VK, CastKind kind, Expr *op, unsigned PathSize, TypeSourceInfo *writtenTy)
SourceLocation getParameterPackLocation() const
Retrieve the location of the parameter pack name.
static bool classof(const Stmt *T)
void initializeTemplateArgumentsFrom(const TemplateArgumentListInfo &List)
Initializes the template arguments using the given structure.
static bool classof(const Stmt *T)
void setTypeOperandSourceInfo(TypeSourceInfo *TSI)
BlockDecl * CleanupObject
decls_iterator decls_begin() const
unsigned getNumTemplateArgs() const
const ASTTemplateArgumentListInfo * getOptionalExplicitTemplateArgs() const
Retrieves the optional explicit template arguments.
static bool classof(const Stmt *T)
SourceRange getSourceRange() const LLVM_READONLY
static bool classof(const Stmt *S)
const Expr * getInitializer() const
const TemplateArgumentLoc * getTemplateArgs() const
Retrieve the template arguments provided as part of this template-id.
CanThrowResult
Possible results from evaluation of a noexcept expression.
void setLParenLoc(SourceLocation L)
A C++ dynamic_cast expression (C++ [expr.dynamic.cast]).
SourceLocation getLocStart() const LLVM_READONLY
SourceLocation getLocEnd() const LLVM_READONLY
ArrayRef< CleanupObject > getObjects() const
MaterializeTemporaryExpr(EmptyShell Empty)
static CXXConstCastExpr * Create(const ASTContext &Context, QualType T, ExprValueKind VK, Expr *Op, TypeSourceInfo *WrittenTy, SourceLocation L, SourceLocation RParenLoc, SourceRange AngleBrackets)
static CXXBindTemporaryExpr * Create(const ASTContext &C, CXXTemporary *Temp, Expr *SubExpr)
A reference to an overloaded function set, either an UnresolvedLookupExpr or an UnresolvedMemberExpr...
operator "" X (const CharT *, size_t)
Expr ** getPlacementArgs()
static bool classof(const Stmt *T)
SourceLocation getLocEnd() const LLVM_READONLY
SourceLocation getLocStart() const LLVM_READONLY
Raw form: operator "" X<cs...> ()
static CXXDynamicCastExpr * CreateEmpty(const ASTContext &Context, unsigned pathSize)
SourceLocation getOperatorLoc() const
Determine the location of the 'sizeof' keyword.
CXXRecordDecl * getRecordDecl() const
Retrieves the CXXRecordDecl for the underlying type of the implicit object argument.
void setHadMultipleCandidates(bool V)
Encodes a location in the source. The SourceManager can decode this to get at the full include stack...
TemplateArgumentLoc const * getTemplateArgs() const
const_arg_iterator arg_end() const
SourceLocation getLocEnd() const LLVM_READONLY
Defines enumerations for expression traits intrinsics.
static bool classof(const Stmt *T)
CXXNamedCastExpr(StmtClass SC, QualType ty, ExprValueKind VK, CastKind kind, Expr *op, unsigned PathSize, TypeSourceInfo *writtenTy, SourceLocation l, SourceLocation RParenLoc, SourceRange AngleBrackets)
arg_const_iterator arg_begin() const
Represents a C++ temporary.
SourceLocation getLocEnd() const LLVM_READONLY
static CXXDependentScopeMemberExpr * CreateEmpty(const ASTContext &C, bool HasTemplateKWAndArgsInfo, unsigned NumTemplateArgs)
PackExpansionExpr(EmptyShell Empty)
static CXXConstCastExpr * CreateEmpty(const ASTContext &Context)
bool isValid() const
Return true if this is a valid SourceLocation object.
NonTypeTemplateParmDecl * getParameter() const
Represents a new-expression for memory allocation and constructor calls, e.g: "new CXXNewExpr(foo)"...
SourceLocation getLocEnd() const
SourceLocation getOperatorLoc() const
Retrieve the location of the '.' or '->' operator.
ASTTemplateArgumentListInfo & getExplicitTemplateArgs()
Retrieve the explicit template argument list that followed the member template name, if any.
A call to a literal operator (C++11 [over.literal]) written as a user-defined literal (C++11 [lit...
SourceLocation getLocEnd() const
void setSourceRange(SourceRange R)
SourceLocation getBeginLoc() const
Retrieve the location of the beginning of this nested-name-specifier.
SourceLocation getRParenLoc() const
static const UuidAttr * GetUuidAttrOfType(QualType QT, bool *HasMultipleGUIDsPtr=nullptr)
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)
TemplateParameterList * getTemplateParameterList() const
If this is a generic lambda expression, retrieve the template parameter list associated with it...
TemplateArgument getArgumentPack() const
Retrieve the template argument pack containing the substituted template arguments.
SourceLocation getLocStart() const LLVM_READONLY
Represents a static or instance method of a struct/union/class.
void setTemporary(CXXTemporary *T)
static ExprWithCleanups * Create(const ASTContext &C, EmptyShell empty, unsigned numObjects)
static bool classof(const Stmt *T)
Represents a C++ nested name specifier, such as "\::std::vector<int>::".
void setDestructor(const CXXDestructorDecl *Dtor)
const DeclarationNameInfo & getMemberNameInfo() const
Retrieve the name of the member that this expression refers to.
bool isImplicitAccess() const
True if this is an implicit access, i.e. one in which the member being accessed was not written in th...
SourceLocation getLocStart() const LLVM_READONLY
void setConfig(CallExpr *E)
bool hasQualifier() const
Determines whether this member expression actually had a C++ nested-name-specifier prior to the name ...
NamedDecl * getPack() const
Retrieve the parameter pack.
bool hasInitializer() const
Whether this new-expression has any initializer at all.
SourceRange getIntroducerRange() const
Retrieve the source range covering the lambda introducer, which contains the explicit capture list su...
static bool classof(const Stmt *T)
QualType getBaseType() const
bool isInitCapture(const LambdaCapture *Capture) const
Determine whether one of this lambda's captures is an init-capture.
SourceLocation getOperatorLoc() const
Retrieve the location of the cast operator keyword, e.g., static_cast.
CXXNamedCastExpr(StmtClass SC, EmptyShell Shell, unsigned PathSize)
static CXXDefaultInitExpr * Create(const ASTContext &C, SourceLocation Loc, FieldDecl *Field)
SourceLocation getLocEnd() const LLVM_READONLY
LiteralOperatorKind getLiteralOperatorKind() const
Returns the kind of literal operator invocation which this expression represents. ...
capture_iterator explicit_capture_end() const
Retrieve an iterator pointing past the end of the sequence of explicit lambda captures.
ParmVarDecl * getParameterPack() const
Get the parameter pack which this expression refers to.
SourceLocation getBegin() const
TypeTrait getTrait() const
Determine which type trait this expression uses.
bool isTypeDependent() const
OverloadExpr(StmtClass K, EmptyShell Empty)
bool isArrow() const
Determine whether this member expression used the '->' operator; otherwise, it used the '...
An expression trait intrinsic.
CXXOperatorCallExpr(ASTContext &C, EmptyShell Empty)
TypeSourceInfo * getTypeOperandSourceInfo() const
Retrieve source information for the type operand.
uint64_t getValue() const
SourceLocation getLocStart() const LLVM_READONLY
Expr ** capture_init_iterator
Iterator that walks over the capture initialization arguments.
SourceLocation getLocStart() const
bool isParenTypeId() const
QualType getType() const
Return the type wrapped by this type source info.
static CXXReinterpretCastExpr * Create(const ASTContext &Context, QualType T, ExprValueKind VK, CastKind Kind, Expr *Op, const CXXCastPath *Path, TypeSourceInfo *WrittenTy, SourceLocation L, SourceLocation RParenLoc, SourceRange AngleBrackets)
PackExpansionExpr(QualType T, Expr *Pattern, SourceLocation EllipsisLoc, Optional< unsigned > NumExpansions)
SourceLocation getNameLoc() const
A qualified reference to a name whose declaration cannot yet be resolved.
SourceLocation getLocEnd() const LLVM_READONLY
SourceLocation getLocEnd() const LLVM_READONLY
const char * getCastName() const
SourceLocation getLocStart() const LLVM_READONLY
DeclarationName getDeclName() const
Retrieve the name that this expression refers to.
SourceLocation getEllipsisLoc() const
Retrieve the location of the ellipsis that describes this pack expansion.
Represents a reference to a function parameter pack that has been substituted but not yet expanded...
const ASTTemplateKWAndArgsInfo * getTemplateKWAndArgsInfo() const
Return the optional template keyword and arguments info.
Represents a template argument.
Expr * getReplacement() const
const Expr * getSubExpr() const
CXXTemporaryObjectExpr(EmptyShell Empty)
static bool classof(const Stmt *T)
const Expr * getSubExpr() const
void setExtendingDecl(const ValueDecl *ExtendedBy, unsigned ManglingNumber)
SourceLocation getLocStart() const LLVM_READONLY
SourceLocation getLocStart() const LLVM_READONLY
const Expr * getExpr() const
SourceLocation getLocEnd() const LLVM_READONLY
QualType getTypeOperand(ASTContext &Context) const
Retrieves the type operand of this typeid() expression after various required adjustments (removing r...
Represents a delete expression for memory deallocation and destructor calls, e.g. "delete[] pArray"...
SourceLocation getLocEnd() const LLVM_READONLY
static bool classof(const Stmt *T)
bool hasUnparsedDefaultArg() const
TypeSourceInfo * getTypeOperandSourceInfo() const
Retrieve source information for the type operand.
OverloadedOperatorKind
Enumeration specifying the different kinds of C++ overloaded operators.
TemplateArgumentLoc const * getTemplateArgs() const
const internal::VariadicAllOfMatcher< Type > type
Matches Types in the clang AST.
CXXNoexceptExpr(EmptyShell Empty)
NestedNameSpecifierLoc getQualifierLoc() const
Retrieves the nested-name-specifier that qualifies the type name, with source-location information...
Expr * getInit() const
Get the operand that doesn't contain a pack, for a binary fold.
CXXFoldExpr(EmptyShell Empty)
bool isThrownVariableInScope() const
Determines whether the variable thrown by this expression (if any!) is within the innermost try block...
Reads an AST files chain containing the contents of a translation unit.
ExprIterator arg_iterator
SourceLocation getLocStart() const LLVM_READONLY
SourceLocation getLParenLoc() const
const_arg_iterator raw_arg_end() const
A C++ reinterpret_cast expression (C++ [expr.reinterpret.cast]).
CXXNoexceptExpr(QualType Ty, Expr *Operand, CanThrowResult Val, SourceLocation Keyword, SourceLocation RParen)
SourceLocation getTildeLoc() const
Retrieve the location of the '~'.
SourceLocation getLocEnd() const LLVM_READONLY
SourceLocation getLAngleLoc() const
Retrieve the location of the left angle bracket starting the explicit template argument list followin...
void setConstructionKind(ConstructionKind CK)
SourceLocation getMemberLoc() const
const FieldDecl * getField() const
virtual ~ArrayTypeTraitExpr()
OverloadExpr * Expression
Represents a C++11 pack expansion that produces a sequence of expressions.
static bool classof(const Stmt *T)
unsigned getNumPlacementArgs() const
SourceLocation getLocEnd() const LLVM_READONLY
SourceLocation getLocEnd() const LLVM_READONLY
SourceLocation getLocEnd() const LLVM_READONLY
const Expr * getArraySize() const
SourceLocation LAngleLoc
The source location of the left angle bracket ('<').
bool isTypeOperand() const
const ASTTemplateArgumentListInfo & getExplicitTemplateArgs() const
const Expr * getPlacementArg(unsigned i) const
SourceLocation getLocation() const
CXXNullPtrLiteralExpr(QualType Ty, SourceLocation l)
SizeOfPackExpr(QualType SizeType, SourceLocation OperatorLoc, NamedDecl *Pack, SourceLocation PackLoc, SourceLocation RParenLoc)
Create a value-dependent expression that computes the length of the given parameter pack...
unsigned getNumArgs() const
SourceLocation getParameterPackLocation() const
Get the location of the parameter pack.
SourceLocation getLocEnd() const LLVM_READONLY
CXXMemberCallExpr(ASTContext &C, Expr *fn, ArrayRef< Expr * > args, QualType t, ExprValueKind VK, SourceLocation RP)
CXXNullPtrLiteralExpr(EmptyShell Empty)
CXXRecordDecl * getNamingClass() const
llvm::iterator_range< arg_iterator > arg_range
QualType getNonReferenceType() const
Represents a C++11 noexcept expression (C++ [expr.unary.noexcept]).
Expr * getBase() const
Retrieve the base object of this member expressions, e.g., the x in x.m.
SourceLocation getOperatorLoc() const
Retrieve the location of the '->' or '.' operator.
llvm::iterator_range< capture_iterator > capture_range
An iterator over a range of lambda captures.
SourceLocation getLocEnd() const LLVM_READONLY
FunctionDecl * getOperatorNew() const
unsigned capture_size() const
Determine the number of captures in this lambda.
SourceLocation getExprLoc() const LLVM_READONLY
TypeSourceInfo ** arg_iterator
static bool classof(const Stmt *T)
capture_iterator explicit_capture_begin() const
Retrieve an iterator pointing to the first explicit lambda capture.
SourceLocation getLocEnd() const LLVM_READONLY
static UnresolvedMemberExpr * CreateEmpty(const ASTContext &C, bool HasTemplateKWAndArgsInfo, unsigned NumTemplateArgs)
const_arg_iterator raw_arg_begin() const
Represents a call to a CUDA kernel function.
MaterializeTemporaryExpr(QualType T, Expr *Temporary, bool BoundToLvalueReference)
void setParenOrBraceRange(SourceRange Range)
void setArg(unsigned Arg, Expr *ArgExpr)
Set the specified argument.
SourceLocation getLocStart() const LLVM_READONLY
Expr * getArg(unsigned Arg)
Return the specified argument.
CXXConstructorDecl * getConstructor() const
Expr * getPattern() const
Get the pattern, that is, the operand that contains an unexpanded pack.
SourceLocation getLAngleLoc() const
Retrieve the location of the left angle bracket starting the explicit template argument list followin...
Expr * getExprOperand() const
CXXBoolLiteralExpr(bool val, QualType Ty, SourceLocation l)
static bool classof(const Stmt *T)
SourceLocation getLocStart() const LLVM_READONLY
static bool classof(const Stmt *T)
SourceLocation getRParenLoc() const
Retrieve the location of the right parentheses (')') that follows the argument list.
static CXXFunctionalCastExpr * CreateEmpty(const ASTContext &Context, unsigned PathSize)
static LambdaExpr * Create(const ASTContext &C, CXXRecordDecl *Class, SourceRange IntroducerRange, LambdaCaptureDefault CaptureDefault, SourceLocation CaptureDefaultLoc, ArrayRef< Capture > Captures, bool ExplicitParams, bool ExplicitResultType, ArrayRef< Expr * > CaptureInits, ArrayRef< VarDecl * > ArrayIndexVars, ArrayRef< unsigned > ArrayIndexStarts, SourceLocation ClosingBrace, bool ContainsUnexpandedParameterPack)
Construct a new lambda expression.
SourceLocation getRParenLoc() const
CXXThrowExpr(EmptyShell Empty)
SourceLocation getLocStart() const LLVM_READONLY
SourceRange getDirectInitRange() const
arg_iterator placement_arg_begin()
SourceLocation getLocation() const
SourceLocation getLocEnd() const LLVM_READONLY
void setLParenLoc(SourceLocation L)
Describes an explicit type conversion that uses functional notion but could not be resolved because o...
A use of a default initializer in a constructor or in aggregate initialization.
arg_const_iterator arg_end() const
const CXXConstructExpr * getConstructExpr() const
Returns the CXXConstructExpr from this new-expression, or null.
static FunctionParmPackExpr * Create(const ASTContext &Context, QualType T, ParmVarDecl *ParamPack, SourceLocation NameLoc, ArrayRef< Decl * > Params)
void setLocation(SourceLocation L)
static UnresolvedMemberExpr * Create(const ASTContext &C, bool HasUnresolvedUsing, Expr *Base, QualType BaseType, bool IsArrow, SourceLocation OperatorLoc, NestedNameSpecifierLoc QualifierLoc, SourceLocation TemplateKWLoc, const DeclarationNameInfo &MemberNameInfo, const TemplateArgumentListInfo *TemplateArgs, UnresolvedSetIterator Begin, UnresolvedSetIterator End)
static UnresolvedLookupExpr * CreateEmpty(const ASTContext &C, bool HasTemplateKWAndArgsInfo, unsigned NumTemplateArgs)
const internal::VariadicDynCastAllOfMatcher< Stmt, CastExpr > castExpr
Matches any cast nodes of Clang's AST.
capture_range explicit_captures() const
Retrieve this lambda's explicit captures.
bool isArrayFormAsWritten() const
ConstExprIterator const_arg_iterator
OverloadedOperatorKind getOperator() const
Returns the kind of overloaded operator that this expression refers to.
SourceLocation getLocStart() const LLVM_READONLY
const IdentifierInfo * getUDSuffix() const
Returns the ud-suffix specified for this literal.
SourceLocation getRParenLoc() const
Retrieve the location of the closing parenthesis.
Represents a C++ struct/union/class.
const Expr * getPattern() const
Retrieve the pattern of the pack expansion.
static CXXStaticCastExpr * CreateEmpty(const ASTContext &Context, unsigned PathSize)
SourceLocation getLocStart() const LLVM_READONLY
SourceLocation getEllipsisLoc() const
capture_range implicit_captures() const
Retrieve this lambda's implicit captures.
static CXXTemporary * Create(const ASTContext &C, const CXXDestructorDecl *Destructor)
static CXXUnresolvedConstructExpr * CreateEmpty(const ASTContext &C, unsigned NumArgs)
Represents an explicit C++ type conversion that uses "functional" notation (C++ [expr.type.conv]).
static bool classof(const Stmt *T)
static TypeTraitExpr * Create(const ASTContext &C, QualType T, SourceLocation Loc, TypeTrait Kind, ArrayRef< TypeSourceInfo * > Args, SourceLocation RParenLoc, bool Value)
Create a new type trait expression.
static TypeTraitExpr * CreateDeserialized(const ASTContext &C, unsigned NumArgs)
bool doesUsualArrayDeleteWantSize() const
NestedNameSpecifier * getNestedNameSpecifier() const
Retrieve the nested-name-specifier to which this instance refers.
ExpressionTraitExpr(EmptyShell Empty)
const Capture * capture_iterator
An iterator that walks over the captures of the lambda, both implicit and explicit.
SizeOfPackExpr(QualType SizeType, SourceLocation OperatorLoc, NamedDecl *Pack, SourceLocation PackLoc, SourceLocation RParenLoc, unsigned Length)
Create an expression that computes the length of the given parameter pack, which is already known...
bool isLeftFold() const
Does this produce a left-associated sequence of operators?
SourceLocation getUDSuffixLoc() const
Returns the location of a ud-suffix in the expression.
TypeSourceInfo * getQueriedTypeSourceInfo() const
const_arg_iterator arg_begin() const
SourceLocation getLocEnd() const LLVM_READONLY
unsigned kind
All of the diagnostics that can be emitted by the frontend.
void setExprOperand(Expr *E)
void copyInto(TemplateArgumentListInfo &List) const
Full-expression storage duration (for temporaries).
SourceLocation getTemplateKeywordLoc() const
Get the source location of the template keyword.
SourceLocation getExprLoc() const LLVM_READONLY
CXXUuidofExpr(EmptyShell Empty, bool isExpr)
DeclarationName getName() const
Gets the name looked up.
const ASTTemplateArgumentListInfo * getOptionalExplicitTemplateArgs() const
Retrieves the optional explicit template arguments.
CXXPseudoDestructorExpr(const ASTContext &Context, Expr *Base, bool isArrow, SourceLocation OperatorLoc, NestedNameSpecifierLoc QualifierLoc, TypeSourceInfo *ScopeType, SourceLocation ColonColonLoc, SourceLocation TildeLoc, PseudoDestructorTypeStorage DestroyedType)
Expr * getPattern()
Retrieve the pattern of the pack expansion.
const ASTTemplateArgumentListInfo * getOptionalExplicitTemplateArgs() const
Retrieves the optional explicit template arguments.
CXXTypeidExpr(EmptyShell Empty, bool isExpr)
static bool classof(const Stmt *T)
Abstract class common to all of the C++ "named"/"keyword" casts.
bool isStdInitListInitialization() const
Whether this constructor call was written as list-initialization, but was interpreted as forming a st...
SourceLocation getLocEnd() const LLVM_READONLY
static bool classof(const Stmt *T)
ExprValueKind getValueKind() const
getValueKind - The value kind that this expression produces.
CUDAKernelCallExpr(ASTContext &C, EmptyShell Empty)
const Expr * getSubExpr() const
TypeSourceInfo * getAllocatedTypeSourceInfo() const
bool hasTemplateKeyword() const
Determines whether the name was preceded by the template keyword.
ExprIterator arg_iterator
BinaryOperatorKind getOperator() const
An l-value expression is a reference to an object with independent storage.
SourceLocation getRParenLoc() const
Determine the location of the right parenthesis.
arg_const_range arguments() const
A trivial tuple used to represent a source range.
A boolean literal, per ([C++ lex.bool] Boolean literals).
NestedNameSpecifier * getQualifier() const
Fetches the nested-name qualifier, if one was given.
static bool classof(const Stmt *T)
CXXPseudoDestructorExpr(EmptyShell Shell)
QualType getDestroyedType() const
Retrieve the type being destroyed.
Automatic storage duration (most local variables).
void copyTemplateArgumentsInto(TemplateArgumentListInfo &List) const
Copies the template arguments (if present) into the given structure.
void setStdInitListInitialization(bool V)
const CallExpr * getConfig() const
bool isTypeOperand() const
static bool classof(const Stmt *T)
static bool classof(const Stmt *T)
CXXThrowExpr(Expr *expr, QualType Ty, SourceLocation l, bool IsThrownVariableInScope)
bool isArrow() const
Determine whether this member expression used the '->' operator; otherwise, it used the '...
const CXXDestructorDecl * getDestructor() const
static bool classof(const Stmt *T)
CXXThisExpr(EmptyShell Empty)
CXXRecordDecl * getLambdaClass() const
Retrieve the class that corresponds to the lambda.
operator "" X (unsigned long long)
Defines the LambdaCapture class.
Expr * getCookedLiteral()
If this is not a raw user-defined literal, get the underlying cooked literal (representing the litera...
CXXConstructExpr(EmptyShell Empty)
Construct an empty C++ construction expression.
Expr * IgnoreParens() LLVM_READONLY
SourceLocation getLocEnd() const LLVM_READONLY
bool hasUnresolvedUsing() const
Determine whether the lookup results contain an unresolved using declaration.
static bool classof(const Stmt *T)