summaryrefslogtreecommitdiffstats
path: root/clang/lib/Parse/Parser.cpp
diff options
context:
space:
mode:
authorSebastian Redl <sebastian.redl@getdesigned.at>2008-12-09 13:15:23 +0000
committerSebastian Redl <sebastian.redl@getdesigned.at>2008-12-09 13:15:23 +0000
commit17f2c7d2514aa1b45c0ff25e777a72f59018788b (patch)
tree98505df512a34e442d66d23b1a606cebbcfbb129 /clang/lib/Parse/Parser.cpp
parent08628db9d2183b29a6d7a757523e18313f4cf135 (diff)
downloadbcm5719-llvm-17f2c7d2514aa1b45c0ff25e777a72f59018788b.tar.gz
bcm5719-llvm-17f2c7d2514aa1b45c0ff25e777a72f59018788b.zip
Consistently use smart pointers for stmt and expr nodes in parser local variables.
llvm-svn: 60761
Diffstat (limited to 'clang/lib/Parse/Parser.cpp')
-rw-r--r--clang/lib/Parse/Parser.cpp19
1 files changed, 10 insertions, 9 deletions
diff --git a/clang/lib/Parse/Parser.cpp b/clang/lib/Parse/Parser.cpp
index 8a5498828e3..f2d0ce4cc40 100644
--- a/clang/lib/Parse/Parser.cpp
+++ b/clang/lib/Parse/Parser.cpp
@@ -17,6 +17,7 @@
#include "clang/Parse/Scope.h"
#include "ExtensionRAIIObject.h"
#include "ParsePragma.h"
+#include "AstGuard.h"
using namespace clang;
Parser::Parser(Preprocessor &pp, Action &actions)
@@ -333,13 +334,13 @@ Parser::DeclTy *Parser::ParseExternalDeclaration() {
return ParseExternalDeclaration();
}
case tok::kw_asm: {
- ExprResult Result = ParseSimpleAsm();
+ ExprOwner Result(Actions, ParseSimpleAsm());
ExpectAndConsume(tok::semi, diag::err_expected_semi_after,
"top-level asm block");
- if (!Result.isInvalid)
- return Actions.ActOnFileScopeAsmDecl(Tok.getLocation(), Result.Val);
+ if (!Result.isInvalid())
+ return Actions.ActOnFileScopeAsmDecl(Tok.getLocation(), Result.move());
return 0;
}
case tok::at:
@@ -669,12 +670,12 @@ Parser::ExprResult Parser::ParseAsmStringLiteral() {
return true;
}
- ExprResult Res = ParseStringLiteralExpression();
- if (Res.isInvalid) return true;
+ ExprOwner Res(Actions, ParseStringLiteralExpression());
+ if (Res.isInvalid()) return true;
// TODO: Diagnose: wide string literal in 'asm'
- return Res;
+ return Res.move();
}
/// ParseSimpleAsm
@@ -693,14 +694,14 @@ Parser::ExprResult Parser::ParseSimpleAsm() {
ConsumeParen();
- ExprResult Result = ParseAsmStringLiteral();
+ ExprOwner Result(Actions, ParseAsmStringLiteral());
- if (Result.isInvalid)
+ if (Result.isInvalid())
SkipUntil(tok::r_paren);
else
MatchRHSPunctuation(tok::r_paren, Loc);
- return Result;
+ return Result.move();
}
/// TryAnnotateTypeOrScopeToken - If the current token position is on a
OpenPOWER on IntegriCloud