diff options
author | Topi Reinio <topi.reinio@qt.io> | 2020-10-20 15:06:43 +0200 |
---|---|---|
committer | Topi Reinio <topi.reinio@qt.io> | 2020-10-20 17:22:59 +0200 |
commit | 1c4ca3b8d08ea15dd34a8aba0ec5052a1c471ff1 (patch) | |
tree | 5df4ca14742efb76da432768260f650cc7d268e4 /src/qdoc/clangcodeparser.cpp | |
parent | 57e18911d0af62f7cdec8833cf064ecb9d7ed92c (diff) | |
download | qttools-1c4ca3b8d08ea15dd34a8aba0ec5052a1c471ff1.tar.gz |
qdoc: Fix parsing of private signals
Parameters with a type QPrivateSignal were already removed when
constructing a FunctionNode from header declaration. This was
erraneously subtracted from the number of stored parameters when
parsing an \fn command.
Fixes: QTBUG-87731
Change-Id: I01409c0fcdab0dfbf8a0b9d22cded99618bdcc2d
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
Diffstat (limited to 'src/qdoc/clangcodeparser.cpp')
-rw-r--r-- | src/qdoc/clangcodeparser.cpp | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/src/qdoc/clangcodeparser.cpp b/src/qdoc/clangcodeparser.cpp index 749eb0bbc..bc894ccdf 100644 --- a/src/qdoc/clangcodeparser.cpp +++ b/src/qdoc/clangcodeparser.cpp @@ -333,15 +333,14 @@ static Node *findNodeForCursor(QDocDatabase *qdb, CXCursor cur) continue; auto fn = static_cast<FunctionNode *>(candidate); const Parameters ¶meters = fn->parameters(); - const int actualArg = numArg - parameters.isPrivateSignal(); - if (parameters.count() != actualArg + isVariadic) + if (parameters.count() != numArg + isVariadic) continue; if (fn->isConst() != bool(clang_CXXMethod_isConst(cur))) continue; if (isVariadic && parameters.last().type() != QLatin1String("...")) continue; bool different = false; - for (int i = 0; i < actualArg; ++i) { + for (int i = 0; i < numArg; ++i) { CXType argType = clang_getArgType(funcType, i); if (args.size() <= i) args.append(fromCXString(clang_getTypeSpelling(argType))); @@ -947,7 +946,7 @@ void ClangVisitor::processFunction(FunctionNode *fn, CXCursor cursor) } } if (parameters.count() > 0) { - if (parameters.last().type().endsWith(QLatin1String("::QPrivateSignal"))) { + if (parameters.last().type().endsWith(QLatin1String("QPrivateSignal"))) { parameters.pop_back(); // remove the QPrivateSignal argument parameters.setPrivateSignal(); } |