diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Parse/ParseObjc.cpp | 18 | ||||
-rw-r--r-- | lib/Sema/Sema.h | 35 | ||||
-rw-r--r-- | lib/Sema/SemaStmt.cpp | 58 |
3 files changed, 55 insertions, 56 deletions
diff --git a/lib/Parse/ParseObjc.cpp b/lib/Parse/ParseObjc.cpp index 96673f088b..ef0d4b201a 100644 --- a/lib/Parse/ParseObjc.cpp +++ b/lib/Parse/ParseObjc.cpp @@ -1202,7 +1202,7 @@ Parser::OwningStmtResult Parser::ParseObjCThrowStmt(SourceLocation atLoc) { } } ConsumeToken(); // consume ';' - return Owned(Actions.ActOnObjCAtThrowStmt(atLoc, Res.release())); + return Actions.ActOnObjCAtThrowStmt(atLoc, move_convert(Res)); } /// objc-synchronized-statement: @@ -1239,8 +1239,8 @@ Parser::ParseObjCSynchronizedStmt(SourceLocation atLoc) { BodyScope.Exit(); if (SynchBody.isInvalid()) SynchBody = Actions.ActOnNullStmt(Tok.getLocation()); - return Owned(Actions.ActOnObjCAtSynchronizedStmt(atLoc, Res.release(), - SynchBody.release())); + return Actions.ActOnObjCAtSynchronizedStmt(atLoc, move_convert(Res), + move_convert(SynchBody)); } /// objc-try-catch-statement: @@ -1313,8 +1313,8 @@ Parser::OwningStmtResult Parser::ParseObjCTryStmt(SourceLocation atLoc) { if (CatchBody.isInvalid()) CatchBody = Actions.ActOnNullStmt(Tok.getLocation()); CatchStmts = Actions.ActOnObjCAtCatchStmt(AtCatchFinallyLoc, - RParenLoc, FirstPart.release(), CatchBody.release(), - CatchStmts.release()); + RParenLoc, move_convert(FirstPart), move_convert(CatchBody), + move_convert(CatchStmts)); } else { Diag(AtCatchFinallyLoc, diag::err_expected_lparen_after) << "@catch clause"; @@ -1334,7 +1334,7 @@ Parser::OwningStmtResult Parser::ParseObjCTryStmt(SourceLocation atLoc) { if (FinallyBody.isInvalid()) FinallyBody = Actions.ActOnNullStmt(Tok.getLocation()); FinallyStmt = Actions.ActOnObjCAtFinallyStmt(AtCatchFinallyLoc, - FinallyBody.release()); + move_convert(FinallyBody)); catch_or_finally_seen = true; break; } @@ -1343,9 +1343,9 @@ Parser::OwningStmtResult Parser::ParseObjCTryStmt(SourceLocation atLoc) { Diag(atLoc, diag::err_missing_catch_finally); return StmtError(); } - return Owned(Actions.ActOnObjCAtTryStmt(atLoc, TryBody.release(), - CatchStmts.release(), - FinallyStmt.release())); + return Actions.ActOnObjCAtTryStmt(atLoc, move_convert(TryBody), + move_convert(CatchStmts), + move_convert(FinallyStmt)); } /// objc-method-def: objc-method-proto ';'[opt] '{' body '}' diff --git a/lib/Sema/Sema.h b/lib/Sema/Sema.h index ef69ec24a7..eff8550bd1 100644 --- a/lib/Sema/Sema.h +++ b/lib/Sema/Sema.h @@ -912,23 +912,24 @@ public: ExprArg AsmString, MultiExprArg Clobbers, SourceLocation RParenLoc); - - virtual StmtResult ActOnObjCAtCatchStmt(SourceLocation AtLoc, - SourceLocation RParen, StmtTy *Parm, - StmtTy *Body, StmtTy *CatchList); - - virtual StmtResult ActOnObjCAtFinallyStmt(SourceLocation AtLoc, - StmtTy *Body); - - virtual StmtResult ActOnObjCAtTryStmt(SourceLocation AtLoc, - StmtTy *Try, - StmtTy *Catch, StmtTy *Finally); - - virtual StmtResult ActOnObjCAtThrowStmt(SourceLocation AtLoc, - StmtTy *Throw); - virtual StmtResult ActOnObjCAtSynchronizedStmt(SourceLocation AtLoc, - ExprTy *SynchExpr, - StmtTy *SynchBody); + + virtual OwningStmtResult ActOnObjCAtCatchStmt(SourceLocation AtLoc, + SourceLocation RParen, + StmtArg Parm, StmtArg Body, + StmtArg CatchList); + + virtual OwningStmtResult ActOnObjCAtFinallyStmt(SourceLocation AtLoc, + StmtArg Body); + + virtual OwningStmtResult ActOnObjCAtTryStmt(SourceLocation AtLoc, + StmtArg Try, + StmtArg Catch, StmtArg Finally); + + virtual OwningStmtResult ActOnObjCAtThrowStmt(SourceLocation AtLoc, + ExprArg Throw); + virtual OwningStmtResult ActOnObjCAtSynchronizedStmt(SourceLocation AtLoc, + ExprArg SynchExpr, + StmtArg SynchBody); virtual DeclTy *ActOnExceptionDeclarator(Scope *S, Declarator &D); virtual OwningStmtResult ActOnCXXCatchBlock(SourceLocation CatchLoc, diff --git a/lib/Sema/SemaStmt.cpp b/lib/Sema/SemaStmt.cpp index 23f21c7a6a..8b72514239 100644 --- a/lib/Sema/SemaStmt.cpp +++ b/lib/Sema/SemaStmt.cpp @@ -935,44 +935,42 @@ Sema::OwningStmtResult Sema::ActOnAsmStmt(SourceLocation AsmLoc, Clobbers, RParenLoc)); } -Action::StmtResult -Sema::ActOnObjCAtCatchStmt(SourceLocation AtLoc, - SourceLocation RParen, StmtTy *Parm, - StmtTy *Body, StmtTy *CatchList) { - ObjCAtCatchStmt *CS = new ObjCAtCatchStmt(AtLoc, RParen, - static_cast<Stmt*>(Parm), static_cast<Stmt*>(Body), - static_cast<Stmt*>(CatchList)); - return CatchList ? CatchList : CS; +Action::OwningStmtResult +Sema::ActOnObjCAtCatchStmt(SourceLocation AtLoc, + SourceLocation RParen, StmtArg Parm, + StmtArg Body, StmtArg catchList) { + Stmt *CatchList = static_cast<Stmt*>(catchList.release()); + ObjCAtCatchStmt *CS = new ObjCAtCatchStmt(AtLoc, RParen, + static_cast<Stmt*>(Parm.release()), static_cast<Stmt*>(Body.release()), + CatchList); + return Owned(CatchList ? CatchList : CS); } -Action::StmtResult -Sema::ActOnObjCAtFinallyStmt(SourceLocation AtLoc, StmtTy *Body) { - ObjCAtFinallyStmt *FS = new ObjCAtFinallyStmt(AtLoc, - static_cast<Stmt*>(Body)); - return FS; +Action::OwningStmtResult +Sema::ActOnObjCAtFinallyStmt(SourceLocation AtLoc, StmtArg Body) { + return Owned(new ObjCAtFinallyStmt(AtLoc, + static_cast<Stmt*>(Body.release()))); } -Action::StmtResult -Sema::ActOnObjCAtTryStmt(SourceLocation AtLoc, - StmtTy *Try, StmtTy *Catch, StmtTy *Finally) { - ObjCAtTryStmt *TS = new ObjCAtTryStmt(AtLoc, static_cast<Stmt*>(Try), - static_cast<Stmt*>(Catch), - static_cast<Stmt*>(Finally)); - return TS; +Action::OwningStmtResult +Sema::ActOnObjCAtTryStmt(SourceLocation AtLoc, + StmtArg Try, StmtArg Catch, StmtArg Finally) { + return Owned(new ObjCAtTryStmt(AtLoc, static_cast<Stmt*>(Try.release()), + static_cast<Stmt*>(Catch.release()), + static_cast<Stmt*>(Finally.release()))); } -Action::StmtResult -Sema::ActOnObjCAtThrowStmt(SourceLocation AtLoc, StmtTy *Throw) { - ObjCAtThrowStmt *TS = new ObjCAtThrowStmt(AtLoc, static_cast<Stmt*>(Throw)); - return TS; +Action::OwningStmtResult +Sema::ActOnObjCAtThrowStmt(SourceLocation AtLoc, ExprArg Throw) { + return Owned(new ObjCAtThrowStmt(AtLoc, static_cast<Expr*>(Throw.release()))); } -Action::StmtResult -Sema::ActOnObjCAtSynchronizedStmt(SourceLocation AtLoc, ExprTy *SynchExpr, - StmtTy *SynchBody) { - ObjCAtSynchronizedStmt *SS = new ObjCAtSynchronizedStmt(AtLoc, - static_cast<Stmt*>(SynchExpr), static_cast<Stmt*>(SynchBody)); - return SS; +Action::OwningStmtResult +Sema::ActOnObjCAtSynchronizedStmt(SourceLocation AtLoc, ExprArg SynchExpr, + StmtArg SynchBody) { + return Owned(new ObjCAtSynchronizedStmt(AtLoc, + static_cast<Stmt*>(SynchExpr.release()), + static_cast<Stmt*>(SynchBody.release()))); } /// ActOnCXXCatchBlock - Takes an exception declaration and a handler block |