diff options
author | Steve Naroff <snaroff@apple.com> | 2007-11-29 23:05:20 +0000 |
---|---|---|
committer | Steve Naroff <snaroff@apple.com> | 2007-11-29 23:05:20 +0000 |
commit | 89307ffaf8acf4d6fdffd72b607ca4fbcfdffc9d (patch) | |
tree | bbf0f3ba5d789a183976c58fc486375e4d480bba /Parse/Parser.cpp | |
parent | 2ff3e691ecc63a5d82d4023b46b5b47ce14ace53 (diff) |
Yesterday, I simplified how we stream top-level decls.
After a discussion with Ted, we both came to the conclusion that adding a "HandleTopLevelDeclaration" hook to ASConsumer is far more elegant. The default implementation of HandleTopLevelDeclaration will be responsible for iterating over the ScopedDecl (which has a chain of the decls:-).
TODO: Once Ted adds HandleTopLevelDeclaration, make sure TagDecls are chainged appropriately...
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44445 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'Parse/Parser.cpp')
-rw-r--r-- | Parse/Parser.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/Parse/Parser.cpp b/Parse/Parser.cpp index 6e03328592..8a0d8c7ecd 100644 --- a/Parse/Parser.cpp +++ b/Parse/Parser.cpp @@ -259,10 +259,11 @@ void Parser::Initialize() { /// ParseTopLevelDecl - Parse one top-level declaration, return whatever the /// action tells us to. This returns true if the EOF was encountered. -bool Parser::ParseTopLevelDecl() { +bool Parser::ParseTopLevelDecl(DeclTy*& Result) { + Result = 0; if (Tok.is(tok::eof)) return true; - ParseExternalDeclaration(); + Result = ParseExternalDeclaration(); return false; } @@ -280,7 +281,8 @@ void Parser::Finalize() { void Parser::ParseTranslationUnit() { Initialize(); - while (!ParseTopLevelDecl()) + DeclTy *Res; + while (!ParseTopLevelDecl(Res)) /*parse them all*/; Finalize(); |