summaryrefslogtreecommitdiff
path: root/src/qdoc/cppcodeparser.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/qdoc/cppcodeparser.cpp')
-rw-r--r--src/qdoc/cppcodeparser.cpp31
1 files changed, 17 insertions, 14 deletions
diff --git a/src/qdoc/cppcodeparser.cpp b/src/qdoc/cppcodeparser.cpp
index cd0c9e952..0a1ee6461 100644
--- a/src/qdoc/cppcodeparser.cpp
+++ b/src/qdoc/cppcodeparser.cpp
@@ -336,11 +336,21 @@ Node* CppCodeParser::processTopicCommand(const Doc& doc,
pn->setLocation(doc.startLocation());
return pn;
} else if (command == COMMAND_QMLTYPE) {
- QmlTypeNode* qcn = new QmlTypeNode(qdb_->primaryTreeRoot(), arg.first);
+ QmlTypeNode *qcn = nullptr;
+ Node *candidate = qdb_->primaryTreeRoot()->findChildNode(arg.first, Node::QML);
+ if (candidate != nullptr)
+ qcn = static_cast<QmlTypeNode*>(candidate);
+ else
+ qcn = new QmlTypeNode(qdb_->primaryTreeRoot(), arg.first);
qcn->setLocation(doc.startLocation());
return qcn;
} else if (command == COMMAND_JSTYPE) {
- QmlTypeNode* qcn = new QmlTypeNode(qdb_->primaryTreeRoot(), arg.first, Node::JsType);
+ QmlTypeNode *qcn = nullptr;
+ Node *candidate = qdb_->primaryTreeRoot()->findChildNode(arg.first, Node::JS);
+ if (candidate != nullptr)
+ qcn = static_cast<QmlTypeNode*>(candidate);
+ else
+ qcn = new QmlTypeNode(qdb_->primaryTreeRoot(), arg.first, Node::JsType);
qcn->setLocation(doc.startLocation());
return qcn;
} else if (command == COMMAND_QMLBASICTYPE) {
@@ -442,15 +452,8 @@ void CppCodeParser::processQmlProperties(const Doc &doc, NodeList &nodes, DocLis
}
QmlTypeNode* qmlType = qdb_->findQmlType(module, qmlTypeName);
- if (qmlType == nullptr) {
- QString msg;
- if (topics.size() > 1 && !group.isEmpty())
- msg = tr("QML/JS type '%1' not found for property group '%2'").arg(qmlTypeName).arg(group);
- else
- msg = tr("QML/JS type '%1' not found for property '%2'").arg(qmlTypeName).arg(property);
- doc.startLocation().warning(msg);
- return;
- }
+ if (qmlType == nullptr)
+ qmlType = new QmlTypeNode(qdb_->primaryTreeRoot(), qmlTypeName);
SharedCommentNode* scn = nullptr;
if (topics.size() > 1) {
@@ -565,7 +568,7 @@ void CppCodeParser::processMetaCommand(const Doc &doc,
else if (command == COMMAND_RELATES) {
QStringList path = arg.split("::");
Aggregate *aggregate = qdb_->findRelatesNode(path);
- if (!aggregate)
+ if (aggregate == nullptr)
aggregate = new ProxyNode(node->root(), arg);
if (node->parent() == aggregate) { // node is already a child of aggregate
@@ -751,9 +754,9 @@ FunctionNode *CppCodeParser::parseOtherFuncArg(const QString &topic, const Locat
funcName = colonSplit.last();
Aggregate *aggregate = qdb_->findQmlType(moduleName, elementName);
- if (!aggregate)
+ if (aggregate == nullptr)
aggregate = qdb_->findQmlBasicType(moduleName, elementName);
- if (!aggregate)
+ if (aggregate == nullptr)
return nullptr;
QString params;