зеркало из https://github.com/microsoft/clang-1.git
push the call in isCXXDeclarationSpecifier to TryAnnotateTypeOrScopeToken
down into the two cases that it can possibly affect. This avoids calls to it that obviously can't do anything. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61651 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
a7bc7c880f
Коммит
e584926b86
|
@ -558,10 +558,27 @@ Parser::TPResult Parser::TryParseDeclarator(bool mayBeAbstract,
|
|||
/// [GNU] restrict
|
||||
///
|
||||
Parser::TPResult Parser::isCXXDeclarationSpecifier() {
|
||||
// Annotate typenames and C++ scope specifiers.
|
||||
TryAnnotateTypeOrScopeToken();
|
||||
|
||||
switch (Tok.getKind()) {
|
||||
case tok::identifier: // foo::bar
|
||||
// Annotate typenames and C++ scope specifiers. If we get one, just
|
||||
// recurse to handle whatever we get.
|
||||
if (TryAnnotateTypeOrScopeToken())
|
||||
return isCXXDeclarationSpecifier();
|
||||
// Otherwise, not a typename.
|
||||
return TPResult::False();
|
||||
|
||||
case tok::coloncolon: // ::foo::bar
|
||||
if (NextToken().is(tok::kw_new) || // ::new
|
||||
NextToken().is(tok::kw_delete)) // ::delete
|
||||
return TPResult::False();
|
||||
|
||||
// Annotate typenames and C++ scope specifiers. If we get one, just
|
||||
// recurse to handle whatever we get.
|
||||
if (TryAnnotateTypeOrScopeToken())
|
||||
return isCXXDeclarationSpecifier();
|
||||
// Otherwise, not a typename.
|
||||
return TPResult::False();
|
||||
|
||||
// decl-specifier:
|
||||
// storage-class-specifier
|
||||
// type-specifier
|
||||
|
|
Загрузка…
Ссылка в новой задаче