[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