From: Sebastian Redl Date: Sun, 18 Jan 2009 17:43:11 +0000 (+0000) Subject: Convert ObjC statement actions to smart pointers. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=431e90e887c21c0d0d56fc12a2d359df8d53ea66;p=clang Convert ObjC statement actions to smart pointers. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62465 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/Driver/PrintParserCallbacks.cpp b/Driver/PrintParserCallbacks.cpp index aba91815b1..efde399fba 100644 --- a/Driver/PrintParserCallbacks.cpp +++ b/Driver/PrintParserCallbacks.cpp @@ -381,37 +381,38 @@ namespace { } // Objective-c statements - virtual StmtResult ActOnObjCAtCatchStmt(SourceLocation AtLoc, - SourceLocation RParen, StmtTy *Parm, - StmtTy *Body, StmtTy *CatchList) { + virtual OwningStmtResult ActOnObjCAtCatchStmt(SourceLocation AtLoc, + SourceLocation RParen, + StmtArg Parm, StmtArg Body, + StmtArg CatchList) { llvm::cout << __FUNCTION__ << "\n"; - return 0; + return StmtEmpty(); } - - virtual StmtResult ActOnObjCAtFinallyStmt(SourceLocation AtLoc, - StmtTy *Body) { + + virtual OwningStmtResult ActOnObjCAtFinallyStmt(SourceLocation AtLoc, + StmtArg Body) { llvm::cout << __FUNCTION__ << "\n"; - return 0; + return StmtEmpty(); } - - virtual StmtResult ActOnObjCAtTryStmt(SourceLocation AtLoc, - StmtTy *Try, - StmtTy *Catch, StmtTy *Finally) { + + virtual OwningStmtResult ActOnObjCAtTryStmt(SourceLocation AtLoc, + StmtArg Try, StmtArg Catch, + StmtArg Finally) { llvm::cout << __FUNCTION__ << "\n"; - return 0; + return StmtEmpty(); } - - virtual StmtResult ActOnObjCAtThrowStmt(SourceLocation AtLoc, - StmtTy *Throw) { + + virtual OwningStmtResult ActOnObjCAtThrowStmt(SourceLocation AtLoc, + ExprArg Throw) { llvm::cout << __FUNCTION__ << "\n"; - return 0; + return StmtEmpty(); } - - virtual StmtResult ActOnObjCAtSynchronizedStmt(SourceLocation AtLoc, - ExprTy *SynchExpr, - StmtTy *SynchBody) { + + virtual OwningStmtResult ActOnObjCAtSynchronizedStmt(SourceLocation AtLoc, + ExprArg SynchExpr, + StmtArg SynchBody) { llvm::cout << __FUNCTION__ << "\n"; - return 0; + return StmtEmpty(); } // C++ Statements diff --git a/include/clang/Parse/Action.h b/include/clang/Parse/Action.h index 311c381a92..51524eb75d 100644 --- a/include/clang/Parse/Action.h +++ b/include/clang/Parse/Action.h @@ -474,32 +474,33 @@ public: } // Objective-c statements - virtual StmtResult ActOnObjCAtCatchStmt(SourceLocation AtLoc, - SourceLocation RParen, StmtTy *Parm, - StmtTy *Body, StmtTy *CatchList) { - return 0; + virtual OwningStmtResult ActOnObjCAtCatchStmt(SourceLocation AtLoc, + SourceLocation RParen, + StmtArg Parm, StmtArg Body, + StmtArg CatchList) { + return StmtEmpty(); } - - virtual StmtResult ActOnObjCAtFinallyStmt(SourceLocation AtLoc, - StmtTy *Body) { - return 0; + + virtual OwningStmtResult ActOnObjCAtFinallyStmt(SourceLocation AtLoc, + StmtArg Body) { + return StmtEmpty(); } - - virtual StmtResult ActOnObjCAtTryStmt(SourceLocation AtLoc, - StmtTy *Try, - StmtTy *Catch, StmtTy *Finally) { - return 0; + + virtual OwningStmtResult ActOnObjCAtTryStmt(SourceLocation AtLoc, + StmtArg Try, StmtArg Catch, + StmtArg Finally) { + return StmtEmpty(); } - - virtual StmtResult ActOnObjCAtThrowStmt(SourceLocation AtLoc, - StmtTy *Throw) { - return 0; + + virtual OwningStmtResult ActOnObjCAtThrowStmt(SourceLocation AtLoc, + ExprArg Throw) { + return StmtEmpty(); } - - virtual StmtResult ActOnObjCAtSynchronizedStmt(SourceLocation AtLoc, - ExprTy *SynchExpr, - StmtTy *SynchBody) { - return 0; + + virtual OwningStmtResult ActOnObjCAtSynchronizedStmt(SourceLocation AtLoc, + ExprArg SynchExpr, + StmtArg SynchBody) { + return StmtEmpty(); } // C++ Statements 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(Parm), static_cast(Body), - static_cast(CatchList)); - return CatchList ? CatchList : CS; +Action::OwningStmtResult +Sema::ActOnObjCAtCatchStmt(SourceLocation AtLoc, + SourceLocation RParen, StmtArg Parm, + StmtArg Body, StmtArg catchList) { + Stmt *CatchList = static_cast(catchList.release()); + ObjCAtCatchStmt *CS = new ObjCAtCatchStmt(AtLoc, RParen, + static_cast(Parm.release()), static_cast(Body.release()), + CatchList); + return Owned(CatchList ? CatchList : CS); } -Action::StmtResult -Sema::ActOnObjCAtFinallyStmt(SourceLocation AtLoc, StmtTy *Body) { - ObjCAtFinallyStmt *FS = new ObjCAtFinallyStmt(AtLoc, - static_cast(Body)); - return FS; +Action::OwningStmtResult +Sema::ActOnObjCAtFinallyStmt(SourceLocation AtLoc, StmtArg Body) { + return Owned(new ObjCAtFinallyStmt(AtLoc, + static_cast(Body.release()))); } -Action::StmtResult -Sema::ActOnObjCAtTryStmt(SourceLocation AtLoc, - StmtTy *Try, StmtTy *Catch, StmtTy *Finally) { - ObjCAtTryStmt *TS = new ObjCAtTryStmt(AtLoc, static_cast(Try), - static_cast(Catch), - static_cast(Finally)); - return TS; +Action::OwningStmtResult +Sema::ActOnObjCAtTryStmt(SourceLocation AtLoc, + StmtArg Try, StmtArg Catch, StmtArg Finally) { + return Owned(new ObjCAtTryStmt(AtLoc, static_cast(Try.release()), + static_cast(Catch.release()), + static_cast(Finally.release()))); } -Action::StmtResult -Sema::ActOnObjCAtThrowStmt(SourceLocation AtLoc, StmtTy *Throw) { - ObjCAtThrowStmt *TS = new ObjCAtThrowStmt(AtLoc, static_cast(Throw)); - return TS; +Action::OwningStmtResult +Sema::ActOnObjCAtThrowStmt(SourceLocation AtLoc, ExprArg Throw) { + return Owned(new ObjCAtThrowStmt(AtLoc, static_cast(Throw.release()))); } -Action::StmtResult -Sema::ActOnObjCAtSynchronizedStmt(SourceLocation AtLoc, ExprTy *SynchExpr, - StmtTy *SynchBody) { - ObjCAtSynchronizedStmt *SS = new ObjCAtSynchronizedStmt(AtLoc, - static_cast(SynchExpr), static_cast(SynchBody)); - return SS; +Action::OwningStmtResult +Sema::ActOnObjCAtSynchronizedStmt(SourceLocation AtLoc, ExprArg SynchExpr, + StmtArg SynchBody) { + return Owned(new ObjCAtSynchronizedStmt(AtLoc, + static_cast(SynchExpr.release()), + static_cast(SynchBody.release()))); } /// ActOnCXXCatchBlock - Takes an exception declaration and a handler block