From 7767b21452e9f46408086d0ee6d7cc7be702b864 Mon Sep 17 00:00:00 2001 From: Topi Reinio Date: Sat, 1 Feb 2020 20:49:06 +0100 Subject: qdoc: Correctly resolve qualified path of external base classes Often, a documented class inherits from a base that lives in another documentation module. QDoc recorded only the class name of such bases, omitting any qualified path. Fix this issue in the Clang-parser. Add an autotest for verifying documentation with cross-module inheritance and links. This requires adding a mechanism for copying the generated .index file(s) into a location where QDoc searches index files in. Fixes: QTBUG-81793 Change-Id: I4019a1ca3a0e4c69bccc1a92740fd51907bfb24d Reviewed-by: Paul Wicking --- src/qdoc/clangcodeparser.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/qdoc/clangcodeparser.cpp b/src/qdoc/clangcodeparser.cpp index ed5272b8a..169cfc568 100644 --- a/src/qdoc/clangcodeparser.cpp +++ b/src/qdoc/clangcodeparser.cpp @@ -689,8 +689,9 @@ CXChildVisitResult ClangVisitor::visitHeader(CXCursor cursor, CXSourceLocation l auto baseNode = findNodeForCursor(qdb_, baseCursor); auto classe = static_cast(parent_); if (baseNode == nullptr || !baseNode->isClassNode()) { - QString bcName = fromCXString(clang_getCursorSpelling(baseCursor)); - classe->addUnresolvedBaseClass(access, QStringList(bcName), bcName); + QString bcName = reconstructQualifiedPathForCursor(baseCursor); + classe->addUnresolvedBaseClass(access, + bcName.split(QLatin1String("::"), QString::SkipEmptyParts), bcName); return CXChildVisit_Continue; } auto baseClasse = static_cast(baseNode); -- cgit v1.2.3