[cfe-commits] r60895 - in /cfe/trunk: include/clang/Parse/Parser.h lib/Parse/ParseObjc.cpp lib/Parse/ParseStmt.cpp

Sebastian Redl sebastian.redl at getdesigned.at
Thu Dec 11 12:12:42 PST 2008


Author: cornedbee
Date: Thu Dec 11 14:12:42 2008
New Revision: 60895

URL: http://llvm.org/viewvc/llvm-project?rev=60895&view=rev
Log:
Convert the remaining statement parsers to smart pointers.

Modified:
    cfe/trunk/include/clang/Parse/Parser.h
    cfe/trunk/lib/Parse/ParseObjc.cpp
    cfe/trunk/lib/Parse/ParseStmt.cpp

Modified: cfe/trunk/include/clang/Parse/Parser.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Parse/Parser.h?rev=60895&r1=60894&r2=60895&view=diff

==============================================================================
--- cfe/trunk/include/clang/Parse/Parser.h (original)
+++ cfe/trunk/include/clang/Parse/Parser.h Thu Dec 11 14:12:42 2008
@@ -645,10 +645,10 @@
   OwningStmtResult ParseReturnStatement();
   OwningStmtResult ParseAsmStatement(bool &msAsm);
   OwningStmtResult FuzzyParseMicrosoftAsmStatement();
-  StmtResult ParseObjCAtStatement(SourceLocation atLoc);
-  StmtResult ParseObjCTryStmt(SourceLocation atLoc);
-  StmtResult ParseObjCThrowStmt(SourceLocation atLoc);
-  StmtResult ParseObjCSynchronizedStmt(SourceLocation atLoc);
+  OwningStmtResult ParseObjCAtStatement(SourceLocation atLoc);
+  OwningStmtResult ParseObjCTryStmt(SourceLocation atLoc);
+  OwningStmtResult ParseObjCThrowStmt(SourceLocation atLoc);
+  OwningStmtResult ParseObjCSynchronizedStmt(SourceLocation atLoc);
   bool ParseAsmOperandsOpt(llvm::SmallVectorImpl<std::string> &Names,
                            llvm::SmallVectorImpl<ExprTy*> &Constraints,
                            llvm::SmallVectorImpl<ExprTy*> &Exprs);

Modified: cfe/trunk/lib/Parse/ParseObjc.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Parse/ParseObjc.cpp?rev=60895&r1=60894&r2=60895&view=diff

==============================================================================
--- cfe/trunk/lib/Parse/ParseObjc.cpp (original)
+++ cfe/trunk/lib/Parse/ParseObjc.cpp Thu Dec 11 14:12:42 2008
@@ -1174,43 +1174,44 @@
 ///  objc-throw-statement:
 ///    throw expression[opt];
 ///
