From 8237d6d1171d7d7d677eada7d49ab7b5d85b09e7 Mon Sep 17 00:00:00 2001 From: Martin Smith Date: Fri, 12 Feb 2016 14:54:59 +0100 Subject: qdoc: Avoid unnecessary qdoc warnings MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Generates default docs when special class member functions are declared but not documented, thereby avoiding the "No documentation for..." error. The member functions now handled are the destructor, the copy constructor, the move-copy constructor, and the default constructor. Change-Id: I9ddd7841b1dfec907ab3c2ccd7636dc898df1fce Task-number: QTBUG-50630 Reviewed-by: Topi Reiniƶ --- src/qdoc/cppcodeparser.cpp | 43 ++++++++++++++++++++++++++----------------- 1 file changed, 26 insertions(+), 17 deletions(-) (limited to 'src/qdoc/cppcodeparser.cpp') diff --git a/src/qdoc/cppcodeparser.cpp b/src/qdoc/cppcodeparser.cpp index 29f6a07d4..8e5d279e1 100644 --- a/src/qdoc/cppcodeparser.cpp +++ b/src/qdoc/cppcodeparser.cpp @@ -375,7 +375,7 @@ Node* CppCodeParser::processTopicCommand(const Doc& doc, func = 0; } else { - func->setMetaness(FunctionNode::MacroWithParams); + func->setMetaness(Node::MacroWithParams); QVector params = func->parameters(); for (int i = 0; i < params.size(); ++i) { Parameter ¶m = params[i]; @@ -391,7 +391,7 @@ Node* CppCodeParser::processTopicCommand(const Doc& doc, func = new FunctionNode(qdb_->primaryTreeRoot(), arg.first); func->setAccess(Node::Public); func->setLocation(doc.startLocation()); - func->setMetaness(FunctionNode::MacroWithoutParams); + func->setMetaness(Node::MacroWithoutParams); } else { doc.location().warning(tr("Invalid syntax in '\\%1'").arg(COMMAND_MACRO)); @@ -1050,7 +1050,7 @@ void CppCodeParser::reset() tokenizer = 0; tok = 0; access = Node::Public; - metaness_ = FunctionNode::Plain; + metaness_ = Node::Plain; lastPath_.clear(); physicalModuleName.clear(); } @@ -1647,12 +1647,24 @@ bool CppCodeParser::matchFunctionDecl(Aggregate *parent, if (matched_QT_DEPRECATED) func->setStatus(Node::Deprecated); if (matched_explicit) { /* What can be done? */ } + if (!pvect.isEmpty()) { + func->setParameters(pvect); + } func->setMetaness(metaness_); if (parent) { - if (name == parent->name()) - func->setMetaness(FunctionNode::Ctor); + if (name == parent->name()) { + Node::Metaness m = Node::Ctor; + if (!pvect.isEmpty()) { + for (int i=0; isetMetaness(m); + } else if (name.startsWith(QLatin1Char('~'))) - func->setMetaness(FunctionNode::Dtor); + func->setMetaness(Node::Dtor); } func->setStatic(matched_static); func->setConst(matchedConst); @@ -1662,9 +1674,6 @@ bool CppCodeParser::matchFunctionDecl(Aggregate *parent, func->setFinal(matchFinal); if (isQPrivateSignal) func->setPrivateSignal(); - if (!pvect.isEmpty()) { - func->setParameters(pvect); - } } if (parentPathPtr != 0) *parentPathPtr = parentPath; @@ -1774,8 +1783,8 @@ bool CppCodeParser::matchClassDecl(Aggregate *parent, Node::Access outerAccess = access; access = isClass ? Node::Private : Node::Public; - FunctionNode::Metaness outerMetaness = metaness_; - metaness_ = FunctionNode::Plain; + Node::Metaness outerMetaness = metaness_; + metaness_ = Node::Plain; bool matches = (matchDeclList(classe) && match(Tok_RightBrace) && match(Tok_Semicolon)); @@ -2156,28 +2165,28 @@ bool CppCodeParser::matchDeclList(Aggregate *parent) case Tok_private: readToken(); access = Node::Private; - metaness_ = FunctionNode::Plain; + metaness_ = Node::Plain; break; case Tok_protected: readToken(); access = Node::Protected; - metaness_ = FunctionNode::Plain; + metaness_ = Node::Plain; break; case Tok_public: readToken(); access = Node::Public; - metaness_ = FunctionNode::Plain; + metaness_ = Node::Plain; break; case Tok_signals: case Tok_Q_SIGNALS: readToken(); access = Node::Public; - metaness_ = FunctionNode::Signal; + metaness_ = Node::Signal; break; case Tok_slots: case Tok_Q_SLOTS: readToken(); - metaness_ = FunctionNode::Slot; + metaness_ = Node::Slot; break; case Tok_Q_OBJECT: readToken(); @@ -2411,7 +2420,7 @@ bool CppCodeParser::matchDocsAndStuff() generated by moc. */ node = qdb_->findFunctionNode(parentPath, clone); - if (node != 0 && node->metaness() != FunctionNode::Signal) + if (node != 0 && node->metaness() != Node::Signal) node->setLocation(clone->location()); delete clone; } -- cgit v1.2.1