From 7847e6bc02552fa7fc7f518e5cb3336f667b5a6d Mon Sep 17 00:00:00 2001 From: Giuseppe D'Angelo Date: Tue, 29 Jan 2019 12:09:22 +0100 Subject: [PATCH] Enable deprecation warnings by default With Qt 6 in sight, people need to start moving away from their deprecated APIs, as we want to remove them all in 6.0. We are marking deprecated APIs with deprecation attributes, but by default we're disabling deprecation warnings, making them an opt-in by the user. We need to do the opposite: make deprecation warnings enabled by default, and have an opt-out define. [ChangeLog][QtCore][Important Behavior Changes] Qt now enables by default warnings when using APIs marked as deprecated. It is possible to disable such warnings by defining the QT_NO_DEPRECATED_WARNINGS macro. The old QT_DEPRECATED_WARNINGS macro which was used to enable this warning now has no effect (warnings are automatically enabled). Task-number: QTBUG-73048 Change-Id: Ie2b024fd667eb876b6ac9054cbbbc5a455cb9d5c Reviewed-by: Kai Koehne Reviewed-by: Lars Knoll Reviewed-by: Thiago Macieira --- qmake/generators/projectgenerator.cpp | 10 +++------- src/corelib/global/qglobal.cpp | 26 +++++++++++++++++++------- src/corelib/global/qglobal.h | 2 +- 3 files changed, 23 insertions(+), 15 deletions(-) diff --git a/qmake/generators/projectgenerator.cpp b/qmake/generators/projectgenerator.cpp index f45a90b851..ef34955eb1 100644 --- a/qmake/generators/projectgenerator.cpp +++ b/qmake/generators/projectgenerator.cpp @@ -345,14 +345,10 @@ ProjectGenerator::writeMakefile(QTextStream &t) << getWritableVar("CONFIG_REMOVE", false) << getWritableVar("INCLUDEPATH") << endl; - t << "# The following define makes your compiler warn you if you use any\n" - "# feature of Qt which has been marked as deprecated (the exact warnings\n" - "# depend on your compiler). Please consult the documentation of the\n" - "# deprecated API in order to know how to port your code away from it.\n" - "DEFINES += QT_DEPRECATED_WARNINGS\n" - "\n" - "# You can also make your code fail to compile if you use deprecated APIs.\n" + t << "# You can make your code fail to compile if you use deprecated APIs.\n" "# In order to do so, uncomment the following line.\n" + "# Please consult the documentation of the deprecated API in order to know\n" + "# how to port your code away from it.\n" "# You can also select to disable deprecated APIs only up to a certain version of Qt.\n" "#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0\n\n"; diff --git a/src/corelib/global/qglobal.cpp b/src/corelib/global/qglobal.cpp index 3f0b78ec55..7879109930 100644 --- a/src/corelib/global/qglobal.cpp +++ b/src/corelib/global/qglobal.cpp @@ -1979,11 +1979,11 @@ bool qSharedBuild() Q_DECL_NOTHROW a specified version of Qt or any earlier version. The default version number is 5.0, meaning that functions deprecated in or before Qt 5.0 will not be included. - Examples: - When using a future release of Qt 5, set QT_DISABLE_DEPRECATED_BEFORE=0x050100 to - disable functions deprecated in Qt 5.1 and earlier. In any release, set - QT_DISABLE_DEPRECATED_BEFORE=0x000000 to enable any functions, including the ones - deprecated in Qt 5.0 + For instance, when using a future release of Qt 5, set + \c{QT_DISABLE_DEPRECATED_BEFORE=0x050100} to disable functions deprecated in + Qt 5.1 and earlier. In any release, set + \c{QT_DISABLE_DEPRECATED_BEFORE=0x000000} to enable all functions, including + the ones deprecated in Qt 5.0. \sa QT_DEPRECATED_WARNINGS */ @@ -1993,12 +1993,24 @@ bool qSharedBuild() Q_DECL_NOTHROW \macro QT_DEPRECATED_WARNINGS \relates - If this macro is defined, the compiler will generate warnings if API declared as + Since Qt 5.13, this macro has no effect. In Qt 5.12 and before, if this macro + is defined, the compiler will generate warnings if any API declared as deprecated by Qt is used. - \sa QT_DISABLE_DEPRECATED_BEFORE + \sa QT_DISABLE_DEPRECATED_BEFORE, QT_NO_DEPRECATED_WARNINGS */ +/*! + \macro QT_NO_DEPRECATED_WARNINGS + \relates + \since 5.13 + + This macro can be used to suppress deprecation warnings that would otherwise + be generated when using deprecated APIs. + + \sa QT_DISABLE_DEPRECATED_BEFORE +*/ + #if defined(QT_BUILD_QMAKE) // needed to bootstrap qmake static const unsigned int qt_one = 1; diff --git a/src/corelib/global/qglobal.h b/src/corelib/global/qglobal.h index 1e4ccae65b..223ebbcabe 100644 --- a/src/corelib/global/qglobal.h +++ b/src/corelib/global/qglobal.h @@ -287,7 +287,7 @@ typedef double qreal; # undef QT_DEPRECATED_X # undef QT_DEPRECATED_VARIABLE # undef QT_DEPRECATED_CONSTRUCTOR -#elif defined(QT_DEPRECATED_WARNINGS) +#elif !defined(QT_NO_DEPRECATED_WARNINGS) # undef QT_DEPRECATED # define QT_DEPRECATED Q_DECL_DEPRECATED # undef QT_DEPRECATED_X