qt5base-lts/tests/auto/corelib/io
Fabian Kosmale b83225fcc3 qDebug: Avoid implicit QVariant conversion
This commit restricts operator<<(QDebug lhs, QVariant rhs) to only work
if rhs is actually of type QVariant (instead of any type convertible to
QVariant). This is especially important as
a) we check in QMetaType whether (slightly simplified) QDebug{} <<
   std::declval<T>() is valid, and if so, register a function which
   simply uses the operator.
b) In QVariant, we ask the metatype system for the contained types
   registered debug function and then use it.
If a type now does not have its own operator<< for QDebug, but is
implicitly convertible to QVariant containing itself, this would lead to
an infinite recursion, when trying to use qDebug with that type. The
registered function in a) would just convert the type to QVariant, and
then ask the QVariant to print itself.
Disallowing implicit conversions in qDebug in general was considered
(i.e. adding template<typename T> operator<<(T) = delete in QDebug ),
but discarded as it breaks too much code relying on conversions.

Fixes: QTBUG-87122
Change-Id: Ib709297670cbc6cc307efd0dfd8e5b0279df9414
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-10-13 08:06:18 +02:00
..
largefile CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
qabstractfileengine CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
qbuffer CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
qdataurl CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
qdebug qDebug: Avoid implicit QVariant conversion 2020-10-13 08:06:18 +02:00
qdir CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
qdiriterator CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
qfile CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
qfileinfo CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
qfileselector CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
qfilesystementry CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
qfilesystemmetadata CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
qfilesystemwatcher Another round of replacing 0 with nullptr 2020-10-07 23:02:47 +02:00
qiodevice CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
qipaddress CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
qlockfile Properly deprecate QProcess::pid 2020-10-01 04:55:47 +02:00
qloggingcategory Another round of replacing 0 with nullptr 2020-10-07 23:02:47 +02:00
qloggingregistry CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
qnodebug CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
qprocess Properly deprecate QProcess::pid 2020-10-01 04:55:47 +02:00
qprocess-noapplication CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
qprocessenvironment CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
qresourceengine Purge QResource of some deprecated API 2020-08-07 17:44:13 +02:00
qsavefile CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
qsettings CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
qstandardpaths CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
qstorageinfo CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
qtemporarydir CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
qtemporaryfile CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
qurl QUrl::fromLocalFile: accept invalid hostnames 2020-10-05 21:31:18 -07:00
qurlinternal CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
qurlquery CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
.prev_CMakeLists.txt Remove winrt 2020-06-06 20:25:49 +02:00
CMakeLists.txt CMake: Skip building tst_qprocess test when cross compiling 2020-06-26 14:54:32 +02:00
io.pro Remove winrt 2020-06-06 20:25:49 +02:00