From f57fd83f7dff66fe54098e0d956d03070d9e16e6 Mon Sep 17 00:00:00 2001 From: Kevin Funk Date: Wed, 9 Feb 2022 21:59:29 +0100 Subject: [PATCH] Fix -Wsuggest-override warnings from Clang 11+ Before this patch, Clang versions greater than 11.0.0 emitted -Wsuggest-override warnings whenever the Q_OBJECT macro was used. Excerpt from compiling GammaRay against Qt 6, using Clang 13.0.0: ``` .../qtbase/src/corelib/io/qfile.h:96:5: warning: 'qt_metacall' overrides a member function but is not marked 'override' [-Winconsistent-missing-override] Q_OBJECT ^ .../qt5/qtbase/src/corelib/kernel/qtmetamacros.h:166:17: note: expanded from macro 'Q_OBJECT' virtual int qt_metacall(QMetaObject::Call, int, void **); \ ^ .../qt5/qtbase/src/corelib/io/qfiledevice.h:54:5: note: overridden virtual function is here Q_OBJECT ^ .../qt5/qtbase/src/corelib/kernel/qtmetamacros.h:166:17: note: expanded from macro 'Q_OBJECT' virtual int qt_metacall(QMetaObject::Call, int, void **); \ ^ ``` This was also discussed on the QtCreator mailing list: https://www.mail-archive.com/qt-creator@qt-project.org/msg08500.html Pick-to: 6.2 6.3 Change-Id: I149782472ce8a2e30ed8062ada460c39926f1613 Reviewed-by: Thiago Macieira --- src/corelib/kernel/qtmetamacros.h | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/corelib/kernel/qtmetamacros.h b/src/corelib/kernel/qtmetamacros.h index fb4dfc5b0de..89f51e97b6f 100644 --- a/src/corelib/kernel/qtmetamacros.h +++ b/src/corelib/kernel/qtmetamacros.h @@ -136,8 +136,12 @@ QT_BEGIN_NAMESPACE # define Q_DECL_HIDDEN_STATIC_METACALL Q_DECL_HIDDEN #endif -#if defined(Q_CC_CLANG) && Q_CC_CLANG >= 306 -# define Q_OBJECT_NO_OVERRIDE_WARNING QT_WARNING_DISABLE_CLANG("-Winconsistent-missing-override") +#if defined(Q_CC_CLANG) +# if Q_CC_CLANG >= 1100 +# define Q_OBJECT_NO_OVERRIDE_WARNING QT_WARNING_DISABLE_CLANG("-Winconsistent-missing-override") QT_WARNING_DISABLE_CLANG("-Wsuggest-override") +# elif Q_CC_CLANG >= 306 +# define Q_OBJECT_NO_OVERRIDE_WARNING QT_WARNING_DISABLE_CLANG("-Winconsistent-missing-override") +# endif #elif defined(Q_CC_GNU) && !defined(Q_CC_INTEL) && Q_CC_GNU >= 501 # define Q_OBJECT_NO_OVERRIDE_WARNING QT_WARNING_DISABLE_GCC("-Wsuggest-override") #else