diff options
author | Paul Wicking <paul.wicking@qt.io> | 2023-04-03 20:00:40 +0200 |
---|---|---|
committer | Paul Wicking <paul.wicking@qt.io> | 2023-04-04 18:49:24 +0200 |
commit | 2fb7dc16f79510e0c4c9ffe70fa16280bb2ad85e (patch) | |
tree | e756d653230044642d05e2e7398a634f35a4ff1d | |
parent | 96283c032ca4d7b1e245cb54939262acc564cec9 (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.cpp | 9 | ||||
-rw-r--r-- | src/qdoc/functionnode.h | 2 |
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 {}; |