-Parser::StmtResult Parser::ParseObjCThrowStmt(SourceLocation atLoc) {
+Parser::OwningStmtResult Parser::ParseObjCThrowStmt(SourceLocation atLoc) {
   OwningExprResult Res(Actions);
   ConsumeToken(); // consume throw
   if (Tok.isNot(tok::semi)) {
     Res = ParseExpression();
     if (Res.isInvalid()) {
       SkipUntil(tok::semi);
-      return true;
+      return StmtError();
     }
   }
   ConsumeToken(); // consume ';'
-  return Actions.ActOnObjCAtThrowStmt(atLoc, Res.release());
+  return Owned(Actions.ActOnObjCAtThrowStmt(atLoc, Res.release()));
 }
 
 /// objc-synchronized-statement:
 ///   @synchronized '(' expression ')' compound-statement
 ///
-Parser::StmtResult Parser::ParseObjCSynchronizedStmt(SourceLocation atLoc) {
+Parser::OwningStmtResult
+Parser::ParseObjCSynchronizedStmt(SourceLocation atLoc) {
   ConsumeToken(); // consume synchronized
   if (Tok.isNot(tok::l_paren)) {
     Diag(Tok, diag::err_expected_lparen_after) << "@synchronized";
-    return true;
+    return StmtError();
   }
   ConsumeParen();  // '('
   OwningExprResult Res(Actions, ParseExpression());
   if (Res.isInvalid()) {
     SkipUntil(tok::semi);
-    return true;
+    return StmtError();
   }
   if (Tok.isNot(tok::r_paren)) {
     Diag(Tok, diag::err_expected_lbrace);
-    return true;
+    return StmtError();
   }
   ConsumeParen();  // ')'
   if (Tok.isNot(tok::l_brace)) {
     Diag(Tok, diag::err_expected_lbrace);
-    return true;
+    return StmtError();
   }
   // Enter a scope to hold everything within the compound stmt.  Compound
   // statements can always hold declarations.
@@ -1221,8 +1222,8 @@
   BodyScope.Exit();
   if (SynchBody.isInvalid())
     SynchBody = Actions.ActOnNullStmt(Tok.getLocation());
-  return Actions.ActOnObjCAtSynchronizedStmt(atLoc, Res.release(),
-                                             SynchBody.release());
+  return Owned(Actions.ActOnObjCAtSynchronizedStmt(atLoc, Res.release(),
+                                                   SynchBody.release()));
 }
 
 ///  objc-try-catch-statement:
@@ -1236,13 +1237,13 @@
 ///     parameter-declaration
 ///     '...' [OBJC2]
 ///
-Parser::StmtResult Parser::ParseObjCTryStmt(SourceLocation atLoc) {
+Parser::OwningStmtResult Parser::ParseObjCTryStmt(SourceLocation atLoc) {
   bool catch_or_finally_seen = false;
-  
+
   ConsumeToken(); // consume try
   if (Tok.isNot(tok::l_brace)) {
     Diag(Tok, diag::err_expected_lbrace);
-    return true;
+    return StmtError();
   }
   OwningStmtResult CatchStmts(Actions);
   OwningStmtResult FinallyStmt(Actions);
@@ -1271,15 +1272,15 @@
         if (Tok.isNot(tok::ellipsis)) {
           DeclSpec DS;
           ParseDeclarationSpecifiers(DS);
-          // For some odd reason, the name of the exception variable is 
+          // For some odd reason, the name of the exception variable is
           // optional. As a result, we need to use PrototypeContext.
           Declarator DeclaratorInfo(DS, Declarator::PrototypeContext);
           ParseDeclarator(DeclaratorInfo);
           if (DeclaratorInfo.getIdentifier()) {
-            DeclTy *aBlockVarDecl = Actions.ActOnDeclarator(CurScope, 
+            DeclTy *aBlockVarDecl = Actions.ActOnDeclarator(CurScope,
                                                           DeclaratorInfo, 0);
             FirstPart =
-              Actions.ActOnDeclStmt(aBlockVarDecl, 
+              Actions.ActOnDeclStmt(aBlockVarDecl,
                                     DS.getSourceRange().getBegin(),
                                     DeclaratorInfo.getSourceRange().getEnd());
           }
@@ -1300,7 +1301,7 @@
       } else {
         Diag(AtCatchFinallyLoc, diag::err_expected_lparen_after)
           << "@catch clause";
-        return true;
+        return StmtError();
       }
       catch_or_finally_seen = true;
     } else {
@@ -1323,11 +1324,11 @@
   }
   if (!catch_or_finally_seen) {
     Diag(atLoc, diag::err_missing_catch_finally);
-    return true;
+    return StmtError();
   }
-  return Actions.ActOnObjCAtTryStmt(atLoc, TryBody.release(),
-                                    CatchStmts.release(),
-                                    FinallyStmt.release());
+  return Owned(Actions.ActOnObjCAtTryStmt(atLoc, TryBody.release(),
+                                          CatchStmts.release(),
+                                          FinallyStmt.release()));
 }
 
 ///   objc-method-def: objc-method-proto ';'[opt] '{' body '}'
@@ -1372,7 +1373,7 @@
   return MDecl;
 }
 
-Parser::StmtResult Parser::ParseObjCAtStatement(SourceLocation AtLoc) {
+Parser::OwningStmtResult Parser::ParseObjCAtStatement(SourceLocation AtLoc) {
   if (Tok.isObjCAtKeyword(tok::objc_try)) {
     return ParseObjCTryStmt(AtLoc);
   } else if (Tok.isObjCAtKeyword(tok::objc_throw))
@@ -1385,11 +1386,11 @@
     // doing this opens us up to the possibility of infinite loops if
     // ParseExpression does not consume any tokens.
     SkipUntil(tok::semi);
-    return true;
+    return StmtError();
   }
   // Otherwise, eat the semicolon.
   ExpectAndConsume(tok::semi, diag::err_expected_semi_after_expr);
-  return Actions.ActOnExprStmt(Res.release());
+  return Owned(Actions.ActOnExprStmt(Res.release()));
 }
 
 Parser::ExprResult Parser::ParseObjCAtExpression(SourceLocation AtLoc) {

Modified: cfe/trunk/lib/Parse/ParseStmt.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Parse/ParseStmt.cpp?rev=60895&r1=60894&r2=60895&view=diff

==============================================================================
--- cfe/trunk/lib/Parse/ParseStmt.cpp (original)
+++ cfe/trunk/lib/Parse/ParseStmt.cpp Thu Dec 11 14:12:42 2008
@@ -86,7 +86,7 @@
   case tok::at: // May be a @try or @throw statement
     {
       AtLoc = ConsumeToken();  // consume @
-      return Owned(ParseObjCAtStatement(AtLoc));
+      return ParseObjCAtStatement(AtLoc);
     }
 
   case tok::identifier:





More information about the cfe-commits mailing list