diff options
author | Fabian Kosmale <fabian.kosmale@qt.io> | 2021-02-02 14:24:40 +0100 |
---|---|---|
committer | Fabian Kosmale <fabian.kosmale@qt.io> | 2021-02-03 08:49:50 +0100 |
commit | b322a971f06823a4356f2b3aa331501aa4d0dc7f (patch) | |
tree | 4fc44845bb45dec354623d24f7bb895f488c8404 /tests/auto | |
parent | 1b93a1d86549347566e1a7645c0501e5c9f6aa0a (diff) |
QQmlIRLoader: Actually load RequiredPropertyExtraData
If a QML component wants to mark properties of its "parent" component as
required, it can do so via
required propertyName
The information about those properties is stored in a
RequiredPropertyExtraData data structure. This structure is already
serialized to disk in the QQmlIRWriter. However, we neglected to restore
it so far in the loader.
Fixes: QTBUG-90538
Pick-to: 5.15 6.0
Change-Id: I789daff9bc881e4f35c942c77f5116b5284de81b
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Diffstat (limited to 'tests/auto')
-rw-r--r-- | tests/auto/qml/qmlcachegen/data/posthocrequired.qml | 5 | ||||
-rw-r--r-- | tests/auto/qml/qmlcachegen/tst_qmlcachegen.cpp | 12 |
2 files changed, 17 insertions, 0 deletions
diff --git a/tests/auto/qml/qmlcachegen/data/posthocrequired.qml b/tests/auto/qml/qmlcachegen/data/posthocrequired.qml new file mode 100644 index 0000000000..3b32d9fe8f --- /dev/null +++ b/tests/auto/qml/qmlcachegen/data/posthocrequired.qml @@ -0,0 +1,5 @@ +import QtQuick 2.15 + +Item { + required x +} diff --git a/tests/auto/qml/qmlcachegen/tst_qmlcachegen.cpp b/tests/auto/qml/qmlcachegen/tst_qmlcachegen.cpp index bc6451dac0..b999b5b9d1 100644 --- a/tests/auto/qml/qmlcachegen/tst_qmlcachegen.cpp +++ b/tests/auto/qml/qmlcachegen/tst_qmlcachegen.cpp @@ -77,6 +77,7 @@ private slots: void parameterAdjustment(); void inlineComponent(); + void posthocRequired(); }; // A wrapper around QQmlComponent to ensure the temporary reference counts @@ -704,6 +705,17 @@ void tst_qmlcachegen::inlineComponent() QVERIFY(!obj.isNull()); } +void tst_qmlcachegen::posthocRequired() +{ + bool ok = generateCache(testFile("posthocrequired.qml")); + QVERIFY(ok); + QQmlEngine engine; + CleanlyLoadingComponent component(&engine, testFileUrl("posthocrequired.qml")); + QScopedPointer<QObject> obj(component.create()); + QVERIFY(obj.isNull() && component.isError()); + QVERIFY(component.errorString().contains(QStringLiteral("Required property x was not initialized"))); +} + QTEST_GUILESS_MAIN(tst_qmlcachegen) #include "tst_qmlcachegen.moc" |