diff options
author | Roberto Raggi <roberto.raggi@nokia.com> | 2010-03-29 14:10:42 +0200 |
---|---|---|
committer | Roberto Raggi <roberto.raggi@nokia.com> | 2010-03-29 14:10:42 +0200 |
commit | bbdb7d9742249644a2716c90862ee37324fadb20 (patch) | |
tree | a3010da49817780b4abe87853cc1e48608ec4e4c /src/shared/cplusplus/Parser.cpp | |
parent | 0af4d51b7a6f3f477696e096134ba097c9aecace (diff) | |
download | qt-creator-bbdb7d9742249644a2716c90862ee37324fadb20.tar.gz |
Fixed parsing ambiguity when parsing dependant template types.
Diffstat (limited to 'src/shared/cplusplus/Parser.cpp')
-rw-r--r-- | src/shared/cplusplus/Parser.cpp | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/src/shared/cplusplus/Parser.cpp b/src/shared/cplusplus/Parser.cpp index a125683aff..f323241a18 100644 --- a/src/shared/cplusplus/Parser.cpp +++ b/src/shared/cplusplus/Parser.cpp @@ -1568,10 +1568,26 @@ bool Parser::parseTemplateTypeParameter(DeclarationAST *&node) return false; } +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; + } + } + + return false; +} + + bool Parser::parseTypeParameter(DeclarationAST *&node) { DEBUG_THIS_RULE(); - if (LA() == T_CLASS || LA() == T_TYPENAME) + + if (lookAtTypeParameter()) return parseTypenameTypeParameter(node); else if (LA() == T_TEMPLATE) return parseTemplateTypeParameter(node); |