diff options
-rw-r--r-- | src/qml/qml/qqmlirloader.cpp | 1 | ||||
-rw-r--r-- | tests/auto/qml/qmlcachegen/data/inlineComponentWithId.qml | 10 | ||||
-rw-r--r-- | tests/auto/qml/qmlcachegen/tst_qmlcachegen.cpp | 14 |
3 files changed, 25 insertions, 0 deletions
diff --git a/src/qml/qml/qqmlirloader.cpp b/src/qml/qml/qqmlirloader.cpp index a0ae923bac..fc1a3f9d91 100644 --- a/src/qml/qml/qqmlirloader.cpp +++ b/src/qml/qml/qqmlirloader.cpp @@ -95,6 +95,7 @@ QmlIR::Object *QQmlIRLoader::loadObject(const QV4::CompiledData::Object *seriali object->indexOfDefaultPropertyOrAlias = serializedObject->indexOfDefaultPropertyOrAlias; object->defaultPropertyIsAlias = serializedObject->defaultPropertyIsAlias; + object->isInlineComponent = serializedObject->flags & QV4::CompiledData::Object::IsInlineComponentRoot; object->flags = serializedObject->flags; object->id = serializedObject->id; object->location = serializedObject->location; diff --git a/tests/auto/qml/qmlcachegen/data/inlineComponentWithId.qml b/tests/auto/qml/qmlcachegen/data/inlineComponentWithId.qml new file mode 100644 index 0000000000..ef9a157e5e --- /dev/null +++ b/tests/auto/qml/qmlcachegen/data/inlineComponentWithId.qml @@ -0,0 +1,10 @@ +import QtQuick 2.15 + +Item { + component Test: Item { + id: test + property int t: 42 + Component.onCompleted: console.info(test.t) + } + Test {} +} diff --git a/tests/auto/qml/qmlcachegen/tst_qmlcachegen.cpp b/tests/auto/qml/qmlcachegen/tst_qmlcachegen.cpp index 652942b243..283aef9317 100644 --- a/tests/auto/qml/qmlcachegen/tst_qmlcachegen.cpp +++ b/tests/auto/qml/qmlcachegen/tst_qmlcachegen.cpp @@ -76,6 +76,7 @@ private slots: void reproducibleCache(); void parameterAdjustment(); + void inlineComponent(); }; // A wrapper around QQmlComponent to ensure the temporary reference counts @@ -129,6 +130,7 @@ void tst_qmlcachegen::initTestCase() if (!cacheDir.isEmpty()) //QDir(cacheDir).removeRecursively(); qDebug() << cacheDir; + QQmlDataTest::initTestCase(); } void tst_qmlcachegen::loadGeneratedFile() @@ -690,6 +692,18 @@ void tst_qmlcachegen::parameterAdjustment() QVERIFY(!obj.isNull()); // Doesn't crash } + +void tst_qmlcachegen::inlineComponent() +{ + bool ok = generateCache(testFile("inlineComponentWithId.qml")); + QVERIFY(ok); + QQmlEngine engine; + CleanlyLoadingComponent component(&engine, testFileUrl("inlineComponentWithId.qml")); + QTest::ignoreMessage(QtMsgType::QtInfoMsg, "42"); + QScopedPointer<QObject> obj(component.create()); + QVERIFY(!obj.isNull()); +} + QTEST_GUILESS_MAIN(tst_qmlcachegen) #include "tst_qmlcachegen.moc" |