diff options
author | Martin Smith <martin.smith@qt.io> | 2018-03-23 15:14:45 +0100 |
---|---|---|
committer | Martin Smith <martin.smith@qt.io> | 2018-04-04 10:19:08 +0000 |
commit | 944b0f8b7b4426471fb475bc9b98152d005b197b (patch) | |
tree | 90ea59b4b706660014db67ffd889185c4c9d07cb /src | |
parent | dd7fe16cc396470bacc23212dbe09de03503359f (diff) | |
download | qttools-944b0f8b7b4426471fb475bc9b98152d005b197b.tar.gz |
qdoc: Combine anonymous enumsv5.11.0-beta3
When multiple anonymous enum types appear in the same class
declaration, merge them into one enum type called "anonymous"
in that class.
Change-Id: Iccdbec5c54948e5e61a7025d84dedaed1be3e76b
Task-number: QTBUG-67243
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/qdoc/clangcodeparser.cpp | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/src/qdoc/clangcodeparser.cpp b/src/qdoc/clangcodeparser.cpp index ec145c736..e64e2e223 100644 --- a/src/qdoc/clangcodeparser.cpp +++ b/src/qdoc/clangcodeparser.cpp @@ -742,11 +742,20 @@ CXChildVisitResult ClangVisitor::visitHeader(CXCursor cursor, CXSourceLocation l if (findNodeForCursor(qdb_, cursor)) // Was already parsed, propably in another tu return CXChildVisit_Continue; QString enumTypeName = fromCXString(clang_getCursorSpelling(cursor)); - if (enumTypeName.isEmpty()) + EnumNode* en = 0; + if (enumTypeName.isEmpty()) { enumTypeName = "anonymous"; - auto en = new EnumNode(parent_, enumTypeName); - en->setAccess(fromCX_CXXAccessSpecifier(clang_getCXXAccessSpecifier(cursor))); - en->setLocation(fromCXSourceLocation(clang_getCursorLocation(cursor))); + if (parent_ && (parent_->isClass() || parent_->isNamespace())) { + Node* n = parent_->findChildNode(enumTypeName, Node::Enum); + if (n) + en = static_cast<EnumNode*>(n); + } + } + if (!en) { + en = new EnumNode(parent_, enumTypeName); + en->setAccess(fromCX_CXXAccessSpecifier(clang_getCXXAccessSpecifier(cursor))); + en->setLocation(fromCXSourceLocation(clang_getCursorLocation(cursor))); + } // Enum values visitChildrenLambda(cursor, [&](CXCursor cur) { if (clang_getCursorKind(cur) != CXCursor_EnumConstantDecl) |