summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTopi Reinio <topi.reinio@qt.io>2020-02-01 20:49:06 +0100
committerTopi Reinio <topi.reinio@qt.io>2020-02-04 09:13:52 +0100
commit7767b21452e9f46408086d0ee6d7cc7be702b864 (patch)
treed96526e06ffb24a7dc6cad7788bee192983c99b6 /src
parent4dd7c301fff2821bac6c03ea56ee27bc3eeaeaed (diff)
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 <paul.wicking@qt.io>
Diffstat (limited to 'src')
-rw-r--r--src/qdoc/clangcodeparser.cpp5
1 files changed, 3 insertions, 2 deletions
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<ClassNode *>(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<ClassNode *>(baseNode);