From: Chris Lattner Date: Wed, 21 Jan 2009 19:19:26 +0000 (+0000) Subject: ParseOptionalTypeSpecifier should consume a token if it returns true. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=837acd040662ba3e9fcfbf4be754416b00b18216;p=clang ParseOptionalTypeSpecifier should consume a token if it returns true. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62704 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Parse/ParseDecl.cpp b/lib/Parse/ParseDecl.cpp index bf922780c7..384bdc19d0 100644 --- a/lib/Parse/ParseDecl.cpp +++ b/lib/Parse/ParseDecl.cpp @@ -511,9 +511,8 @@ void Parser::ParseDeclarationSpecifiers(DeclSpec &DS, case tok::identifier: { // In C++, check to see if this is a scope specifier like foo::bar::, if // so handle it as such. This is important for ctor parsing. - if (getLang().CPlusPlus && - TryAnnotateCXXScopeToken()) - continue; + if (getLang().CPlusPlus && TryAnnotateCXXScopeToken()) + continue; // This identifier can only be a typedef name if we haven't already seen // a type-specifier. Without this check we misparse: @@ -842,7 +841,9 @@ bool Parser::ParseOptionalTypeSpecifier(DeclSpec &DS, int& isInvalid, case tok::kw___cdecl: case tok::kw___stdcall: case tok::kw___fastcall: - return PP.getLangOptions().Microsoft; + if (!PP.getLangOptions().Microsoft) return false; + ConsumeToken(); + return true; default: // Not a type-specifier; do nothing.