summaryrefslogtreecommitdiff
path: root/src/libs/3rdparty/cplusplus/Parser.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/libs/3rdparty/cplusplus/Parser.cpp')
-rw-r--r--src/libs/3rdparty/cplusplus/Parser.cpp11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/libs/3rdparty/cplusplus/Parser.cpp b/src/libs/3rdparty/cplusplus/Parser.cpp
index 86eeaa2f2a..75970b1671 100644
--- a/src/libs/3rdparty/cplusplus/Parser.cpp
+++ b/src/libs/3rdparty/cplusplus/Parser.cpp
@@ -165,6 +165,7 @@ public:
Expression,
ExpressionList,
ParameterDeclarationClause,
+ TemplateId,
TypeId
};
@@ -510,6 +511,7 @@ bool Parser::parseClassOrNamespaceName(NameAST *&node)
bool Parser::parseTemplateId(NameAST *&node, unsigned template_token)
{
DEBUG_THIS_RULE();
+ CHECK_CACHE(ASTCache::TemplateId, NameAST);
const unsigned start = cursor();
@@ -523,14 +525,17 @@ bool Parser::parseTemplateId(NameAST *&node, unsigned template_token)
if (maybeSplitGreaterGreaterToken() || LA() == T_GREATER) {
ast->greater_token = consumeToken();
node = ast;
- return true;
+ const bool result = true;
+ _astCache->insert(ASTCache::TemplateId, start, node, cursor(), result);
+ return result;
}
}
}
+ const bool result = false;
+ _astCache->insert(ASTCache::TemplateId, start, 0, cursor(), result);
rewind(start);
-
- return false;
+ return result;
}
bool Parser::parseNestedNameSpecifier(NestedNameSpecifierListAST *&node,