aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/qml/qmlcppcodegen/tst_qmlcppcodegen.cpp
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@qt.io>2023-10-24 16:30:28 +0200
committerUlf Hermann <ulf.hermann@qt.io>2023-10-31 12:54:10 +0200
commitc662ae7cbf49bdfc9fd96d34301a86fe96550773 (patch)
tree7a17427562340afc17b60ccc075a55e8828ff620 /tests/auto/qml/qmlcppcodegen/tst_qmlcppcodegen.cpp
parentb96251eb1c371d388e956d3fddf33c5a34e9be6b (diff)
QmlCompiler: Generate jump code also when skipping an instruction
The next instruction may still need the type conversions even if we don't need to generate any code for the current instruction. Also, generate trace info for generate_DeadTemporalZoneCheck so that we can recognize it in the generated code. Amends commit 2c410317b6077fdcfb2cdeb4b730c1b0c544147e. Pick-to: 6.6 6.5 Fixes: QTBUG-118514 Change-Id: I70ad3691486176de2177e9d5f538f7c99d121bfa Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io> Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
Diffstat (limited to 'tests/auto/qml/qmlcppcodegen/tst_qmlcppcodegen.cpp')
-rw-r--r--tests/auto/qml/qmlcppcodegen/tst_qmlcppcodegen.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/tests/auto/qml/qmlcppcodegen/tst_qmlcppcodegen.cpp b/tests/auto/qml/qmlcppcodegen/tst_qmlcppcodegen.cpp
index 4854108b86..9b1987ef13 100644
--- a/tests/auto/qml/qmlcppcodegen/tst_qmlcppcodegen.cpp
+++ b/tests/auto/qml/qmlcppcodegen/tst_qmlcppcodegen.cpp
@@ -66,6 +66,7 @@ private slots:
void construct();
void contextParam();
void conversionDecrement();
+ void conversionInDeadCode();
void conversions();
void convertToOriginalReadAcumulatorForUnaryOperators();
void cppValueTypeList();
@@ -1104,6 +1105,25 @@ void tst_QmlCppCodegen::conversionDecrement()
QCOMPARE(o->property("currentPageIndex").toInt(), 3);
}
+void tst_QmlCppCodegen::conversionInDeadCode()
+{
+ QQmlEngine engine;
+ QQmlComponent c(&engine, QUrl(u"qrc:/qt/qml/TestTypes/conversionInDeadCode.qml"_s));
+
+ QVERIFY2(c.isReady(), qPrintable(c.errorString()));
+
+ QScopedPointer<QObject> o(c.create());
+ QVERIFY(!o.isNull());
+
+ QCOMPARE(o->property("a").toInt(), -4);
+ QCOMPARE(o->property("b").toInt(), 12);
+ QCOMPARE(o->property("c").toInt(), 10);
+ QCOMPARE(o->property("d").toInt(), 10);
+ QCOMPARE(o->property("e").toInt(), 10);
+ QCOMPARE(o->property("f").toInt(), 20);
+ QCOMPARE(o->property("g").toInt(), 33);
+}
+
void tst_QmlCppCodegen::conversions()
{
QQmlEngine engine;