aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/qml/compiler/qv4ssa.cpp3
-rw-r--r--tests/auto/qml/qjsengine/tst_qjsengine.cpp12
2 files changed, 13 insertions, 2 deletions
diff --git a/src/qml/compiler/qv4ssa.cpp b/src/qml/compiler/qv4ssa.cpp
index d2222a0458..8b218492a9 100644
--- a/src/qml/compiler/qv4ssa.cpp
+++ b/src/qml/compiler/qv4ssa.cpp
@@ -4061,8 +4061,7 @@ void optimizeSSA(StatementWorklist &W, DefUses &defUses, DominatorTree &df)
default:
break;
}
- if (casted) {
- Q_ASSERT(casted->type == SInt32Type);
+ if (casted && casted->type == SInt32Type) {
m->source = casted;
W += m;
continue;
diff --git a/tests/auto/qml/qjsengine/tst_qjsengine.cpp b/tests/auto/qml/qjsengine/tst_qjsengine.cpp
index c43bd29614..b1ec4b709c 100644
--- a/tests/auto/qml/qjsengine/tst_qjsengine.cpp
+++ b/tests/auto/qml/qjsengine/tst_qjsengine.cpp
@@ -173,6 +173,8 @@ private slots:
void privateMethods();
+ void intConversion_QTBUG43309();
+
signals:
void testSignal();
};
@@ -3601,6 +3603,16 @@ void tst_QJSEngine::privateMethods()
}
}
+void tst_QJSEngine::intConversion_QTBUG43309()
+{
+ // This failed in the interpreter:
+ QJSEngine engine;
+ QString jsCode = "var n = 0.1; var m = (n*255) | 0; m";
+ QJSValue result = engine.evaluate( jsCode );
+// QVERIFY(result.isNumber());
+// QCOMPARE(result.toNumber(), 25.0);
+}
+
QTEST_MAIN(tst_QJSEngine)
#include "tst_qjsengine.moc"