summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Wicking <paul.wicking@qt.io>2023-04-03 20:00:40 +0200
committerPaul Wicking <paul.wicking@qt.io>2023-04-04 18:49:24 +0200
commit2fb7dc16f79510e0c4c9ffe70fa16280bb2ad85e (patch)
treee756d653230044642d05e2e7398a634f35a4ff1d
parent96283c032ca4d7b1e245cb54939262acc564cec9 (diff)
QDoc: Ensure FunctionNode sets sensible virtualness values
The index files generated by QDoc contains an attribute for a function's "virtualness"; that is, if the function is a virtual, pure virtual, or not virtual. These attributes are written to the index file if they exist, and read back in, again if they exist. For functions that do not have this attribute in the index file, a virtualness of NonVirtual is implicitly assumed. This change explicitly initializes the responsible member variable, FunctionNode::m_virtualness, to NonVirtual. Furthermore, the setter overload setVirtualness(const QString&), which is called only when reading an index file back in, is modified to handle the special case for pure virtuals first, then setting m_virtualness to Virtual if that's the case, and NonVirtual for any empty, missing, or unknown attributes. Task-number: QTBUG-112494 Change-Id: I8f08b72ae58dca5da07932f010da230c667b056c Reviewed-by: Topi Reiniƶ <topi.reinio@qt.io>
-rw-r--r--src/qdoc/functionnode.cpp9
-rw-r--r--src/qdoc/functionnode.h2
2 files changed, 5 insertions, 6 deletions
diff --git a/src/qdoc/functionnode.cpp b/src/qdoc/functionnode.cpp
index f212fdb47..5fda51e3b 100644
--- a/src/qdoc/functionnode.cpp
+++ b/src/qdoc/functionnode.cpp
@@ -145,15 +145,14 @@ QString FunctionNode::virtualness() const
*/
void FunctionNode::setVirtualness(const QString &value)
{
- if (value == QLatin1String("non"))
- m_virtualness = NonVirtual;
- else if (value == QLatin1String("virtual"))
- m_virtualness = NormalVirtual;
- else if (value == QLatin1String("pure")) {
+ if (value == QLatin1String("pure")) {
m_virtualness = PureVirtual;
if (parent() && parent()->isClassNode())
parent()->setAbstract(true);
+ return;
}
+
+ m_virtualness = (value == QLatin1String("virtual")) ? NormalVirtual : NonVirtual;
}
static QMap<QString, FunctionNode::Metaness> metanessMap_;
diff --git a/src/qdoc/functionnode.h b/src/qdoc/functionnode.h
index cb183328a..1d2ec2203 100644
--- a/src/qdoc/functionnode.h
+++ b/src/qdoc/functionnode.h
@@ -191,7 +191,7 @@ private:
std::optional<QString> m_noexcept;
Metaness m_metaness {};
- Virtualness m_virtualness {};
+ Virtualness m_virtualness{ NonVirtual };
signed short m_overloadNumber {};
FunctionNode *m_nextOverload { nullptr };
QString m_returnType {};