]> granicus.if.org Git - clang/commitdiff
Add a few asserts to be on the safe side.
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>
Wed, 31 Mar 2010 00:38:09 +0000 (00:38 +0000)
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>
Wed, 31 Mar 2010 00:38:09 +0000 (00:38 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99973 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Parse/ParseCXXInlineMethods.cpp

index 44a14c331591af187baf064882fc78c74a776946..87e22fa9dce0fae20a66bccb1d7573163b17579d 100644 (file)
@@ -189,6 +189,9 @@ void Parser::ParseLexedMethodDefs(ParsingClass &Class) {
     if (LM.TemplateScope)
       Actions.ActOnReenterTemplateScope(CurScope, LM.D);
 
+    // Save the current token position.
+    SourceLocation origLoc = Tok.getLocation();
+
     assert(!LM.Toks.empty() && "Empty body!");
     // Append the current token at the end of the new token stream so that it
     // doesn't get lost.
@@ -207,6 +210,11 @@ void Parser::ParseLexedMethodDefs(ParsingClass &Class) {
 
     if (Tok.is(tok::kw_try)) {
       ParseFunctionTryBlock(LM.D);
+      assert(!PP.getSourceManager().isBeforeInTranslationUnit(origLoc,
+                                                           Tok.getLocation()) &&
+             "ParseFunctionTryBlock went over the cached tokens!");
+      assert(Tok.getLocation() == origLoc &&
+             "ParseFunctionTryBlock left tokens in the token stream!");
       continue;
     }
     if (Tok.is(tok::colon))
@@ -216,6 +224,11 @@ void Parser::ParseLexedMethodDefs(ParsingClass &Class) {
 
     // FIXME: What if ParseConstructorInitializer doesn't leave us with a '{'??
     ParseFunctionStatementBody(LM.D);
+    assert(!PP.getSourceManager().isBeforeInTranslationUnit(origLoc,
+                                                           Tok.getLocation()) &&
+           "We consumed more than the cached tokens!");
+    assert(Tok.getLocation() == origLoc &&
+           "Tokens were left in the token stream!");
   }
 
   for (unsigned I = 0, N = Class.NestedClasses.size(); I != N; ++I)