diff options
Diffstat (limited to 'src/qdoc/tree.cpp')
-rw-r--r-- | src/qdoc/tree.cpp | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/qdoc/tree.cpp b/src/qdoc/tree.cpp index f6477b6b1..e20b8cc65 100644 --- a/src/qdoc/tree.cpp +++ b/src/qdoc/tree.cpp @@ -355,11 +355,14 @@ void Tree::resolveCppToQmlLinks() /*! For each C++ class node, resolve any \c using clauses that appeared in the class declaration. + + For type aliases, resolve the aliased node. */ -void Tree::resolveUsingClauses() +void Tree::resolveUsingClauses(Aggregate *parent) { - const NodeList &children = root_.childNodes(); - for (auto *child : children) { + if (!parent) + parent = &root_; + for (auto *child : parent->childNodes()) { if (child->isClassNode()) { ClassNode *cn = static_cast<ClassNode *>(child); QVector<UsingClause> &usingClauses = cn->usingClauses(); @@ -370,7 +373,13 @@ void Tree::resolveUsingClauses() usingClause.setNode(n); } } + } else if (child->isTypeAlias()) { + TypeAliasNode *ta = static_cast<TypeAliasNode *>(child); + ta->setAliasedNode(qdb_->findNodeForTarget(ta->aliasedType(), child->parent())); } + + if (child->genus() == Node::CPP && child->isAggregate()) + resolveUsingClauses(static_cast<Aggregate *>(child)); } } |