summaryrefslogtreecommitdiffstats
path: root/src/tools/qdoc
diff options
context:
space:
mode:
authorMartin Smith <martin.smith@digia.com>2013-04-30 15:46:20 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-05-07 14:56:01 +0200
commit36b7c3cd2bee59964ea07e9677a5a789676f2eae (patch)
tree104702eac80306f32a68e262e9b9b57cacbc80d4 /src/tools/qdoc
parente4471e72b20495d7cd4507537cc18196ca41cc71 (diff)
qdoc: The \wrapper command is added
If \wrapper appears in a \class comment or a \qmltype comment, qdoc will not print warnings when it finds public members of the class or the QML type that are not documented. The \wrapper command is added to several opengl classes. This reduces the number of qdoc warnings by several thousands. Task-number: QTBUG-30755 Change-Id: Iba1eebc1590ccf54100e40fe91423240c1b3d09d Reviewed-by: Topi Reiniƶ <topi.reinio@digia.com> Reviewed-by: Venugopal Shivashankar <venugopal.shivashankar@digia.com> Reviewed-by: Martin Smith <martin.smith@digia.com> Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
Diffstat (limited to 'src/tools/qdoc')
-rw-r--r--src/tools/qdoc/codeparser.cpp7
-rw-r--r--src/tools/qdoc/generator.cpp2
-rw-r--r--src/tools/qdoc/node.cpp12
-rw-r--r--src/tools/qdoc/node.h8
-rw-r--r--src/tools/qdoc/qmlcodeparser.cpp5
-rw-r--r--src/tools/qdoc/qmlvisitor.cpp4
6 files changed, 34 insertions, 4 deletions
diff --git a/src/tools/qdoc/codeparser.cpp b/src/tools/qdoc/codeparser.cpp
index 557a6f08fa..7b534a6c95 100644
--- a/src/tools/qdoc/codeparser.cpp
+++ b/src/tools/qdoc/codeparser.cpp
@@ -70,6 +70,7 @@ QT_BEGIN_NAMESPACE
#define COMMAND_SUBTITLE Doc::alias(QLatin1String("subtitle"))
#define COMMAND_THREADSAFE Doc::alias(QLatin1String("threadsafe"))
#define COMMAND_TITLE Doc::alias(QLatin1String("title"))
+#define COMMAND_WRAPPER Doc::alias(QLatin1String("wrapper"))
QString CodeParser::currentSubDir_;
QList<CodeParser *> CodeParser::parsers;
@@ -219,7 +220,8 @@ QSet<QString> CodeParser::commonMetaCommands()
<< COMMAND_SINCE
<< COMMAND_SUBTITLE
<< COMMAND_THREADSAFE
- << COMMAND_TITLE;
+ << COMMAND_TITLE
+ << COMMAND_WRAPPER;
}
/*!
@@ -286,6 +288,9 @@ void CodeParser::processCommonMetaCommand(const Location& location,
else if (command == COMMAND_SINCE) {
node->setSince(arg.first);
}
+ else if (command == COMMAND_WRAPPER) {
+ node->setWrapper();
+ }
else if (command == COMMAND_PAGEKEYWORDS) {
node->addPageKeywords(arg.first);
}
diff --git a/src/tools/qdoc/generator.cpp b/src/tools/qdoc/generator.cpp
index dfa49e8563..81be63abe1 100644
--- a/src/tools/qdoc/generator.cpp
+++ b/src/tools/qdoc/generator.cpp
@@ -654,7 +654,7 @@ void Generator::generateBody(const Node *node, CodeMarker *marker)
}
}
if (node->doc().isEmpty()) {
- if (!quiet && !node->isReimp()) { // ### might be unnecessary
+ if (!node->isWrapper() && !quiet && !node->isReimp()) { // ### might be unnecessary
node->location().warning(tr("No documentation for '%1'").arg(node->plainFullName()));
}
}
diff --git a/src/tools/qdoc/node.cpp b/src/tools/qdoc/node.cpp
index 028c0a0b2a..e627cf859e 100644
--- a/src/tools/qdoc/node.cpp
+++ b/src/tools/qdoc/node.cpp
@@ -1079,6 +1079,16 @@ void InnerNode::deleteChildren()
*/
/*!
+ Returns true if the node is a class node or a QML type node
+ that is marked as being a wrapper class or QML type, or if
+ it is a member of a wrapper class or type.
+ */
+bool Node::isWrapper() const
+{
+ return (parent_ ? parent_->isWrapper() : false);
+}
+
+/*!
*/
const Node *InnerNode::findChildNodeByName(const QString& name) const
{
@@ -1441,6 +1451,7 @@ ClassNode::ClassNode(InnerNode *parent, const QString& name)
: InnerNode(Class, parent, name)
{
abstract_ = false;
+ wrapper_ = false;
qmlelement = 0;
setPageType(ApiPage);
}
@@ -2105,6 +2116,7 @@ QmlClassNode::QmlClassNode(InnerNode *parent, const QString& name)
: DocNode(parent, name, QmlClass, Node::ApiPage),
abstract_(false),
cnodeRequired_(false),
+ wrapper_(false),
cnode_(0),
baseNode_(0)
{
diff --git a/src/tools/qdoc/node.h b/src/tools/qdoc/node.h
index d1a95358f0..326146a962 100644
--- a/src/tools/qdoc/node.h
+++ b/src/tools/qdoc/node.h
@@ -200,11 +200,13 @@ public:
virtual bool isCollisionNode() const { return false; }
virtual bool isAttached() const { return false; }
virtual bool isGroup() const { return false; }
+ virtual bool isWrapper() const;
virtual void addMember(Node* ) { }
virtual bool hasMembers() const { return false; }
virtual bool hasNamespaces() const { return false; }
virtual bool hasClasses() const { return false; }
virtual void setAbstract(bool ) { }
+ virtual void setWrapper() { }
virtual QString title() const { return QString(); }
virtual bool hasProperty(const QString& ) const { return false; }
virtual void getMemberNamespaces(NodeMap& ) { }
@@ -437,8 +439,10 @@ public:
ClassNode(InnerNode* parent, const QString& name);
virtual ~ClassNode() { }
virtual bool isClass() const { return true; }
+ virtual bool isWrapper() const { return wrapper_; }
virtual QString obsoleteLink() const { return obsoleteLink_; }
virtual void setObsoleteLink(const QString& t) { obsoleteLink_ = t; };
+ virtual void setWrapper() { wrapper_ = true; }
void addBaseClass(Access access,
ClassNode* node,
@@ -463,6 +467,7 @@ private:
QList<RelatedClass> derived;
QList<RelatedClass> ignoredBases;
bool abstract_;
+ bool wrapper_;
QString sname;
QString obsoleteLink_;
QmlClassNode* qmlelement;
@@ -568,7 +573,9 @@ public:
virtual void setCurrentChild();
virtual void clearCurrentChild();
virtual bool isAbstract() const { return abstract_; }
+ virtual bool isWrapper() const { return wrapper_; }
virtual void setAbstract(bool b) { abstract_ = b; }
+ virtual void setWrapper() { wrapper_ = true; }
virtual bool isInternal() const { return (status() == Internal); }
virtual QString qmlFullBaseName() const;
virtual QString obsoleteLink() const { return obsoleteLink_; }
@@ -592,6 +599,7 @@ public:
private:
bool abstract_;
bool cnodeRequired_;
+ bool wrapper_;
ClassNode* cnode_;
QString baseName_;
QString obsoleteLink_;
diff --git a/src/tools/qdoc/qmlcodeparser.cpp b/src/tools/qdoc/qmlcodeparser.cpp
index c86982eb95..b9c0ad9218 100644
--- a/src/tools/qdoc/qmlcodeparser.cpp
+++ b/src/tools/qdoc/qmlcodeparser.cpp
@@ -63,6 +63,7 @@ QT_BEGIN_NAMESPACE
#define COMMAND_PAGEKEYWORDS Doc::alias("pagekeywords")
#define COMMAND_PRELIMINARY Doc::alias("preliminary")
#define COMMAND_SINCE Doc::alias("since")
+#define COMMAND_WRAPPER Doc::alias("wrapper")
#define COMMAND_QMLABSTRACT Doc::alias("qmlabstract")
#define COMMAND_QMLCLASS Doc::alias("qmlclass")
@@ -228,8 +229,8 @@ QSet<QString> QmlCodeParser::otherMetaCommands()
<< COMMAND_PRELIMINARY
<< COMMAND_SINCE
<< COMMAND_QMLABSTRACT
- << COMMAND_INQMLMODULE;
-
+ << COMMAND_INQMLMODULE
+ << COMMAND_WRAPPER;
}
/*!
diff --git a/src/tools/qdoc/qmlvisitor.cpp b/src/tools/qdoc/qmlvisitor.cpp
index ac659720b2..86b86c8f34 100644
--- a/src/tools/qdoc/qmlvisitor.cpp
+++ b/src/tools/qdoc/qmlvisitor.cpp
@@ -60,6 +60,7 @@ QT_BEGIN_NAMESPACE
#define COMMAND_PAGEKEYWORDS Doc::alias(QLatin1String("pagekeywords"))
#define COMMAND_PRELIMINARY Doc::alias(QLatin1String("preliminary"))
#define COMMAND_SINCE Doc::alias(QLatin1String("since"))
+#define COMMAND_WRAPPER Doc::alias(QLatin1String("wrapper"))
#define COMMAND_QMLABSTRACT Doc::alias(QLatin1String("qmlabstract"))
#define COMMAND_QMLCLASS Doc::alias(QLatin1String("qmlclass"))
@@ -367,6 +368,9 @@ void QmlDocVisitor::applyMetacommands(QQmlJS::AST::SourceLocation,
QString arg = args[0].first; //.join(' ');
node->setSince(arg);
}
+ else if (command == COMMAND_WRAPPER) {
+ node->setWrapper();
+ }
else {
doc.location().warning(tr("The \\%1 command is ignored in QML files").arg(command));
}