diff --git a/src/corelib/text/qlocale.cpp b/src/corelib/text/qlocale.cpp index e7fa6891af3..ef1c9fe5a9a 100644 --- a/src/corelib/text/qlocale.cpp +++ b/src/corelib/text/qlocale.cpp @@ -5437,10 +5437,12 @@ QString QLocale::nativeCountryName() const QDebug operator<<(QDebug dbg, const QLocale &l) { QDebugStateSaver saver(dbg); + const bool isSys = l == QLocale::system(); dbg.nospace().noquote() - << "QLocale(" << QLocale::languageToString(l.language()) - << ", " << QLocale::scriptToString(l.script()) - << ", " << QLocale::territoryToString(l.territory()) << ')'; + << (isSys ? "QLocale::system()/* " : "QLocale(") + << QLocale::languageToString(l.language()) << ", " + << QLocale::scriptToString(l.script()) << ", " + << QLocale::territoryToString(l.territory()) << (isSys ? " */" : ")"); return dbg; } #endif diff --git a/tests/auto/corelib/text/qlocale/tst_qlocale.cpp b/tests/auto/corelib/text/qlocale/tst_qlocale.cpp index 2302cda4830..05ecab5ba3b 100644 --- a/tests/auto/corelib/text/qlocale/tst_qlocale.cpp +++ b/tests/auto/corelib/text/qlocale/tst_qlocale.cpp @@ -178,6 +178,7 @@ private slots: void unixLocaleName(); void testNames_data(); void testNames(); + void debugOutput(); private: QString m_decimal, m_thousand, m_sdate, m_ldate, m_time; QString m_sysapp; @@ -3410,6 +3411,34 @@ void tst_QLocale::testNames() } } +void tst_QLocale::debugOutput() +{ + // Test operator<<(QDebug, const QLocale &) works as intended: + QTest::failOnWarning(); + { + const QLocale en(QLocale::English, QLocale::LatinScript, QLocale::UnitedStates); + QTest::ignoreMessage(QtMsgType::QtWarningMsg, + "QLocale(English, Latin, United States)"); + qWarning() << en; + } + { + const auto params = [](const QLocale &loc) { + return (QLocale::languageToString(loc.language()) + + u", " + QLocale::scriptToString(loc.script()) + + u", " + QLocale::territoryToString(loc.territory())).toLatin1(); + }; + const QLocale sys = QLocale::system(); + QTest::ignoreMessage(QtMsgType::QtWarningMsg, + ("QLocale::system()/* " + params(sys) + " */").constData()); + // QTBUG-133922: system and its CLDR counterpart should differ. + qWarning() << sys; + const QLocale match(sys.language(), sys.script(), sys.territory()); + QTest::ignoreMessage(QtMsgType::QtWarningMsg, + ("QLocale(" + params(match) + ')').constData()); + qWarning() << match; + } +} + void tst_QLocale::dayName_data() { QTest::addColumn("locale_name");