Replace more release+static_cast with takeAs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70567 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Sema/SemaStmt.cpp b/lib/Sema/SemaStmt.cpp
index d7fd5f0..243b569 100644
--- a/lib/Sema/SemaStmt.cpp
+++ b/lib/Sema/SemaStmt.cpp
@@ -180,7 +180,7 @@
 Sema::ActOnIfStmt(SourceLocation IfLoc, ExprArg CondVal,
                   StmtArg ThenVal, SourceLocation ElseLoc,
                   StmtArg ElseVal) {
-  Expr *condExpr = (Expr *)CondVal.release();
+  Expr *condExpr = CondVal.takeAs<Expr>();
 
   assert(condExpr && "ActOnIfStmt(): missing expression");
 
@@ -196,7 +196,7 @@
     return StmtError(Diag(IfLoc, diag::err_typecheck_statement_requires_scalar)
       << condType << condExpr->getSourceRange());
 
-  Stmt *thenStmt = (Stmt *)ThenVal.release();
+  Stmt *thenStmt = ThenVal.takeAs<Stmt>();
 
   // Warn if the if block has a null body without an else value.
   // this helps prevent bugs due to typos, such as
@@ -209,7 +209,7 @@
 
   CondVal.release();
   return Owned(new (Context) IfStmt(IfLoc, condExpr, thenStmt,
-                                    (Stmt*)ElseVal.release()));
+                                    ElseVal.takeAs<Stmt>()));
 }
 
 Action::OwningStmtResult
@@ -324,7 +324,7 @@
 Action::OwningStmtResult
 Sema::ActOnFinishSwitchStmt(SourceLocation SwitchLoc, StmtArg Switch,
                             StmtArg Body) {
-  Stmt *BodyStmt = (Stmt*)Body.release();
+  Stmt *BodyStmt = Body.takeAs<Stmt>();
 
   SwitchStmt *SS = getSwitchStack().back();
   assert(SS == (SwitchStmt*)Switch.get() && "switch stack missing push/pop!");
@@ -514,7 +514,7 @@
 
 Action::OwningStmtResult
 Sema::ActOnWhileStmt(SourceLocation WhileLoc, ExprArg Cond, StmtArg Body) {
-  Expr *condExpr = (Expr *)Cond.release();
+  Expr *condExpr = Cond.takeAs<Expr>();
   assert(condExpr && "ActOnWhileStmt(): missing expression");
 
   DefaultFunctionArrayConversion(condExpr);
@@ -530,14 +530,14 @@
       << condType << condExpr->getSourceRange());
 
   Cond.release();
-  return Owned(new (Context) WhileStmt(condExpr, (Stmt*)Body.release(),
+  return Owned(new (Context) WhileStmt(condExpr, Body.takeAs<Stmt>(), 
                                        WhileLoc));
 }
 
 Action::OwningStmtResult
 Sema::ActOnDoStmt(SourceLocation DoLoc, StmtArg Body,
                   SourceLocation WhileLoc, ExprArg Cond) {
-  Expr *condExpr = (Expr *)Cond.release();
+  Expr *condExpr = Cond.takeAs<Expr>();
   assert(condExpr && "ActOnDoStmt(): missing expression");
 
   DefaultFunctionArrayConversion(condExpr);
@@ -552,7 +552,7 @@
       << condType << condExpr->getSourceRange());
 
   Cond.release();
-  return Owned(new (Context) DoStmt((Stmt*)Body.release(), condExpr, DoLoc));
+  return Owned(new (Context) DoStmt(Body.takeAs<Stmt>(), condExpr, DoLoc));
 }
 
 Action::OwningStmtResult
@@ -1069,7 +1069,7 @@
   }
 
   ObjCAtCatchStmt *CS = new (Context) ObjCAtCatchStmt(AtLoc, RParen,
-    PVD, static_cast<Stmt*>(Body.release()), CatchList);
+    PVD, Body.takeAs<Stmt>(), CatchList);
   return Owned(CatchList ? CatchList : CS);
 }
 
@@ -1083,10 +1083,9 @@
 Sema::ActOnObjCAtTryStmt(SourceLocation AtLoc,
                          StmtArg Try, StmtArg Catch, StmtArg Finally) {
   CurFunctionNeedsScopeChecking = true;
-  return Owned(new (Context) ObjCAtTryStmt(AtLoc,
-                                        static_cast<Stmt*>(Try.release()),
-                                        static_cast<Stmt*>(Catch.release()),
-                                        static_cast<Stmt*>(Finally.release())));
+  return Owned(new (Context) ObjCAtTryStmt(AtLoc, Try.takeAs<Stmt>(),
+                                           Catch.takeAs<Stmt>(),
+                                           Finally.takeAs<Stmt>()));
 }
 
 Action::OwningStmtResult
@@ -1127,9 +1126,9 @@
                        << SyncExpr->getType() << SyncExpr->getSourceRange());
   }
   
-  return Owned(new (Context) ObjCAtSynchronizedStmt(AtLoc,
-                     static_cast<Stmt*>(SynchExpr.release()),
-                     static_cast<Stmt*>(SynchBody.release())));
+  return Owned(new (Context) ObjCAtSynchronizedStmt(AtLoc, 
+                                                    SynchExpr.takeAs<Stmt>(),
+                                                    SynchBody.takeAs<Stmt>()));
 }
 
 /// ActOnCXXCatchBlock - Takes an exception declaration and a handler block
@@ -1140,7 +1139,7 @@
   // There's nothing to test that ActOnExceptionDecl didn't already test.
   return Owned(new (Context) CXXCatchStmt(CatchLoc,
                                   cast_or_null<VarDecl>(ExDecl.getAs<Decl>()),
-                                  static_cast<Stmt*>(HandlerBlock.release())));
+                                          HandlerBlock.takeAs<Stmt>()));
 }
 
 /// ActOnCXXTryBlock - Takes a try compound-statement and a number of