diff options
Diffstat (limited to 'src/qdoc/cppcodeparser.cpp')
-rw-r--r-- | src/qdoc/cppcodeparser.cpp | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/src/qdoc/cppcodeparser.cpp b/src/qdoc/cppcodeparser.cpp index 7ec6ed805..3c21c8b1b 100644 --- a/src/qdoc/cppcodeparser.cpp +++ b/src/qdoc/cppcodeparser.cpp @@ -1154,22 +1154,29 @@ bool CppCodeParser::matchDataType(CodeChunk *dataType, QString *var, bool qProp) in some cases (e.g., 'operator int()'). The tokenizer recognizes '(*' as a single token. */ + dataType->append(" "); // force a space after the type dataType->append(previousLexeme()); dataType->appendHotspot(); if (var != 0 && match(Tok_Ident)) *var = previousLexeme(); - if (!match(Tok_RightParen) || tok != Tok_LeftParen) { + if (!match(Tok_RightParen)) + return false; + dataType->append(previousLexeme()); + if (!match(Tok_LeftParen)) return false; - } dataType->append(previousLexeme()); - int parenDepth0 = tokenizer->parenDepth(); - while (tokenizer->parenDepth() >= parenDepth0 && tok != Tok_Eoi) { - dataType->append(lexeme()); - readToken(); + /* parse the parameters. Ignore the parameter name from the type */ + while (tok != Tok_RightParen && tok != Tok_Eoi) { + QString dummy; + if (!matchDataType(dataType, &dummy)) + return false; + if (match(Tok_Comma)) + dataType->append(previousLexeme()); } - if (match(Tok_RightParen)) - dataType->append(previousLexeme()); + if (!match(Tok_RightParen)) + return false; + dataType->append(previousLexeme()); } else { /* |