QtCore: De-duplicate vtables, 2024 edition

This de-inlines destuctors of classes whose vtables are proven to be
duplicated by -Wweak-tables using the upcoming headersclean for _p.h
feature.

Since these are all private API classes, we can pick all the way back
to 6.2, and we don't need the comment that the dtor must always stay
empty, like for public classes.

Task-number: QTBUG-45582
Task-number: QTBUG-126219
Pick-to: 6.8
Change-Id: I8c864c0d2ed3ca20d20d5cfc356290eb529edf6c
Reviewed-by:  Alexey Edelev <alexey.edelev@qt.io>
This commit is contained in:
Marc Mutz 2022-02-14 08:40:45 +01:00
parent 81d55f7728
commit 3af20bd8eb
16 changed files with 35 additions and 2 deletions

View File

@ -58,6 +58,9 @@
QT_BEGIN_NAMESPACE
QPropertyAnimationPrivate::~QPropertyAnimationPrivate()
= default;
void QPropertyAnimationPrivate::updateMetaProperty()
{
const QObject *target = targetObject.valueBypassingBindings();

View File

@ -29,6 +29,7 @@ class QPropertyAnimationPrivate : public QVariantAnimationPrivate
Q_DECLARE_PUBLIC(QPropertyAnimation)
public:
QPropertyAnimationPrivate() : propertyType(0), propertyIndex(-1) { }
~QPropertyAnimationPrivate() override;
void setTargetObjectForwarder(QObject *target) { q_func()->setTargetObject(target); }
Q_OBJECT_COMPAT_PROPERTY_WITH_ARGS(QPropertyAnimationPrivate, QObject *, targetObject,

View File

@ -152,6 +152,9 @@ template<> Q_INLINE_TEMPLATE QLineF _q_interpolate(const QLineF &f, const QLineF
QVariantAnimationPrivate::QVariantAnimationPrivate() : duration(250), interpolator(&defaultInterpolator)
{ }
QVariantAnimationPrivate::~QVariantAnimationPrivate()
= default;
void QVariantAnimationPrivate::convertValues(int t)
{
auto type = QMetaType(t);

View File

@ -34,6 +34,7 @@ class QVariantAnimationPrivate : public QAbstractAnimationPrivate
public:
QVariantAnimationPrivate();
~QVariantAnimationPrivate() override;
static QVariantAnimationPrivate *get(QVariantAnimation *q)
{

View File

@ -32,6 +32,9 @@ static QString appendSlashIfNeeded(const QString &path)
return path;
}
QAbstractFileEnginePrivate::~QAbstractFileEnginePrivate()
= default;
/*!
\class QAbstractFileEngineHandler
\inmodule QtCore

View File

@ -246,7 +246,7 @@ public:
: fileError(QFile::UnspecifiedError), q_ptr(q)
{
}
inline virtual ~QAbstractFileEnginePrivate() { }
virtual ~QAbstractFileEnginePrivate();
QFile::FileError fileError;
QString errorString;

View File

@ -8,6 +8,9 @@
QT_BEGIN_NAMESPACE
QIdentityProxyModelPrivate::~QIdentityProxyModelPrivate()
= default;
/*!
\since 4.8
\class QIdentityProxyModel

View File

@ -29,6 +29,7 @@ public:
QIdentityProxyModelPrivate()
{
}
~QIdentityProxyModelPrivate() override;
QList<QPersistentModelIndex> layoutChangePersistentIndexes;
QModelIndexList proxyIndexes;

View File

@ -592,6 +592,8 @@ void QItemSelection::split(const QItemSelectionRange &range,
}
}
QItemSelectionModelPrivate::~QItemSelectionModelPrivate()
= default;
void QItemSelectionModelPrivate::initModel(QAbstractItemModel *m)
{

View File

@ -31,6 +31,7 @@ public:
QItemSelectionModelPrivate()
: currentCommand(QItemSelectionModel::NoUpdate),
tableSelected(false), tableColCount(0), tableRowCount(0) {}
~QItemSelectionModelPrivate() override;
QItemSelection expandSelection(const QItemSelection &selection,
QItemSelectionModel::SelectionFlags command) const;

View File

@ -14,6 +14,9 @@
QT_BEGIN_NAMESPACE
QEventLoopPrivate::~QEventLoopPrivate()
= default;
/*!
\class QEventLoop
\inmodule QtCore

View File

@ -30,6 +30,7 @@ public:
returnCode.storeRelaxed(-1);
exit.storeRelaxed(true);
}
~QEventLoopPrivate() override;
QAtomicInt quitLockRef;

View File

@ -19,6 +19,9 @@ using namespace std::chrono_literals;
QT_BEGIN_NAMESPACE
QTimerPrivate::~QTimerPrivate()
= default;
/*!
\class QTimer
\inmodule QtCore

View File

@ -35,6 +35,7 @@ public:
{
intervalDuration.notify();
}
~QTimerPrivate() override;
static constexpr int INV_TIMER = -1; // invalid timer id

View File

@ -57,6 +57,9 @@ static const char matchMaskAttributeC[] = "mask";
\sa QMimeTypeParser
*/
QMimeTypeParser::~QMimeTypeParser()
= default;
/*!
\class QMimeTypeParserBase
\inmodule QtCore
@ -69,6 +72,9 @@ static const char matchMaskAttributeC[] = "mask";
\sa QMimeTypeParser
*/
QMimeTypeParserBase::~QMimeTypeParserBase()
= default;
/*!
\fn virtual bool QMimeTypeParserBase::process(const QMimeType &t, QString *errorMessage) = 0;
Overwrite to process the sequence of parsed data

View File

@ -47,7 +47,7 @@ class QMimeTypeParserBase
public:
QMimeTypeParserBase() {}
virtual ~QMimeTypeParserBase() {}
virtual ~QMimeTypeParserBase();
bool parse(QIODevice *dev, const QString &fileName, QString *errorMessage);
@ -86,6 +86,7 @@ class QMimeTypeParser : public QMimeTypeParserBase
{
public:
explicit QMimeTypeParser(QMimeXMLProvider &provider) : m_provider(provider) {}
~QMimeTypeParser() override;
protected:
inline bool process(const QMimeTypeXMLData &t, QString *) override