summaryrefslogtreecommitdiffstats
path: root/src/qdoc/tree.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/qdoc/tree.cpp')
-rw-r--r--src/qdoc/tree.cpp15
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));
}
}