summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Smith <martin.smith@qt.io>2018-03-23 15:14:45 +0100
committerMartin Smith <martin.smith@qt.io>2018-04-04 10:19:08 +0000
commit944b0f8b7b4426471fb475bc9b98152d005b197b (patch)
tree90ea59b4b706660014db67ffd889185c4c9d07cb
parentdd7fe16cc396470bacc23212dbe09de03503359f (diff)
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>
-rw-r--r--src/qdoc/clangcodeparser.cpp17
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)