diff options
author | Erik Verbruggen <erik.verbruggen@me.com> | 2013-11-11 16:13:00 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-11-12 14:40:22 +0100 |
commit | 2e8dfb5d5cd02cf2ca281f19bfb9966c97f35db7 (patch) | |
tree | c08f57ed339a1a39e747352c370e87c07aead6d4 /tests/auto/qml | |
parent | ff306b7829a6fcf1e1c28c3b0934ecebccd9e67d (diff) |
V4 IR: scan arguments when entering function scope in QML.
When doing IR generation for a function declaration in a QML object,
call through the helper methods to check for forbidden names, and most
importantly, also checks if the function has parameters. If the latter
is the case, they need to be added as a member for the current scope
in order to get IR generation correct.
Task-number: QTBUG-34493
Change-Id: I0ade15ee19e1b1ac8ee2f2d3fa186d1551800199
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Diffstat (limited to 'tests/auto/qml')
-rw-r--r-- | tests/auto/qml/qqmlecmascript/data/qtbug_34493.qml | 19 | ||||
-rw-r--r-- | tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp | 14 |
2 files changed, 33 insertions, 0 deletions
diff --git a/tests/auto/qml/qqmlecmascript/data/qtbug_34493.qml b/tests/auto/qml/qqmlecmascript/data/qtbug_34493.qml new file mode 100644 index 0000000000..7e7d350aae --- /dev/null +++ b/tests/auto/qml/qqmlecmascript/data/qtbug_34493.qml @@ -0,0 +1,19 @@ +import Qt.test 1.0 +import QtQuick 2.0 + +MyQmlObject { + function doIt() { + d.hello("World") + } + + property QtObject subobject: QtObject { + id: d + function hello(input) { + var temp = "Hello " + input; + var input = temp + "!"; + prop = input + } + } + + property string prop +} diff --git a/tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp b/tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp index 478611546e..defa708de5 100644 --- a/tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp +++ b/tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp @@ -309,6 +309,7 @@ private slots: void qtbug_32801(); void thisObject(); void qtbug_33754(); + void qtbug_34493(); private: // static void propertyVarWeakRefCallback(v8::Persistent<v8::Value> object, void* parameter); @@ -7330,6 +7331,19 @@ void tst_qqmlecmascript::qtbug_33754() QVERIFY(obj != 0); } +void tst_qqmlecmascript::qtbug_34493() +{ + QQmlComponent component(&engine, testFileUrl("qtbug_34493.qml")); + + QScopedPointer<QObject> obj(component.create()); + if (component.errors().size()) + qDebug() << component.errors(); + QVERIFY(component.errors().isEmpty()); + QVERIFY(obj != 0); + QVERIFY(QMetaObject::invokeMethod(obj.data(), "doIt")); + QTRY_VERIFY(obj->property("prop").toString() == QLatin1String("Hello World!")); +} + QTEST_MAIN(tst_qqmlecmascript) #include "tst_qqmlecmascript.moc" |