From 4d457401672c4ac7e9c752be357339729441a79d Mon Sep 17 00:00:00 2001 From: Roberto Raggi <roberto.raggi@nokia.com> Date: Mon, 12 Apr 2010 09:26:47 +0200 Subject: [PATCH] Fixed parsing of anonymous template parameters. For example, template <template <typename> class X> struct foo {}; Reviewed-by: erikv --- src/shared/cplusplus/Parser.cpp | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/src/shared/cplusplus/Parser.cpp b/src/shared/cplusplus/Parser.cpp index 11bef468c91..d8281ec9848 100644 --- a/src/shared/cplusplus/Parser.cpp +++ b/src/shared/cplusplus/Parser.cpp @@ -1577,13 +1577,22 @@ bool Parser::parseTemplateTypeParameter(DeclarationAST *&node) bool Parser::lookAtTypeParameter() const { - if ((LA() == T_CLASS || LA() == T_TYPENAME) && LA(2) == T_IDENTIFIER) { - switch (LA(3)) { - case T_EQUAL: - case T_COMMA: - case T_GREATER: - return true; + if (LA() == T_CLASS || LA() == T_TYPENAME) { + if (LA(2) == T_IDENTIFIER) { + switch (LA(3)) { + case T_EQUAL: + case T_COMMA: + case T_GREATER: + return true; + + default: + return false; + } } + + // recognized an anonymous template type parameter. e.g + // template <typename> + return true; } return false; -- GitLab