diff options
| author | Anders Carlsson <andersca@mac.com> | 2009-05-17 21:22:26 +0000 |
|---|---|---|
| committer | Anders Carlsson <andersca@mac.com> | 2009-05-17 21:22:26 +0000 |
| commit | ee13926fbe312a5bc437a5945ad7bd0141daa6dc (patch) | |
| tree | a51e5418e9ff9b5eb29cbca8c1482d273119189f /clang/lib/Sema | |
| parent | 24824e50095b4abb41e14d2ad6fed6236987f10c (diff) | |
| download | bcm5719-llvm-ee13926fbe312a5bc437a5945ad7bd0141daa6dc.tar.gz bcm5719-llvm-ee13926fbe312a5bc437a5945ad7bd0141daa6dc.zip | |
Make ActOnWhileStmt take a FullExprArg for the condition expr.
llvm-svn: 71990
Diffstat (limited to 'clang/lib/Sema')
| -rw-r--r-- | clang/lib/Sema/Sema.h | 4 | ||||
| -rw-r--r-- | clang/lib/Sema/SemaStmt.cpp | 9 | ||||
| -rw-r--r-- | clang/lib/Sema/SemaTemplateInstantiateStmt.cpp | 2 |
3 files changed, 8 insertions, 7 deletions
diff --git a/clang/lib/Sema/Sema.h b/clang/lib/Sema/Sema.h index 9c277454980..a5f50a80af6 100644 --- a/clang/lib/Sema/Sema.h +++ b/clang/lib/Sema/Sema.h @@ -1182,8 +1182,8 @@ public: virtual OwningStmtResult ActOnStartOfSwitchStmt(ExprArg Cond); virtual OwningStmtResult ActOnFinishSwitchStmt(SourceLocation SwitchLoc, StmtArg Switch, StmtArg Body); - virtual OwningStmtResult ActOnWhileStmt(SourceLocation WhileLoc, ExprArg Cond, - StmtArg Body); + virtual OwningStmtResult ActOnWhileStmt(SourceLocation WhileLoc, + FullExprArg Cond, StmtArg Body); virtual OwningStmtResult ActOnDoStmt(SourceLocation DoLoc, StmtArg Body, SourceLocation WhileLoc, ExprArg Cond); diff --git a/clang/lib/Sema/SemaStmt.cpp b/clang/lib/Sema/SemaStmt.cpp index 155b51048a7..ebaa99fa989 100644 --- a/clang/lib/Sema/SemaStmt.cpp +++ b/clang/lib/Sema/SemaStmt.cpp @@ -542,13 +542,14 @@ Sema::ActOnFinishSwitchStmt(SourceLocation SwitchLoc, StmtArg Switch, } Action::OwningStmtResult -Sema::ActOnWhileStmt(SourceLocation WhileLoc, ExprArg Cond, StmtArg Body) { - Expr *condExpr = Cond.takeAs<Expr>(); +Sema::ActOnWhileStmt(SourceLocation WhileLoc, FullExprArg Cond, StmtArg Body) { + ExprArg CondArg(Cond.release()); + Expr *condExpr = CondArg.takeAs<Expr>(); assert(condExpr && "ActOnWhileStmt(): missing expression"); if (!condExpr->isTypeDependent()) { DefaultFunctionArrayConversion(condExpr); - Cond = condExpr; + CondArg = condExpr; QualType condType = condExpr->getType(); if (getLangOptions().CPlusPlus) { @@ -560,7 +561,7 @@ Sema::ActOnWhileStmt(SourceLocation WhileLoc, ExprArg Cond, StmtArg Body) { << condType << condExpr->getSourceRange()); } - Cond.release(); + CondArg.release(); return Owned(new (Context) WhileStmt(condExpr, Body.takeAs<Stmt>(), WhileLoc)); } diff --git a/clang/lib/Sema/SemaTemplateInstantiateStmt.cpp b/clang/lib/Sema/SemaTemplateInstantiateStmt.cpp index 8dcdce2712e..938e58b8fdd 100644 --- a/clang/lib/Sema/SemaTemplateInstantiateStmt.cpp +++ b/clang/lib/Sema/SemaTemplateInstantiateStmt.cpp @@ -267,7 +267,7 @@ Sema::OwningStmtResult TemplateStmtInstantiator::VisitWhileStmt(WhileStmt *S) { if (Body.isInvalid()) return SemaRef.StmtError(); - return SemaRef.ActOnWhileStmt(S->getWhileLoc(), move(Cond), move(Body)); + return SemaRef.ActOnWhileStmt(S->getWhileLoc(), FullExpr(Cond), move(Body)); } Sema::OwningStmtResult TemplateStmtInstantiator::VisitDoStmt(DoStmt *S) { |

