diff options
-rw-r--r-- | src/qml/compiler/qv4ssa.cpp | 3 | ||||
-rw-r--r-- | tests/auto/qml/qjsengine/tst_qjsengine.cpp | 12 |
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" |