diff options
author | Jesus Fernandez <[email protected]> | 2018-10-11 10:37:45 +0200 |
---|---|---|
committer | Marc Mutz <[email protected]> | 2024-05-19 15:56:17 +0000 |
commit | 7c128f8866ff174f7fe8ff59399f37330995a970 (patch) | |
tree | c149649cc65916c29b8f9218435b9aaeb0e24ec6 | |
parent | 00099c057cb584713cb9327738393e1748fc14f6 (diff) |
Add -Wweak-vtables to headersclean
This requires some fixes in several classes that are also included
in this patch.
The QTestEvent hierarchy is all-inline and changes layout depending on
QT_GUI_LIB and QT_WIDGETS_LIB, so we can't just export it. Suppress the
warning in that header for now. Created QTBUG-104486 to track a fix for
the real issue.
The QFutureInterface hierarchy is also all-inline, but templates, so
doesn't trigger, except the <void> specialization. Created
QTBUG-125115 to track a fix for the real issue.
Done-with: Marc Mutz <[email protected]>
Task-number: QTBUG-45582
Change-Id: I96b3e109aa989b70e0d4809b90bd53a369e50d55
Reviewed-by: Fabian Kosmale <[email protected]>
-rw-r--r-- | cmake/QtHeadersClean.cmake | 3 | ||||
-rw-r--r-- | src/corelib/thread/qfutureinterface.h | 5 | ||||
-rw-r--r-- | src/gui/accessible/qaccessiblebridge.cpp | 2 | ||||
-rw-r--r-- | src/gui/accessible/qaccessiblebridge.h | 4 | ||||
-rw-r--r-- | src/gui/text/qtextdocument.cpp | 3 | ||||
-rw-r--r-- | src/gui/text/qtextdocument.h | 6 | ||||
-rw-r--r-- | src/printsupport/CMakeLists.txt | 2 | ||||
-rw-r--r-- | src/printsupport/kernel/qprintengine.cpp | 15 | ||||
-rw-r--r-- | src/printsupport/kernel/qprintengine.h | 3 | ||||
-rw-r--r-- | src/sql/kernel/qsqldatabase.cpp | 2 | ||||
-rw-r--r-- | src/sql/kernel/qsqldatabase.h | 2 | ||||
-rw-r--r-- | src/testlib/qtestevent.h | 15 |
12 files changed, 50 insertions, 12 deletions
diff --git a/cmake/QtHeadersClean.cmake b/cmake/QtHeadersClean.cmake index 938b6a7b41f..a1ebfcef28a 100644 --- a/cmake/QtHeadersClean.cmake +++ b/cmake/QtHeadersClean.cmake @@ -130,7 +130,8 @@ function(qt_internal_add_headersclean_target module_target module_headers) endif() if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang|IntelLLVM") - list(APPEND hcleanFLAGS -Wshorten-64-to-32) + list(APPEND hcleanFLAGS -Wshorten-64-to-32 + -Wweak-vtables) endif() separate_arguments(cxx_flags NATIVE_COMMAND ${CMAKE_CXX_FLAGS}) diff --git a/src/corelib/thread/qfutureinterface.h b/src/corelib/thread/qfutureinterface.h index 180a59a94e7..ea7d40ad907 100644 --- a/src/corelib/thread/qfutureinterface.h +++ b/src/corelib/thread/qfutureinterface.h @@ -465,6 +465,9 @@ std::vector<T> QFutureInterface<T>::takeResults() } #endif +QT_WARNING_PUSH +QT_WARNING_DISABLE_CLANG("-Wweak-vtables") // QTBUG-125115 + template <> class QFutureInterface<void> : public QFutureInterfaceBase { @@ -495,6 +498,8 @@ public: } }; +QT_WARNING_POP // Clang -Wweak-vtables + template<typename T> inline void swap(QFutureInterface<T> &a, QFutureInterface<T> &b) noexcept { diff --git a/src/gui/accessible/qaccessiblebridge.cpp b/src/gui/accessible/qaccessiblebridge.cpp index a8b54b0c688..0651c516ea1 100644 --- a/src/gui/accessible/qaccessiblebridge.cpp +++ b/src/gui/accessible/qaccessiblebridge.cpp @@ -33,6 +33,8 @@ QT_BEGIN_NAMESPACE Destroys the accessibility bridge object. */ +QAccessibleBridge::~QAccessibleBridge() + = default; /*! \fn void QAccessibleBridge::setRootObject(QAccessibleInterface *object) diff --git a/src/gui/accessible/qaccessiblebridge.h b/src/gui/accessible/qaccessiblebridge.h index 4d817c8e587..753f59597a3 100644 --- a/src/gui/accessible/qaccessiblebridge.h +++ b/src/gui/accessible/qaccessiblebridge.h @@ -16,10 +16,10 @@ QT_BEGIN_NAMESPACE class QAccessibleInterface; class QAccessibleEvent; -class QAccessibleBridge +class Q_GUI_EXPORT QAccessibleBridge { public: - virtual ~QAccessibleBridge() {} + virtual ~QAccessibleBridge(); virtual void setRootObject(QAccessibleInterface *) = 0; virtual void notifyAccessibilityUpdate(QAccessibleEvent *event) = 0; }; diff --git a/src/gui/text/qtextdocument.cpp b/src/gui/text/qtextdocument.cpp index 31cb3a526a3..c39d3514c55 100644 --- a/src/gui/text/qtextdocument.cpp +++ b/src/gui/text/qtextdocument.cpp @@ -53,6 +53,9 @@ namespace { QTextDocument::ResourceProvider qt_defaultResourceProvider; }; +QAbstractUndoItem::~QAbstractUndoItem() + = default; + /*! \fn bool Qt::mightBeRichText(QAnyStringView text) diff --git a/src/gui/text/qtextdocument.h b/src/gui/text/qtextdocument.h index b6253bfa460..11a8abcb505 100644 --- a/src/gui/text/qtextdocument.h +++ b/src/gui/text/qtextdocument.h @@ -45,15 +45,11 @@ namespace Qt class Q_GUI_EXPORT QAbstractUndoItem { public: - virtual ~QAbstractUndoItem() = 0; + virtual ~QAbstractUndoItem(); virtual void undo() = 0; virtual void redo() = 0; }; -inline QAbstractUndoItem::~QAbstractUndoItem() -{ -} - class QTextDocumentPrivate; class Q_GUI_EXPORT QTextDocument : public QObject diff --git a/src/printsupport/CMakeLists.txt b/src/printsupport/CMakeLists.txt index 25aad04cafd..43a0c6b54be 100644 --- a/src/printsupport/CMakeLists.txt +++ b/src/printsupport/CMakeLists.txt @@ -14,7 +14,7 @@ qt_internal_add_module(PrintSupport kernel/qplatformprintplugin.cpp kernel/qplatformprintplugin.h kernel/qprint.cpp kernel/qprint_p.h kernel/qprintdevice.cpp kernel/qprintdevice_p.h - kernel/qprintengine.h + kernel/qprintengine.cpp kernel/qprintengine.h kernel/qprintengine_pdf.cpp kernel/qprintengine_pdf_p.h kernel/qprinter.cpp kernel/qprinter.h kernel/qprinter_p.h kernel/qprinterinfo.cpp kernel/qprinterinfo.h kernel/qprinterinfo_p.h diff --git a/src/printsupport/kernel/qprintengine.cpp b/src/printsupport/kernel/qprintengine.cpp new file mode 100644 index 00000000000..b9afb282925 --- /dev/null +++ b/src/printsupport/kernel/qprintengine.cpp @@ -0,0 +1,15 @@ +// Copyright (C) 2024 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +#include <QtPrintSupport/qprintengine.h> + +QT_BEGIN_NAMESPACE + +#ifndef QT_NO_PRINTER + +QPrintEngine::~QPrintEngine() + = default; + +#endif // QT_NO_PRINTER + +QT_END_NAMESPACE diff --git a/src/printsupport/kernel/qprintengine.h b/src/printsupport/kernel/qprintengine.h index 65d9ed9a06c..a18930c9a93 100644 --- a/src/printsupport/kernel/qprintengine.h +++ b/src/printsupport/kernel/qprintengine.h @@ -19,7 +19,8 @@ QT_BEGIN_NAMESPACE class Q_PRINTSUPPORT_EXPORT QPrintEngine { public: - virtual ~QPrintEngine() {} + virtual ~QPrintEngine(); + enum PrintEnginePropertyKey { PPK_CollateCopies, PPK_ColorMode, diff --git a/src/sql/kernel/qsqldatabase.cpp b/src/sql/kernel/qsqldatabase.cpp index fdbb16a5898..6aab93bd34f 100644 --- a/src/sql/kernel/qsqldatabase.cpp +++ b/src/sql/kernel/qsqldatabase.cpp @@ -239,6 +239,8 @@ void QSqlDatabasePrivate::disable() Destroys the SQL driver creator object. */ +QSqlDriverCreatorBase::~QSqlDriverCreatorBase() + = default; /*! \fn QSqlDriver *QSqlDriverCreatorBase::createObject() const diff --git a/src/sql/kernel/qsqldatabase.h b/src/sql/kernel/qsqldatabase.h index 5059dbba83e..073ca89c529 100644 --- a/src/sql/kernel/qsqldatabase.h +++ b/src/sql/kernel/qsqldatabase.h @@ -23,7 +23,7 @@ class QThread; class Q_SQL_EXPORT QSqlDriverCreatorBase { public: - virtual ~QSqlDriverCreatorBase() {} + virtual ~QSqlDriverCreatorBase(); virtual QSqlDriver *createObject() const = 0; }; diff --git a/src/testlib/qtestevent.h b/src/testlib/qtestevent.h index 8f092cf8c94..3b75e07f62b 100644 --- a/src/testlib/qtestevent.h +++ b/src/testlib/qtestevent.h @@ -28,6 +28,9 @@ QT_BEGIN_NAMESPACE # define QT_ONLY_WIDGETLIB_USES Q_DECL_UNUSED_MEMBER #endif +QT_WARNING_PUSH +QT_WARNING_DISABLE_CLANG("-Wweak-vtables") // QTBUG-1044486 + class QTestEvent { public: @@ -36,13 +39,15 @@ public: #endif virtual QTestEvent *clone() const = 0; - virtual ~QTestEvent() {} + virtual ~QTestEvent() = default; // ### FIXME: weak vtable (QTBUG-104486) }; #ifdef QT_GUI_LIB class QTestKeyEvent: public QTestEvent { public: + ~QTestKeyEvent() override = default; // ### FIXME: weak vtable (QTBUG-104486) + inline QTestKeyEvent(QTest::KeyAction action, Qt::Key key, Qt::KeyboardModifiers modifiers, int delay) : _action(action), _delay(delay), _modifiers(modifiers), _ascii(0), _key(key) {} inline QTestKeyEvent(QTest::KeyAction action, char ascii, Qt::KeyboardModifiers modifiers, int delay) @@ -71,6 +76,8 @@ protected: class QTestKeyClicksEvent: public QTestEvent { public: + ~QTestKeyClicksEvent() override = default; // ### FIXME: weak vtables (QTBUG-104486) + inline QTestKeyClicksEvent(const QString &keys, Qt::KeyboardModifiers modifiers, int delay) : _keys(keys), _modifiers(modifiers), _delay(delay) {} inline QTestEvent *clone() const override { return new QTestKeyClicksEvent(*this); } @@ -91,6 +98,8 @@ private: class QTestMouseEvent: public QTestEvent { public: + ~QTestMouseEvent() override = default; // ### FIXME: weak vtables (QTBUG-104486) + inline QTestMouseEvent(QTest::MouseAction action, Qt::MouseButton button, Qt::KeyboardModifiers modifiers, QPoint position, int delay) : _action(action), _button(button), _modifiers(modifiers), _pos(position), _delay(delay) {} @@ -117,6 +126,8 @@ class QTestDelayEvent: public QTestEvent { public: inline QTestDelayEvent(int msecs): _delay(msecs) {} + ~QTestDelayEvent() override = default; // ### FIXME: weak vtables (QTBUG-104486) + inline QTestEvent *clone() const override { return new QTestDelayEvent(*this); } #ifdef QT_WIDGETS_LIB @@ -190,6 +201,8 @@ public: #undef QT_ONLY_WIDGETLIB_USES +QT_WARNING_POP // Clang -Wweak-vtables + QT_END_NAMESPACE Q_DECLARE_METATYPE(QTestEventList) |