diff options
author | Topi Reinio <topi.reinio@qt.io> | 2020-02-01 20:49:06 +0100 |
---|---|---|
committer | Topi Reinio <topi.reinio@qt.io> | 2020-02-04 09:13:52 +0100 |
commit | 7767b21452e9f46408086d0ee6d7cc7be702b864 (patch) | |
tree | d96526e06ffb24a7dc6cad7788bee192983c99b6 /src | |
parent | 4dd7c301fff2821bac6c03ea56ee27bc3eeaeaed (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.cpp | 5 |
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); |