aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/qml/qmlcppcodegen/tst_qmlcppcodegen.cpp
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@qt.io>2022-02-17 17:46:33 +0100
committerUlf Hermann <ulf.hermann@qt.io>2022-02-18 12:13:47 +0100
commit69fefd94e8b0ec2aa379d0b75ccaa2c58e3f0933 (patch)
tree39647db4ed1d3414d34784b69bf3a0013cc498c1 /tests/auto/qml/qmlcppcodegen/tst_qmlcppcodegen.cpp
parent795d7dafe5be5cd48aa8225a1343285b3aca2be7 (diff)
QmlCompiler: Do not crash on attempts to lookup a function in the scope
Rather, reject the code and let the engine handle it. Pick-to: 6.2 6.3 Fixes: QTBUG-100980 Change-Id: Ibcd1249ba3550b40121622752b4ca22d1df3ed2a Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Jarkko Koivikko <jarkko.koivikko@code-q.fi>
Diffstat (limited to 'tests/auto/qml/qmlcppcodegen/tst_qmlcppcodegen.cpp')
-rw-r--r--tests/auto/qml/qmlcppcodegen/tst_qmlcppcodegen.cpp17
1 files changed, 17 insertions, 0 deletions
diff --git a/tests/auto/qml/qmlcppcodegen/tst_qmlcppcodegen.cpp b/tests/auto/qml/qmlcppcodegen/tst_qmlcppcodegen.cpp
index 1863b92c64..0c69294876 100644
--- a/tests/auto/qml/qmlcppcodegen/tst_qmlcppcodegen.cpp
+++ b/tests/auto/qml/qmlcppcodegen/tst_qmlcppcodegen.cpp
@@ -119,6 +119,7 @@ private slots:
void notEqualsInt();
void infinities();
void blockComments();
+ void functionLookup();
};
void tst_QmlCppCodegen::simpleBinding()
@@ -1787,6 +1788,22 @@ void tst_QmlCppCodegen::blockComments()
QCOMPARE(o->property("implicitHeight").toDouble(), 8.0);
}
+void tst_QmlCppCodegen::functionLookup()
+{
+ QQmlEngine engine;
+ QQmlComponent c(&engine, QUrl(u"qrc:/TestTypes/functionLookup.qml"_qs));
+ QVERIFY2(c.isReady(), qPrintable(c.errorString()));
+ QScopedPointer<QObject> o(c.create());
+ QVERIFY(o);
+ const QVariant foo = o->property("bar");
+ QCOMPARE(foo.metaType(), QMetaType::fromType<QJSValue>());
+ const QJSManagedValue method(engine.toScriptValue(foo), &engine);
+ QVERIFY(method.isFunction());
+ const QJSValue result = method.call();
+ QVERIFY(result.isString());
+ QCOMPARE(result.toString(), QStringLiteral("a99"));
+}
+
void tst_QmlCppCodegen::runInterpreted()
{
if (qEnvironmentVariableIsSet("QV4_FORCE_INTERPRETER"))