aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/qml/qml/qqmlirloader.cpp1
-rw-r--r--tests/auto/qml/qmlcachegen/data/inlineComponentWithId.qml10
-rw-r--r--tests/auto/qml/qmlcachegen/tst_qmlcachegen.cpp14
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"