From 9a140d65217e22324d3f75d7c6e48eeca84f5c71 Mon Sep 17 00:00:00 2001 From: Casper van Donderen Date: Fri, 4 May 2012 14:51:53 +0200 Subject: QDoc: Generate unique ids for qmlMethods. Also delete unused function. Change-Id: I8c3590d17c823bc27dcb9d9e73b7b812e078d33b Reviewed-by: Martin Smith --- src/tools/qdoc/htmlgenerator.cpp | 5 ++++- src/tools/qdoc/node.cpp | 28 ++++------------------------ src/tools/qdoc/node.h | 2 -- src/tools/qdoc/qmlvisitor.cpp | 9 +++++++++ 4 files changed, 17 insertions(+), 27 deletions(-) diff --git a/src/tools/qdoc/htmlgenerator.cpp b/src/tools/qdoc/htmlgenerator.cpp index 806be0a3c6..ef3bf8db15 100644 --- a/src/tools/qdoc/htmlgenerator.cpp +++ b/src/tools/qdoc/htmlgenerator.cpp @@ -3383,7 +3383,10 @@ QString HtmlGenerator::refForNode(const Node *node) ref = node->name() + "-signal-handler"; break; case Node::QmlMethod: - ref = node->name() + "-method"; + func = static_cast(node); + ref = func->name() + "-method"; + if (func->overloadNumber() != 1) + ref += "-" + QString::number(func->overloadNumber()); break; case Node::Variable: ref = node->name() + "-var"; diff --git a/src/tools/qdoc/node.cpp b/src/tools/qdoc/node.cpp index 4d6c58a8a3..c648c720eb 100644 --- a/src/tools/qdoc/node.cpp +++ b/src/tools/qdoc/node.cpp @@ -1047,20 +1047,6 @@ int InnerNode::overloadNumber(const FunctionNode *func) const } } -/*! - Returns the number of member functions of a class such that - the functions are all named \a funcName. - */ -int InnerNode::numOverloads(const QString& funcName) const -{ - if (primaryFunctionMap.contains(funcName)) { - return secondaryFunctionMap[funcName].count() + 1; - } - else { - return 0; - } -} - /*! Returns a node list containing all the member functions of some class such that the functions overload the name \a funcName. @@ -1820,15 +1806,6 @@ int FunctionNode::overloadNumber() const return parent()->overloadNumber(this); } -/*! - Returns the number of times this function name has been - overloaded, obtained from the parent. - */ -int FunctionNode::numOverloads() const -{ - return parent()->numOverloads(name()); -} - /*! Returns the list of parameter names. */ @@ -2745,7 +2722,10 @@ QString Node::idForNode() const str = "qml-signal-handler-" + name(); break; case Node::QmlMethod: - str = "qml-method-" + name(); + func = static_cast(this); + str = "qml-method-" + func->name(); + if (func->overloadNumber() != 1) + str += "-" + QString::number(func->overloadNumber()); break; case Node::Variable: str = "var-" + name(); diff --git a/src/tools/qdoc/node.h b/src/tools/qdoc/node.h index b0be5f0be8..2cb93a830f 100644 --- a/src/tools/qdoc/node.h +++ b/src/tools/qdoc/node.h @@ -335,7 +335,6 @@ public: const NodeList & relatedNodes() const { return related_; } int count() const { return children.size(); } int overloadNumber(const FunctionNode* func) const; - int numOverloads(const QString& funcName) const; NodeList overloads(const QString &funcName) const; const QStringList& includes() const { return inc; } @@ -777,7 +776,6 @@ public: bool isReimp() const { return reimp; } bool isFunction() const { return true; } int overloadNumber() const; - int numOverloads() const; const QList& parameters() const { return params; } QStringList parameterNames() const; QString rawParameters(bool names = false, bool values = false) const; diff --git a/src/tools/qdoc/qmlvisitor.cpp b/src/tools/qdoc/qmlvisitor.cpp index 956f874cbf..36dc5cc16a 100644 --- a/src/tools/qdoc/qmlvisitor.cpp +++ b/src/tools/qdoc/qmlvisitor.cpp @@ -535,6 +535,15 @@ bool QmlDocVisitor::visit(QQmlJS::AST::FunctionDeclaration* fd) if (qmlClass) { QString name = fd->name.toString(); FunctionNode* qmlMethod = new FunctionNode(Node::QmlMethod, current, name, false); + int overloads = 0; + NodeList::ConstIterator overloadIterator = current->childNodes().begin(); + while (overloadIterator != current->childNodes().end()) { + if ((*overloadIterator)->name() == name) + overloads++; + overloadIterator++; + } + if (overloads > 1) + qmlMethod->setOverload(true); QList parameters; QQmlJS::AST::FormalParameterList* formals = fd->formals; if (formals) { -- cgit v1.2.3