qt6-bb10/tests/auto/corelib
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
..
animation Another round of replacing 0 with nullptr 2020-10-07 23:02:47 +02:00
global Add {add,sub,mul}_overflow detection when one operand is a constant 2020-09-29 14:55:48 -07:00
io qDebug: Avoid implicit QVariant conversion 2020-10-13 08:06:18 +02:00
itemmodels Another round of replacing 0 with nullptr 2020-10-07 23:02:47 +02:00
kernel Handle notifier list modification during iteration 2020-10-12 13:01:29 +02:00
mimetypes CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
plugin CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
serialization Another round of replacing 0 with nullptr 2020-10-07 23:02:47 +02:00
text Clean up tst_QLocale::testNames(), give better message on failure 2020-10-09 14:40:37 +02:00
thread Temporarily disable QFuture::takeResult() method 2020-10-12 13:51:34 +02:00
time Check validity before adding to a QDateTime 2020-10-09 01:11:20 +02:00
tools Improve QRectF::toRect() 2020-10-12 13:00:43 +02:00
.prev_CMakeLists.txt Move QStateMachine from QtCore to QtScxml 2020-08-24 20:10:25 +02:00
CMakeLists.txt Move QStateMachine from QtCore to QtScxml 2020-08-24 20:10:25 +02:00
corelib.pro Move QStateMachine from QtCore to QtScxml 2020-08-24 20:10:25 +02:00