summaryrefslogtreecommitdiff
path: root/src/shared/cplusplus/Parser.cpp
diff options
context:
space:
mode:
authorRoberto Raggi <roberto.raggi@nokia.com>2010-08-12 12:18:49 +0200
committerRoberto Raggi <roberto.raggi@nokia.com>2010-08-12 12:29:12 +0200
commitefb600665d3cb277d330974bcfd90a1da8dc6395 (patch)
tree61dd0d35444f3d03d57ddf88c14d4c08556bdc62 /src/shared/cplusplus/Parser.cpp
parent7f04af17a1adc5dd9b0a486d879e9150244cc7f8 (diff)
downloadqt-creator-efb600665d3cb277d330974bcfd90a1da8dc6395.tar.gz
Remember the T_TEMPLATE token we use to force the parser to recognize a template-id.
Diffstat (limited to 'src/shared/cplusplus/Parser.cpp')
-rw-r--r--src/shared/cplusplus/Parser.cpp7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/shared/cplusplus/Parser.cpp b/src/shared/cplusplus/Parser.cpp
index 07b0a018a5..ad20ef7af4 100644
--- a/src/shared/cplusplus/Parser.cpp
+++ b/src/shared/cplusplus/Parser.cpp
@@ -419,14 +419,14 @@ bool Parser::parseClassOrNamespaceName(NameAST *&node)
}
} else if (LA() == T_TEMPLATE) {
unsigned template_token = consumeToken();
- if (parseTemplateId(node))
+ if (parseTemplateId(node, template_token))
return true;
rewind(template_token);
}
return false;
}
-bool Parser::parseTemplateId(NameAST *&node)
+bool Parser::parseTemplateId(NameAST *&node, unsigned template_token)
{
DEBUG_THIS_RULE();
@@ -434,6 +434,7 @@ bool Parser::parseTemplateId(NameAST *&node)
if (LA() == T_IDENTIFIER && LA(2) == T_LESS) {
TemplateIdAST *ast = new (_pool) TemplateIdAST;
+ ast->template_token = template_token;
ast->identifier_token = consumeToken();
ast->less_token = consumeToken();
if (LA() == T_GREATER || parseTemplateArgumentList(
@@ -2642,7 +2643,7 @@ bool Parser::parseUnqualifiedName(NameAST *&node, bool acceptTemplateId)
return true;
} else if (LA() == T_TEMPLATE) {
unsigned template_token = consumeToken();
- if (parseTemplateId(node))
+ if (parseTemplateId(node, template_token))
return true;
rewind(template_token);
}