aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/Parse/ParseObjc.cpp18
-rw-r--r--lib/Sema/Sema.h35
-rw-r--r--lib/Sema/SemaStmt.cpp58
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