diff options
author | Martin Smith <martin.smith@digia.com> | 2014-08-04 13:30:35 +0200 |
---|---|---|
committer | Martin Smith <martin.smith@digia.com> | 2014-08-22 18:23:50 +0200 |
commit | af7f944dc507734d449355ee8e09674b2993349a (patch) | |
tree | fd19c956c333de50c0766836eac5fad202b81a84 | |
parent | a5570bbf9af05fa33cfcc9f167786e8d2ca1e32e (diff) |
qdoc: Add new checkForCollision()
But don't use it yet. qdoc will check for name
collisions within a module, once we decide what
collisions to look for and what to do about them.
This change puts a rewritten checkForCollision()
function back in, but doesn't use it yet.
Change-Id: I41f9275c3ca29f228268ccf7cb2d99bbe0ce557c
Task-number: QTBUG-40506
Reviewed-by: Topi Reiniƶ <topi.reinio@digia.com>
-rw-r--r-- | src/tools/qdoc/cppcodeparser.cpp | 18 | ||||
-rw-r--r-- | src/tools/qdoc/qdocdatabase.h | 3 | ||||
-rw-r--r-- | src/tools/qdoc/tree.cpp | 9 | ||||
-rw-r--r-- | src/tools/qdoc/tree.h | 1 |
4 files changed, 31 insertions, 0 deletions
diff --git a/src/tools/qdoc/cppcodeparser.cpp b/src/tools/qdoc/cppcodeparser.cpp index be061dbd62..b6de29e57c 100644 --- a/src/tools/qdoc/cppcodeparser.cpp +++ b/src/tools/qdoc/cppcodeparser.cpp @@ -497,6 +497,15 @@ Node* CppCodeParser::processTopicCommand(const Doc& doc, ptype = Node::DitaMapPage; } +#if 0 + const Node* n = qdb_->checkForCollision(args[0]); + if (n) { + QString other = n->doc().location().fileName(); + doc.location().warning(tr("Name/title collision detected: '%1' in '\\%2'") + .arg(args[0]).arg(command), + tr("Also used here: %1").arg(other)); + } +#endif DocNode* dn = 0; if (ptype == Node::DitaMapPage) dn = new DitaMapNode(qdb_->primaryTreeRoot(), args[0]); @@ -534,6 +543,15 @@ Node* CppCodeParser::processTopicCommand(const Doc& doc, classNode = qdb_->findClassNode(names[1].split("::")); } +#if 0 + const Node* n = qdb_->checkForCollision(names[0]); + if (n) { + QString other = n->doc().location().fileName(); + doc.location().warning(tr("Name/title collision detected: '%1' in '\\%2'") + .arg(names[0]).arg(command), + tr("Also used here: %1").arg(other)); + } +#endif QmlClassNode* qcn = new QmlClassNode(qdb_->primaryTreeRoot(), names[0]); qcn->setClassNode(classNode); qcn->setLocation(doc.startLocation()); diff --git a/src/tools/qdoc/qdocdatabase.h b/src/tools/qdoc/qdocdatabase.h index eebce90822..495db11511 100644 --- a/src/tools/qdoc/qdocdatabase.h +++ b/src/tools/qdoc/qdocdatabase.h @@ -304,6 +304,9 @@ class QDocDatabase } FunctionNode* findNodeInOpenNamespace(const QStringList& parentPath, const FunctionNode* clone); Node* findNodeInOpenNamespace(QStringList& path, Node::Type type); + const Node* checkForCollision(const QString& name) { + return primaryTree()->checkForCollision(name); + } /*******************************************************************/ /******************************************************************* diff --git a/src/tools/qdoc/tree.cpp b/src/tools/qdoc/tree.cpp index 07c7803a7c..6bd6a649fd 100644 --- a/src/tools/qdoc/tree.cpp +++ b/src/tools/qdoc/tree.cpp @@ -1393,4 +1393,13 @@ const Node* Tree::findFunctionNode(const QString& target, const Node* relative, return 0; } +/*! + Search for a node that is identified by \a name. + Return a pointer to a matching node, or 0. +*/ +const Node* Tree::checkForCollision(const QString& name) +{ + return findNode(QStringList(name), 0, 0, Node::DontCare); +} + QT_END_NAMESPACE diff --git a/src/tools/qdoc/tree.h b/src/tools/qdoc/tree.h index c225b48505..c6d6e1f4bb 100644 --- a/src/tools/qdoc/tree.h +++ b/src/tools/qdoc/tree.h @@ -194,6 +194,7 @@ class Tree void insertQmlType(const QString& key, QmlClassNode* n); void addExampleNode(ExampleNode* n) { exampleNodeMap_.insert(n->title(), n); } ExampleNodeMap& exampleNodeMap() { return exampleNodeMap_; } + const Node* checkForCollision(const QString& name); public: const QString& moduleName() const { return module_; } |