QString: put quotes around the test string in arg() qWarning
So it's less ambiguous in case there's a comma in either the pattern string or the replacement one. It will still be ambiguous for strings with quotes themselves, but escaping requires content not present in the bootstrap library. Drive-by test that unsigned and floating point also complain. Pick-to: 6.9 Change-Id: Ia8ca184a7d54b240d653fffd631dbcb7f9e1c97d Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
This commit is contained in:
parent
ff484b3111
commit
3bc8ebc12f
@ -8765,7 +8765,7 @@ QString QString::arg_impl(QAnyStringView a, int fieldWidth, QChar fillChar) cons
|
||||
ArgEscapeData d = findArgEscapes(*this);
|
||||
|
||||
if (Q_UNLIKELY(d.occurrences == 0)) {
|
||||
qWarning("QString::arg: Argument missing: %ls, %ls", qUtf16Printable(*this),
|
||||
qWarning("QString::arg: Argument missing: \"%ls\", \"%ls\"", qUtf16Printable(*this),
|
||||
qUtf16Printable(a.toString()));
|
||||
return *this;
|
||||
}
|
||||
@ -8905,7 +8905,7 @@ QString QString::arg_impl(double a, int fieldWidth, char format, int precision,
|
||||
ArgEscapeData d = findArgEscapes(*this);
|
||||
|
||||
if (d.occurrences == 0) {
|
||||
qWarning("QString::arg: Argument missing: %s, %g", toLocal8Bit().data(), a);
|
||||
qWarning("QString::arg: Argument missing: \"%ls\", %g", qUtf16Printable(*this), a);
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
@ -6671,7 +6671,7 @@ void tst_QString::arg()
|
||||
QTest::ignoreMessage(QtWarningMsg, nonAsciiArgWarning);
|
||||
QCOMPARE( QString("%2²%1").arg("a").arg("b"), QString("ba") );
|
||||
#else
|
||||
QTest::ignoreMessage(QtWarningMsg, "QString::arg: Argument missing: %¹, foo");
|
||||
QTest::ignoreMessage(QtWarningMsg, "QString::arg: Argument missing: \"%¹\", \"foo\"");
|
||||
QCOMPARE(u"%¹"_s.arg(foo), u"%¹");
|
||||
QCOMPARE(u"%¹%1"_s.arg(foo), u"%¹foo");
|
||||
QCOMPARE(u"%1²"_s.arg(u"E=mc"_s), u"E=mc²");
|
||||
@ -6725,11 +6725,15 @@ void tst_QString::arg()
|
||||
#endif
|
||||
QCOMPARE(s4.arg(u8'a'), QLatin1String("[a]"));
|
||||
|
||||
QTest::ignoreMessage(QtWarningMsg, "QString::arg: Argument missing: , foo");
|
||||
QTest::ignoreMessage(QtWarningMsg, "QString::arg: Argument missing: \"\", \"foo\"");
|
||||
QCOMPARE(QString().arg(foo), QString());
|
||||
QTest::ignoreMessage(QtWarningMsg, "QString::arg: Argument missing: \"\", 0");
|
||||
QCOMPARE( QString().arg(0), QString() );
|
||||
QTest::ignoreMessage(QtWarningMsg, "QString::arg: Argument missing: \"\", 0");
|
||||
QCOMPARE( QString().arg(0U), QString() );
|
||||
QTest::ignoreMessage(QtWarningMsg, "QString::arg: Argument missing: \"\", 0");
|
||||
QCOMPARE( QString().arg(0.0), QString() );
|
||||
QTest::ignoreMessage(QtWarningMsg, "QString::arg: Argument missing: \"\", 0");
|
||||
QCOMPARE(QString(u""_s).arg(0), u""_s);
|
||||
QTest::ignoreMessage(QtWarningMsg, "QString::arg: Argument missing: \" \", 0");
|
||||
QCOMPARE(QString(u" "_s).arg(0), " "_L1);
|
||||
|
Loading…
x
Reference in New Issue
Block a user