Lines Matching refs:Expr

11 /// \brief Defines the clang::Expr interface and subclasses for C++ expressions.
20 #include "clang/AST/Expr.h"
64 CXXOperatorCallExpr(ASTContext& C, OverloadedOperatorKind Op, Expr *fn,
65 ArrayRef<Expr*> args, QualType t, ExprValueKind VK,
123 CXXMemberCallExpr(ASTContext &C, Expr *fn, ArrayRef<Expr*> args,
133 Expr *getImplicitObjectArgument() const;
165 CUDAKernelCallExpr(ASTContext &C, Expr *fn, CallExpr *Config,
166 ArrayRef<Expr*> args, QualType t, ExprValueKind VK,
211 CastKind kind, Expr *op, unsigned PathSize,
257 CXXStaticCastExpr(QualType ty, ExprValueKind vk, CastKind kind, Expr *op,
269 ExprValueKind VK, CastKind K, Expr *Op,
294 Expr *op, unsigned pathSize, TypeSourceInfo *writtenTy,
305 ExprValueKind VK, CastKind Kind, Expr *Op,
337 Expr *op, unsigned pathSize,
350 Expr *Op, const CXXCastPath *Path,
375 CXXConstCastExpr(QualType ty, ExprValueKind VK, Expr *op,
386 ExprValueKind VK, Expr *Op,
414 UserDefinedLiteral(const ASTContext &C, Expr *Fn, ArrayRef<Expr*> Args,
439 Expr *getCookedLiteral();
440 const Expr *getCookedLiteral() const {
471 class CXXBoolLiteralExpr : public Expr {
476 Expr(CXXBoolLiteralExprClass, Ty, VK_RValue, OK_Ordinary, false, false,
481 : Expr(CXXBoolLiteralExprClass, Empty) { }
505 class CXXNullPtrLiteralExpr : public Expr {
509 Expr(CXXNullPtrLiteralExprClass, Ty, VK_RValue, OK_Ordinary, false, false,
514 : Expr(CXXNullPtrLiteralExprClass, Empty) { }
533 class CXXStdInitializerListExpr : public Expr {
537 : Expr(CXXStdInitializerListExprClass, Empty), SubExpr(nullptr) {}
540 CXXStdInitializerListExpr(QualType Ty, Expr *SubExpr)
541 : Expr(CXXStdInitializerListExprClass, Ty, VK_RValue, OK_Ordinary,
547 Expr *getSubExpr() { return static_cast<Expr*>(SubExpr); }
548 const Expr *getSubExpr() const { return static_cast<const Expr*>(SubExpr); }
575 class CXXTypeidExpr : public Expr {
582 : Expr(CXXTypeidExprClass, Ty, VK_LValue, OK_Ordinary,
591 CXXTypeidExpr(QualType Ty, Expr *Operand, SourceRange R)
592 : Expr(CXXTypeidExprClass, Ty, VK_LValue, OK_Ordinary,
602 : Expr(CXXTypeidExprClass, Empty) {
604 Operand = (Expr*)nullptr;
630 Expr *getExprOperand() const {
632 return static_cast<Expr*>(Operand.get<Stmt *>());
635 void setExprOperand(Expr *E) {
663 class MSPropertyRefExpr : public Expr {
664 Expr *BaseExpr;
671 MSPropertyRefExpr(Expr *baseExpr, MSPropertyDecl *decl, bool isArrow,
675 : Expr(MSPropertyRefExprClass, ty, VK, OK_Ordinary,
683 MSPropertyRefExpr(EmptyShell Empty) : Expr(MSPropertyRefExprClass, Empty) {}
708 Expr *getBaseExpr() const { return BaseExpr; }
728 class MSPropertySubscriptExpr : public Expr {
734 void setBase(Expr *Base) { SubExprs[BASE_EXPR] = Base; }
735 void setIdx(Expr *Idx) { SubExprs[IDX_EXPR] = Idx; }
738 MSPropertySubscriptExpr(Expr *Base, Expr *Idx, QualType Ty, ExprValueKind VK,
740 : Expr(MSPropertySubscriptExprClass, Ty, VK, OK, Idx->isTypeDependent(),
750 : Expr(MSPropertySubscriptExprClass, Shell) {}
752 Expr *getBase() { return cast<Expr>(SubExprs[BASE_EXPR]); }
753 const Expr *getBase() const { return cast<Expr>(SubExprs[BASE_EXPR]); }
755 Expr *getIdx() { return cast<Expr>(SubExprs[IDX_EXPR]); }
756 const Expr *getIdx() const { return cast<Expr>(SubExprs[IDX_EXPR]); }
784 class CXXUuidofExpr : public Expr {
793 : Expr(CXXUuidofExprClass, Ty, VK_LValue, OK_Ordinary, false,
799 CXXUuidofExpr(QualType Ty, Expr *Operand, StringRef UuidStr, SourceRange R)
800 : Expr(CXXUuidofExprClass, Ty, VK_LValue, OK_Ordinary, false,
806 : Expr(CXXUuidofExprClass, Empty) {
808 Operand = (Expr*)nullptr;
830 Expr *getExprOperand() const {
832 return static_cast<Expr*>(Operand.get<Stmt *>());
835 void setExprOperand(Expr *E) {
873 class CXXThisExpr : public Expr {
879 : Expr(CXXThisExprClass, Type, VK_RValue, OK_Ordinary,
887 CXXThisExpr(EmptyShell Empty) : Expr(CXXThisExprClass, Empty) {}
913 class CXXThrowExpr : public Expr {
925 CXXThrowExpr(Expr *expr, QualType Ty, SourceLocation l,
927 Expr(CXXThrowExprClass, Ty, VK_RValue, OK_Ordinary, false, false,
931 CXXThrowExpr(EmptyShell Empty) : Expr(CXXThrowExprClass, Empty) {}
933 const Expr *getSubExpr() const { return cast_or_null<Expr>(Op); }
934 Expr *getSubExpr() { return cast_or_null<Expr>(Op); }
967 class CXXDefaultArgExpr final : public Expr {
975 : Expr(SC,
984 CXXDefaultArgExpr(EmptyShell Empty) : Expr(CXXDefaultArgExprClass, Empty) {}
998 const Expr *getExpr() const {
1001 Expr *getExpr() {
1037 class CXXDefaultInitExpr : public Expr {
1047 CXXDefaultInitExpr(EmptyShell Empty) : Expr(CXXDefaultInitExprClass, Empty) {}
1062 const Expr *getExpr() const {
1066 Expr *getExpr() {
1119 class CXXBindTemporaryExpr : public Expr {
1124 CXXBindTemporaryExpr(CXXTemporary *temp, Expr* SubExpr)
1125 : Expr(CXXBindTemporaryExprClass, SubExpr->getType(),
1134 : Expr(CXXBindTemporaryExprClass, Empty), Temp(nullptr), SubExpr(nullptr) {}
1137 Expr* SubExpr);
1143 const Expr *getSubExpr() const { return cast<Expr>(SubExpr); }
1144 Expr *getSubExpr() { return cast<Expr>(SubExpr); }
1145 void setSubExpr(Expr *E) { SubExpr = E; }
1162 class CXXConstructExpr : public Expr {
1192 ArrayRef<Expr *> Args,
1202 : Expr(SC, Empty), Constructor(nullptr), NumArgs(0), Elidable(false),
1216 ArrayRef<Expr *> Args,
1281 Expr **getArgs() { return reinterpret_cast<Expr **>(Args); }
1282 const Expr *const *getArgs() const {
1288 Expr *getArg(unsigned Arg) {
1290 return cast<Expr>(Args[Arg]);
1292 const Expr *getArg(unsigned Arg) const {
1294 return cast<Expr>(Args[Arg]);
1298 void setArg(unsigned Arg, Expr *ArgExpr) {
1325 class CXXInheritedCtorInitExpr : public Expr {
1344 : Expr(CXXInheritedCtorInitExprClass, T, VK_RValue, OK_Ordinary, false,
1354 : Expr(CXXInheritedCtorInitExprClass, Empty), Constructor(nullptr),
1403 CastKind kind, Expr *castExpr, unsigned pathSize,
1416 CastKind Kind, Expr *Op,
1461 ArrayRef<Expr *> Args,
1504 : public Expr,
1553 ArrayRef<Expr *> CaptureInits, ArrayRef<VarDecl *> ArrayIndexVars,
1559 : Expr(LambdaExprClass, Empty),
1590 bool ExplicitResultType, ArrayRef<Expr *> CaptureInits,
1658 typedef Expr **capture_init_iterator;
1662 typedef Expr *const *const_capture_init_iterator;
1677 return reinterpret_cast<Expr **>(getStoredStmts());
1683 return reinterpret_cast<Expr *const *>(getStoredStmts());
1764 class CXXScalarValueInitExpr : public Expr {
1775 : Expr(CXXScalarValueInitExprClass, Type, VK_RValue, OK_Ordinary,
1781 : Expr(CXXScalarValueInitExprClass, Shell) { }
1804 class CXXNewExpr : public Expr {
1852 ArrayRef<Expr*> placementArgs,
1853 SourceRange typeIdParens, Expr *arraySize,
1854 InitializationStyle initializationStyle, Expr *initializer,
1858 : Expr(CXXNewExprClass, Shell), SubExprs(nullptr) { }
1895 Expr *getArraySize() {
1896 return Array ? cast<Expr>(SubExprs[0]) : nullptr;
1898 const Expr *getArraySize() const {
1899 return Array ? cast<Expr>(SubExprs[0]) : nullptr;
1903 Expr **getPlacementArgs() {
1904 return reinterpret_cast<Expr **>(SubExprs + Array + hasInitializer());
1907 Expr *getPlacementArg(unsigned i) {
1911 const Expr *getPlacementArg(unsigned i) const {
1932 Expr *getInitializer() {
1933 return hasInitializer() ? cast<Expr>(SubExprs[Array]) : nullptr;
1935 const Expr *getInitializer() const {
1936 return hasInitializer() ? cast<Expr>(SubExprs[Array]) : nullptr;
2008 class CXXDeleteExpr : public Expr {
2029 FunctionDecl *operatorDelete, Expr *arg, SourceLocation loc)
2030 : Expr(CXXDeleteExprClass, ty, VK_RValue, OK_Ordinary, false, false,
2038 : Expr(CXXDeleteExprClass, Shell), OperatorDelete(nullptr),
2055 Expr *getArgument() { return cast<Expr>(Argument); }
2056 const Expr *getArgument() const { return cast<Expr>(Argument); }
2129 class CXXPseudoDestructorExpr : public Expr {
2162 Expr *Base, bool isArrow, SourceLocation OperatorLoc,
2170 : Expr(CXXPseudoDestructorExprClass, Shell),
2173 Expr *getBase() const { return cast<Expr>(Base); }
2273 : public Expr,
2289 TypeTraitExpr(EmptyShell Empty) : Expr(TypeTraitExprClass, Empty) { }
2356 class ArrayTypeTraitExpr : public Expr {
2366 Expr *Dimension;
2380 Expr *dimension, SourceLocation rparen, QualType ty)
2381 : Expr(ArrayTypeTraitExprClass, ty, VK_RValue, OK_Ordinary,
2391 : Expr(ArrayTypeTraitExprClass, Empty), ATT(0), Value(false),
2407 Expr *getDimensionExpression() const { return Dimension; }
2428 class ExpressionTraitExpr : public Expr {
2441 Expr* QueriedExpression;
2444 Expr *queried, bool value,
2446 : Expr(ExpressionTraitExprClass, resultType, VK_RValue, OK_Ordinary,
2456 : Expr(ExpressionTraitExprClass, Empty), ET(0), Value(false),
2464 Expr *getQueriedExpression() const { return QueriedExpression; }
2483 class OverloadExpr : public Expr {
2526 : Expr(K, Empty), QualifierLoc(), Results(nullptr), NumResults(0),
2545 static FindResult find(Expr *E) {
2792 : public Expr,
2937 : public Expr,
2950 ExprWithCleanups(Expr *SubExpr, bool CleanupsHaveSideEffects,
2960 static ExprWithCleanups *Create(const ASTContext &C, Expr *subexpr,
2976 Expr *getSubExpr() { return cast<Expr>(SubExpr); }
2977 const Expr *getSubExpr() const { return cast<Expr>(SubExpr); }
2984 void setSubExpr(Expr *E) { SubExpr = E; }
3022 : public Expr,
3023 private llvm::TrailingObjects<CXXUnresolvedConstructExpr, Expr *> {
3038 ArrayRef<Expr*> Args,
3042 : Expr(CXXUnresolvedConstructExprClass, Empty), Type(), NumArgs(NumArgs) { }
3051 ArrayRef<Expr*> Args,
3078 typedef Expr** arg_iterator;
3079 arg_iterator arg_begin() { return getTrailingObjects<Expr *>(); }
3082 typedef const Expr* const * const_arg_iterator;
3083 const_arg_iterator arg_begin() const { return getTrailingObjects<Expr *>(); }
3088 Expr *getArg(unsigned I) {
3093 const Expr *getArg(unsigned I) const {
3098 void setArg(unsigned I, Expr *E) {
3129 : public Expr,
3174 CXXDependentScopeMemberExpr(const ASTContext &C, Expr *Base,
3184 CXXDependentScopeMemberExpr(const ASTContext &C, Expr *Base,
3192 Create(const ASTContext &C, Expr *Base, QualType BaseType, bool IsArrow,
3209 Expr *getBase() const {
3211 return cast<Expr>(Base);
3395 Expr *Base, QualType BaseType, bool IsArrow,
3414 Expr *Base, QualType BaseType, bool IsArrow,
3434 Expr *getBase() {
3436 return cast<Expr>(Base);
3438 const Expr *getBase() const {
3440 return cast<Expr>(Base);
3526 class CXXNoexceptExpr : public Expr {
3534 CXXNoexceptExpr(QualType Ty, Expr *Operand, CanThrowResult Val,
3536 : Expr(CXXNoexceptExprClass, Ty, VK_RValue, OK_Ordinary,
3545 : Expr(CXXNoexceptExprClass, Empty)
3548 Expr *getOperand() const { return static_cast<Expr*>(Operand); }
3581 class PackExpansionExpr : public Expr {
3597 PackExpansionExpr(QualType T, Expr *Pattern, SourceLocation EllipsisLoc,
3599 : Expr(PackExpansionExprClass, T, Pattern->getValueKind(),
3607 PackExpansionExpr(EmptyShell Empty) : Expr(PackExpansionExprClass, Empty) { }
3610 Expr *getPattern() { return reinterpret_cast<Expr *>(Pattern); }
3613 const Expr *getPattern() const { return reinterpret_cast<Expr *>(Pattern); }
3654 : public Expr,
3689 : Expr(SizeOfPackExprClass, SizeType, VK_RValue, OK_Ordinary,
3703 : Expr(SizeOfPackExprClass, Empty), Length(NumPartialArgs), Pack() {}
3767 class SubstNonTypeTemplateParmExpr : public Expr {
3780 : Expr(SubstNonTypeTemplateParmExprClass, Empty) { }
3787 Expr *replacement)
3788 : Expr(SubstNonTypeTemplateParmExprClass, type, valueKind, OK_Ordinary,
3798 Expr *getReplacement() const { return cast<Expr>(Replacement); }
3822 class SubstNonTypeTemplateParmPackExpr : public Expr {
3839 : Expr(SubstNonTypeTemplateParmPackExprClass, Empty) { }
3885 : public Expr,
3962 class MaterializeTemporaryExpr : public Expr {
3984 MaterializeTemporaryExpr(QualType T, Expr *Temporary,
3986 : Expr(MaterializeTemporaryExprClass, T,
3994 : Expr(MaterializeTemporaryExprClass, Empty) { }
4003 Expr *GetTemporaryExpr() const { return static_cast<Expr *>(getTemporary()); }
4065 class CXXFoldExpr : public Expr {
4075 CXXFoldExpr(QualType T, SourceLocation LParenLoc, Expr *LHS,
4076 BinaryOperatorKind Opcode, SourceLocation EllipsisLoc, Expr *RHS,
4078 : Expr(CXXFoldExprClass, T, VK_RValue, OK_Ordinary,
4086 CXXFoldExpr(EmptyShell Empty) : Expr(CXXFoldExprClass, Empty) {}
4088 Expr *getLHS() const { return static_cast<Expr*>(SubExprs[0]); }
4089 Expr *getRHS() const { return static_cast<Expr*>(SubExprs[1]); }
4098 Expr *getPattern() const { return isLeftFold() ? getRHS() : getLHS(); }
4100 Expr *getInit() const { return isLeftFold() ? getLHS() : getRHS(); }
4133 class CoroutineSuspendExpr : public Expr {
4141 CoroutineSuspendExpr(StmtClass SC, SourceLocation KeywordLoc, Expr *Common,
4142 Expr *Ready, Expr *Suspend, Expr *Resume)
4143 : Expr(SC, Resume->getType(), Resume->getValueKind(),
4154 Expr *Common)
4155 : Expr(SC, Ty, VK_RValue, OK_Ordinary, true, true, true,
4165 CoroutineSuspendExpr(StmtClass SC, EmptyShell Empty) : Expr(SC, Empty) {
4173 Expr *getCommonExpr() const {
4174 return static_cast<Expr*>(SubExprs[SubExpr::Common]);
4177 Expr *getReadyExpr() const {
4178 return static_cast<Expr*>(SubExprs[SubExpr::Ready]);
4180 Expr *getSuspendExpr() const {
4181 return static_cast<Expr*>(SubExprs[SubExpr::Suspend]);
4183 Expr *getResumeExpr() const {
4184 return static_cast<Expr*>(SubExprs[SubExpr::Resume]);
4208 CoawaitExpr(SourceLocation CoawaitLoc, Expr *Operand, Expr *Ready,
4209 Expr *Suspend, Expr *Resume)
4212 CoawaitExpr(SourceLocation CoawaitLoc, QualType Ty, Expr *Operand)
4217 Expr *getOperand() const {
4231 CoyieldExpr(SourceLocation CoyieldLoc, Expr *Operand, Expr *Ready,
4232 Expr *Suspend, Expr *Resume)
4235 CoyieldExpr(SourceLocation CoyieldLoc, QualType Ty, Expr *Operand)
4240 Expr *getOperand() const {