aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/qml/CMakeLists.txt33
-rw-r--r--src/qml/qml/qqmlmetamoduleregistration.cpp26
-rw-r--r--src/qml/qml/qqmltypeloader.cpp9
-rw-r--r--src/qmlmodels/CMakeLists.txt2
-rw-r--r--src/qmlworkerscript/CMakeLists.txt2
-rw-r--r--tests/auto/qml/qmlimportscanner/data/CompositeSingleton.json22
-rw-r--r--tests/auto/qml/qmlimportscanner/data/CompositeWithEnum.json20
-rw-r--r--tests/auto/qml/qmlimportscanner/data/CompositeWithinSingleton.json22
-rw-r--r--tests/auto/qml/qmlimportscanner/data/Drawer.qml.json20
-rw-r--r--tests/auto/qml/qmlimportscanner/data/Imports.json22
-rw-r--r--tests/auto/qml/qmlimportscanner/data/ListProperty.qml.json22
-rw-r--r--tests/auto/qml/qmlimportscanner/data/QTBUG-45916.js.json22
-rw-r--r--tests/auto/qml/qmlimportscanner/data/Simple.qml.json22
-rw-r--r--tests/auto/qml/qmlimportscanner/data/Singleton.json22
-rw-r--r--tests/auto/qml/qmlimportscanner/data/Things.json22
-rw-r--r--tests/auto/qml/qmlimportscanner/data/javascriptMethods.qml.json20
-rw-r--r--tests/auto/qml/qmlimportscanner/data/localImport.qml.json22
-rw-r--r--tests/auto/qml/qmlimportscanner/data/parentEnum.qml.json22
-rw-r--r--tests/auto/qml/qmlimportscanner/data/qmldirImportAndDepend.qml.json22
-rw-r--r--tests/auto/qml/qmlimportscanner/data/qtQmlOnly.qml.json20
-rw-r--r--tests/auto/qml/qmlimportscanner/data/rootPath.json22
-rw-r--r--tests/auto/qml/qqmlengine/tst_qqmlengine.cpp1
-rw-r--r--tests/auto/qml/qqmlmoduleplugin/imports/ModuleFromQrc/Foo.qml2
23 files changed, 320 insertions, 99 deletions
diff --git a/src/qml/CMakeLists.txt b/src/qml/CMakeLists.txt
index 24c18daef5..5781b03573 100644
--- a/src/qml/CMakeLists.txt
+++ b/src/qml/CMakeLists.txt
@@ -32,13 +32,12 @@ if(ANDROID)
endif()
qt_internal_add_qml_module(Qml
- URI "QtQml"
+ URI "QtQml.Base"
VERSION "${PROJECT_VERSION}"
DESIGNER_SUPPORTED
__QT_INTERNAL_SYSTEM_MODULE
PLUGIN_TARGET qmlplugin
CLASS_NAME QtQmlPlugin
- IMPORTS ${module_dynamic_qml_imports}
PLUGIN_TYPES qmltooling
SOURCES
../3rdparty/masm/assembler/ARM64Assembler.h
@@ -294,6 +293,7 @@ qt_internal_add_qml_module(Qml
qml/qqmllist.cpp qml/qqmllist.h qml/qqmllist_p.h
qml/qqmllistwrapper.cpp qml/qqmllistwrapper_p.h
qml/qqmlloggingcategory.cpp qml/qqmlloggingcategory_p.h
+ qml/qqmlmetamoduleregistration.cpp
qml/qqmlmetaobject.cpp qml/qqmlmetaobject_p.h
qml/qqmlmetatype.cpp qml/qqmlmetatype_p.h
qml/qqmlmetatypedata.cpp qml/qqmlmetatypedata_p.h
@@ -419,6 +419,35 @@ qt_internal_add_qml_module(Qml
GENERATE_PRIVATE_CPP_EXPORTS
)
+qt_internal_add_qml_module(QmlMeta
+ URI "QtQml"
+ VERSION "${PROJECT_VERSION}"
+ DESIGNER_SUPPORTED
+ CLASS_NAME QtQmlMetaPlugin
+ PLUGIN_TARGET QmlMeta
+
+ # Prevent type registration
+ NO_GENERATE_QMLTYPES
+
+ PAST_MAJOR_VERSIONS 2
+ IMPORTS
+ QtQml.Base/auto
+ ${module_dynamic_qml_imports}
+)
+
+# Add the QtQml qmldir to libQtQml, too.
+# Since we also provide the (bare bones) type registration in libQtQml,
+# this makes the complete module reside in libQtQml. There is no need to
+# load the QmlMeta plugin, then.
+# Se still provide the plugin so that static linking works.
+get_target_property(qtqml_out_dir QmlMeta QT_QML_MODULE_OUTPUT_DIRECTORY)
+qt_internal_add_resource(Qml "qmlMetaQmldir"
+ PREFIX
+ "/qt-project.org/imports/QtQml"
+ FILES
+ ${qtqml_out_dir}/qmldir
+)
+
# Linking to the static qml plugin should also automatically link to the worker script
# static plugin otherwise you get errors like
# module "QtQml.WorkerScript" plugin "workerscriptplugin" not found
diff --git a/src/qml/qml/qqmlmetamoduleregistration.cpp b/src/qml/qml/qqmlmetamoduleregistration.cpp
new file mode 100644
index 0000000000..280c7a7c8d
--- /dev/null
+++ b/src/qml/qml/qqmlmetamoduleregistration.cpp
@@ -0,0 +1,26 @@
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+#include <private/qtqmlglobal_p.h>
+#include <qqmlmoduleregistration.h>
+#include <qqml.h>
+
+QT_BEGIN_NAMESPACE
+
+// Provide the type registration for QtQml here, in libQtQml.so.
+// This way we get a completely functional QtQml module and don't have to
+// rely on the plugin to be loaded.
+// In CMakeLists.txt we've specified NO_GENERATE_QMLTYPES to prevent
+// the generation of an extra type registration file.
+Q_QML_PRIVATE_EXPORT void qml_register_types_QtQml()
+{
+ // ### Qt7: Handle version 6 like version 2.
+ qmlRegisterModule("QtQml", 2, 0);
+ qmlRegisterModule("QtQml", 2, 254);
+ qmlRegisterModule("QtQml", QT_VERSION_MAJOR, 0);
+ qmlRegisterModule("QtQml", QT_VERSION_MAJOR, QT_VERSION_MINOR);
+}
+
+static const QQmlModuleRegistration registration("QtQml", qml_register_types_QtQml);
+
+QT_END_NAMESPACE
diff --git a/src/qml/qml/qqmltypeloader.cpp b/src/qml/qml/qqmltypeloader.cpp
index 9636fc8739..ada670a155 100644
--- a/src/qml/qml/qqmltypeloader.cpp
+++ b/src/qml/qml/qqmltypeloader.cpp
@@ -647,18 +647,19 @@ bool QQmlTypeLoader::Blob::addLibraryImport(const QQmlTypeLoader::Blob::PendingI
return false;
}
- if (
+ // If there is a qmldir we cannot see, yet, then we have to wait.
+ // The qmldir might contain import directives.
+ if (qmldirResult != QQmlImportDatabase::QmldirInterceptedToRemote && (
// Major version of module already registered:
// We believe that the registration is complete.
QQmlMetaType::typeModule(import->uri, import->version)
// Otherwise, try to register further module types.
- || (qmldirResult != QQmlImportDatabase::QmldirInterceptedToRemote
- && QQmlMetaType::qmlRegisterModuleTypes(import->uri))
+ || QQmlMetaType::qmlRegisterModuleTypes(import->uri)
// Otherwise, there is no way to register any further types.
// Try with any module of that name.
- || QQmlMetaType::latestModuleVersion(import->uri).isValid()) {
+ || QQmlMetaType::latestModuleVersion(import->uri).isValid())) {
if (!m_importCache->addLibraryImport(
importDatabase, import->uri, import->qualifier, import->version,
diff --git a/src/qmlmodels/CMakeLists.txt b/src/qmlmodels/CMakeLists.txt
index 910bbe47de..b3875a8091 100644
--- a/src/qmlmodels/CMakeLists.txt
+++ b/src/qmlmodels/CMakeLists.txt
@@ -11,6 +11,8 @@ qt_internal_add_qml_module(QmlModels
DESIGNER_SUPPORTED
PLUGIN_TARGET modelsplugin
CLASS_NAME QtQmlModelsPlugin
+ DEPENDENCIES
+ QtQml.Base/auto
SOURCES
qqmlchangeset.cpp qqmlchangeset_p.h
qqmlmodelsmodule.cpp qqmlmodelsmodule_p.h
diff --git a/src/qmlworkerscript/CMakeLists.txt b/src/qmlworkerscript/CMakeLists.txt
index 5d6151112e..2bf6f205e2 100644
--- a/src/qmlworkerscript/CMakeLists.txt
+++ b/src/qmlworkerscript/CMakeLists.txt
@@ -11,6 +11,8 @@ qt_internal_add_qml_module(QmlWorkerScript
DESIGNER_SUPPORTED
PLUGIN_TARGET workerscriptplugin
CLASS_NAME QtQmlWorkerScriptPlugin
+ DEPENDENCIES
+ QtQml.Base/auto
SOURCES
qquickworkerscript.cpp qquickworkerscript_p.h
qtqmlworkerscriptglobal.h qtqmlworkerscriptglobal_p.h
diff --git a/tests/auto/qml/qmlimportscanner/data/CompositeSingleton.json b/tests/auto/qml/qmlimportscanner/data/CompositeSingleton.json
index 98fc52b292..a688511ed0 100644
--- a/tests/auto/qml/qmlimportscanner/data/CompositeSingleton.json
+++ b/tests/auto/qml/qmlimportscanner/data/CompositeSingleton.json
@@ -12,17 +12,27 @@
"pluginIsOptional": true,
"relativePath": "QtQuick",
"type": "module",
- "prefer":":/qt-project.org/imports/QtQuick/"
+ "prefer": ":/qt-project.org/imports/QtQuick/"
+ },
+ {
+ "classname": "QtQmlMetaPlugin",
+ "linkTarget": "Qt6::QmlMeta",
+ "name": "QtQml",
+ "plugin": "qmlmetaplugin",
+ "pluginIsOptional": true,
+ "relativePath": "QtQml",
+ "type": "module",
+ "prefer": ":/qt-project.org/imports/QtQml/"
},
{
"classname": "QtQmlPlugin",
"linkTarget": "Qt6::qmlplugin",
- "name": "QtQml",
+ "name": "QtQml.Base",
"plugin": "qmlplugin",
"pluginIsOptional": true,
- "relativePath": "QtQml",
+ "relativePath": "QtQml/Base",
"type": "module",
- "prefer":":/qt-project.org/imports/QtQml/"
+ "prefer": ":/qt-project.org/imports/QtQml/Base/"
},
{
"classname": "QtQmlModelsPlugin",
@@ -32,7 +42,7 @@
"pluginIsOptional": true,
"relativePath": "QtQml/Models",
"type": "module",
- "prefer":":/qt-project.org/imports/QtQml/Models/"
+ "prefer": ":/qt-project.org/imports/QtQml/Models/"
},
{
"classname": "QtQmlWorkerScriptPlugin",
@@ -42,6 +52,6 @@
"pluginIsOptional": true,
"relativePath": "QtQml/WorkerScript",
"type": "module",
- "prefer":":/qt-project.org/imports/QtQml/WorkerScript/"
+ "prefer": ":/qt-project.org/imports/QtQml/WorkerScript/"
}
]
diff --git a/tests/auto/qml/qmlimportscanner/data/CompositeWithEnum.json b/tests/auto/qml/qmlimportscanner/data/CompositeWithEnum.json
index 23d354e620..084e4354b3 100644
--- a/tests/auto/qml/qmlimportscanner/data/CompositeWithEnum.json
+++ b/tests/auto/qml/qmlimportscanner/data/CompositeWithEnum.json
@@ -5,14 +5,24 @@
"type": "module"
},
{
+ "classname": "QtQmlMetaPlugin",
+ "linkTarget": "Qt6::QmlMeta",
+ "name": "QtQml",
+ "plugin": "qmlmetaplugin",
+ "pluginIsOptional": true,
+ "relativePath": "QtQml",
+ "type": "module",
+ "prefer": ":/qt-project.org/imports/QtQml/"
+ },
+ {
"classname": "QtQmlPlugin",
"linkTarget": "Qt6::qmlplugin",
- "name": "QtQml",
+ "name": "QtQml.Base",
"plugin": "qmlplugin",
"pluginIsOptional": true,
- "relativePath": "QtQml",
+ "relativePath": "QtQml/Base",
"type": "module",
- "prefer":":/qt-project.org/imports/QtQml/"
+ "prefer": ":/qt-project.org/imports/QtQml/Base/"
},
{
"classname": "QtQmlModelsPlugin",
@@ -22,7 +32,7 @@
"pluginIsOptional": true,
"relativePath": "QtQml/Models",
"type": "module",
- "prefer":":/qt-project.org/imports/QtQml/Models/"
+ "prefer": ":/qt-project.org/imports/QtQml/Models/"
},
{
"classname": "QtQmlWorkerScriptPlugin",
@@ -32,6 +42,6 @@
"pluginIsOptional": true,
"relativePath": "QtQml/WorkerScript",
"type": "module",
- "prefer":":/qt-project.org/imports/QtQml/WorkerScript/"
+ "prefer": ":/qt-project.org/imports/QtQml/WorkerScript/"
}
]
diff --git a/tests/auto/qml/qmlimportscanner/data/CompositeWithinSingleton.json b/tests/auto/qml/qmlimportscanner/data/CompositeWithinSingleton.json
index 55653f5794..c50fe5ab51 100644
--- a/tests/auto/qml/qmlimportscanner/data/CompositeWithinSingleton.json
+++ b/tests/auto/qml/qmlimportscanner/data/CompositeWithinSingleton.json
@@ -12,17 +12,27 @@
"pluginIsOptional": true,
"relativePath": "QtQuick",
"type": "module",
- "prefer":":/qt-project.org/imports/QtQuick/"
+ "prefer": ":/qt-project.org/imports/QtQuick/"
+ },
+ {
+ "classname": "QtQmlMetaPlugin",
+ "linkTarget": "Qt6::QmlMeta",
+ "name": "QtQml",
+ "plugin": "qmlmetaplugin",
+ "pluginIsOptional": true,
+ "relativePath": "QtQml",
+ "type": "module",
+ "prefer": ":/qt-project.org/imports/QtQml/"
},
{
"classname": "QtQmlPlugin",
"linkTarget": "Qt6::qmlplugin",
- "name": "QtQml",
+ "name": "QtQml.Base",
"plugin": "qmlplugin",
"pluginIsOptional": true,
- "relativePath": "QtQml",
+ "relativePath": "QtQml/Base",
"type": "module",
- "prefer":":/qt-project.org/imports/QtQml/"
+ "prefer": ":/qt-project.org/imports/QtQml/Base/"
},
{
"classname": "QtQmlModelsPlugin",
@@ -32,7 +42,7 @@
"pluginIsOptional": true,
"relativePath": "QtQml/Models",
"type": "module",
- "prefer":":/qt-project.org/imports/QtQml/Models/"
+ "prefer": ":/qt-project.org/imports/QtQml/Models/"
},
{
"classname": "QtQmlWorkerScriptPlugin",
@@ -42,6 +52,6 @@
"pluginIsOptional": true,
"relativePath": "QtQml/WorkerScript",
"type": "module",
- "prefer":":/qt-project.org/imports/QtQml/WorkerScript/"
+ "prefer": ":/qt-project.org/imports/QtQml/WorkerScript/"
}
]
diff --git a/tests/auto/qml/qmlimportscanner/data/Drawer.qml.json b/tests/auto/qml/qmlimportscanner/data/Drawer.qml.json
index d8e972002d..447c664785 100644
--- a/tests/auto/qml/qmlimportscanner/data/Drawer.qml.json
+++ b/tests/auto/qml/qmlimportscanner/data/Drawer.qml.json
@@ -1,13 +1,23 @@
[
{
+ "classname": "QtQmlMetaPlugin",
+ "linkTarget": "Qt6::QmlMeta",
+ "name": "QtQml",
+ "plugin": "qmlmetaplugin",
+ "pluginIsOptional": true,
+ "relativePath": "QtQml",
+ "type": "module",
+ "prefer": ":/qt-project.org/imports/QtQml/"
+ },
+ {
"classname": "QtQmlPlugin",
"linkTarget": "Qt6::qmlplugin",
- "name": "QtQml",
+ "name": "QtQml.Base",
"plugin": "qmlplugin",
"pluginIsOptional": true,
- "relativePath": "QtQml",
+ "relativePath": "QtQml/Base",
"type": "module",
- "prefer":":/qt-project.org/imports/QtQml/"
+ "prefer": ":/qt-project.org/imports/QtQml/Base/"
},
{
"classname": "QtQmlModelsPlugin",
@@ -17,7 +27,7 @@
"pluginIsOptional": true,
"relativePath": "QtQml/Models",
"type": "module",
- "prefer":":/qt-project.org/imports/QtQml/Models/"
+ "prefer": ":/qt-project.org/imports/QtQml/Models/"
},
{
"classname": "QtQmlWorkerScriptPlugin",
@@ -27,6 +37,6 @@
"pluginIsOptional": true,
"relativePath": "QtQml/WorkerScript",
"type": "module",
- "prefer":":/qt-project.org/imports/QtQml/WorkerScript/"
+ "prefer": ":/qt-project.org/imports/QtQml/WorkerScript/"
}
]
diff --git a/tests/auto/qml/qmlimportscanner/data/Imports.json b/tests/auto/qml/qmlimportscanner/data/Imports.json
index 638519d689..5e23e7b1ad 100644
--- a/tests/auto/qml/qmlimportscanner/data/Imports.json
+++ b/tests/auto/qml/qmlimportscanner/data/Imports.json
@@ -12,17 +12,27 @@
"pluginIsOptional": true,
"relativePath": "QtQuick",
"type": "module",
- "prefer":":/qt-project.org/imports/QtQuick/"
+ "prefer": ":/qt-project.org/imports/QtQuick/"
+ },
+ {
+ "classname": "QtQmlMetaPlugin",
+ "linkTarget": "Qt6::QmlMeta",
+ "name": "QtQml",
+ "plugin": "qmlmetaplugin",
+ "pluginIsOptional": true,
+ "relativePath": "QtQml",
+ "type": "module",
+ "prefer": ":/qt-project.org/imports/QtQml/"
},
{
"classname": "QtQmlPlugin",
"linkTarget": "Qt6::qmlplugin",
- "name": "QtQml",
+ "name": "QtQml.Base",
"plugin": "qmlplugin",
"pluginIsOptional": true,
- "relativePath": "QtQml",
+ "relativePath": "QtQml/Base",
"type": "module",
- "prefer":":/qt-project.org/imports/QtQml/"
+ "prefer": ":/qt-project.org/imports/QtQml/Base/"
},
{
"classname": "QtQmlModelsPlugin",
@@ -32,7 +42,7 @@
"pluginIsOptional": true,
"relativePath": "QtQml/Models",
"type": "module",
- "prefer":":/qt-project.org/imports/QtQml/Models/"
+ "prefer": ":/qt-project.org/imports/QtQml/Models/"
},
{
"classname": "QtQmlWorkerScriptPlugin",
@@ -42,6 +52,6 @@
"pluginIsOptional": true,
"relativePath": "QtQml/WorkerScript",
"type": "module",
- "prefer":":/qt-project.org/imports/QtQml/WorkerScript/"
+ "prefer": ":/qt-project.org/imports/QtQml/WorkerScript/"
}
]
diff --git a/tests/auto/qml/qmlimportscanner/data/ListProperty.qml.json b/tests/auto/qml/qmlimportscanner/data/ListProperty.qml.json
index 9815ca8e92..06df9295fe 100644
--- a/tests/auto/qml/qmlimportscanner/data/ListProperty.qml.json
+++ b/tests/auto/qml/qmlimportscanner/data/ListProperty.qml.json
@@ -7,7 +7,7 @@
"pluginIsOptional": true,
"relativePath": "QtQuick",
"type": "module",
- "prefer":":/qt-project.org/imports/QtQuick/"
+ "prefer": ":/qt-project.org/imports/QtQuick/"
},
{
"name": "Things",
@@ -16,14 +16,24 @@
"type": "module"
},
{
+ "classname": "QtQmlMetaPlugin",
+ "linkTarget": "Qt6::QmlMeta",
+ "name": "QtQml",
+ "plugin": "qmlmetaplugin",
+ "pluginIsOptional": true,
+ "relativePath": "QtQml",
+ "type": "module",
+ "prefer": ":/qt-project.org/imports/QtQml/"
+ },
+ {
"classname": "QtQmlPlugin",
"linkTarget": "Qt6::qmlplugin",
- "name": "QtQml",
+ "name": "QtQml.Base",
"plugin": "qmlplugin",
"pluginIsOptional": true,
- "relativePath": "QtQml",
+ "relativePath": "QtQml/Base",
"type": "module",
- "prefer":":/qt-project.org/imports/QtQml/"
+ "prefer": ":/qt-project.org/imports/QtQml/Base/"
},
{
"classname": "QtQmlModelsPlugin",
@@ -33,7 +43,7 @@
"pluginIsOptional": true,
"relativePath": "QtQml/Models",
"type": "module",
- "prefer":":/qt-project.org/imports/QtQml/Models/"
+ "prefer": ":/qt-project.org/imports/QtQml/Models/"
},
{
"classname": "QtQmlWorkerScriptPlugin",
@@ -43,6 +53,6 @@
"pluginIsOptional": true,
"relativePath": "QtQml/WorkerScript",
"type": "module",
- "prefer":":/qt-project.org/imports/QtQml/WorkerScript/"
+ "prefer": ":/qt-project.org/imports/QtQml/WorkerScript/"
}
]
diff --git a/tests/auto/qml/qmlimportscanner/data/QTBUG-45916.js.json b/tests/auto/qml/qmlimportscanner/data/QTBUG-45916.js.json
index 48531c59cb..213798d04d 100644
--- a/tests/auto/qml/qmlimportscanner/data/QTBUG-45916.js.json
+++ b/tests/auto/qml/qmlimportscanner/data/QTBUG-45916.js.json
@@ -7,17 +7,27 @@
"pluginIsOptional": true,
"relativePath": "QtQuick",
"type": "module",
- "prefer":":/qt-project.org/imports/QtQuick/"
+ "prefer": ":/qt-project.org/imports/QtQuick/"
+ },
+ {
+ "classname": "QtQmlMetaPlugin",
+ "linkTarget": "Qt6::QmlMeta",
+ "name": "QtQml",
+ "plugin": "qmlmetaplugin",
+ "pluginIsOptional": true,
+ "relativePath": "QtQml",
+ "type": "module",
+ "prefer": ":/qt-project.org/imports/QtQml/"
},
{
"classname": "QtQmlPlugin",
"linkTarget": "Qt6::qmlplugin",
- "name": "QtQml",
+ "name": "QtQml.Base",
"plugin": "qmlplugin",
"pluginIsOptional": true,
- "relativePath": "QtQml",
+ "relativePath": "QtQml/Base",
"type": "module",
- "prefer":":/qt-project.org/imports/QtQml/"
+ "prefer": ":/qt-project.org/imports/QtQml/Base/"
},
{
"classname": "QtQmlModelsPlugin",
@@ -27,7 +37,7 @@
"pluginIsOptional": true,
"relativePath": "QtQml/Models",
"type": "module",
- "prefer":":/qt-project.org/imports/QtQml/Models/"
+ "prefer": ":/qt-project.org/imports/QtQml/Models/"
},
{
"classname": "QtQmlWorkerScriptPlugin",
@@ -37,6 +47,6 @@
"pluginIsOptional": true,
"relativePath": "QtQml/WorkerScript",
"type": "module",
- "prefer":":/qt-project.org/imports/QtQml/WorkerScript/"
+ "prefer": ":/qt-project.org/imports/QtQml/WorkerScript/"
}
]
diff --git a/tests/auto/qml/qmlimportscanner/data/Simple.qml.json b/tests/auto/qml/qmlimportscanner/data/Simple.qml.json
index 48531c59cb..213798d04d 100644
--- a/tests/auto/qml/qmlimportscanner/data/Simple.qml.json
+++ b/tests/auto/qml/qmlimportscanner/data/Simple.qml.json
@@ -7,17 +7,27 @@
"pluginIsOptional": true,
"relativePath": "QtQuick",
"type": "module",
- "prefer":":/qt-project.org/imports/QtQuick/"
+ "prefer": ":/qt-project.org/imports/QtQuick/"
+ },
+ {
+ "classname": "QtQmlMetaPlugin",
+ "linkTarget": "Qt6::QmlMeta",
+ "name": "QtQml",
+ "plugin": "qmlmetaplugin",
+ "pluginIsOptional": true,
+ "relativePath": "QtQml",
+ "type": "module",
+ "prefer": ":/qt-project.org/imports/QtQml/"
},
{
"classname": "QtQmlPlugin",
"linkTarget": "Qt6::qmlplugin",
- "name": "QtQml",
+ "name": "QtQml.Base",
"plugin": "qmlplugin",
"pluginIsOptional": true,
- "relativePath": "QtQml",
+ "relativePath": "QtQml/Base",
"type": "module",
- "prefer":":/qt-project.org/imports/QtQml/"
+ "prefer": ":/qt-project.org/imports/QtQml/Base/"
},
{
"classname": "QtQmlModelsPlugin",
@@ -27,7 +37,7 @@
"pluginIsOptional": true,
"relativePath": "QtQml/Models",
"type": "module",
- "prefer":":/qt-project.org/imports/QtQml/Models/"
+ "prefer": ":/qt-project.org/imports/QtQml/Models/"
},
{
"classname": "QtQmlWorkerScriptPlugin",
@@ -37,6 +47,6 @@
"pluginIsOptional": true,
"relativePath": "QtQml/WorkerScript",
"type": "module",
- "prefer":":/qt-project.org/imports/QtQml/WorkerScript/"
+ "prefer": ":/qt-project.org/imports/QtQml/WorkerScript/"
}
]
diff --git a/tests/auto/qml/qmlimportscanner/data/Singleton.json b/tests/auto/qml/qmlimportscanner/data/Singleton.json
index a1a5f3a129..cb24e57f60 100644
--- a/tests/auto/qml/qmlimportscanner/data/Singleton.json
+++ b/tests/auto/qml/qmlimportscanner/data/Singleton.json
@@ -12,17 +12,27 @@
"pluginIsOptional": true,
"relativePath": "QtQuick",
"type": "module",
- "prefer":":/qt-project.org/imports/QtQuick/"
+ "prefer": ":/qt-project.org/imports/QtQuick/"
+ },
+ {
+ "classname": "QtQmlMetaPlugin",
+ "linkTarget": "Qt6::QmlMeta",
+ "name": "QtQml",
+ "plugin": "qmlmetaplugin",
+ "pluginIsOptional": true,
+ "relativePath": "QtQml",
+ "type": "module",
+ "prefer": ":/qt-project.org/imports/QtQml/"
},
{
"classname": "QtQmlPlugin",
"linkTarget": "Qt6::qmlplugin",
- "name": "QtQml",
+ "name": "QtQml.Base",
"plugin": "qmlplugin",
"pluginIsOptional": true,
- "relativePath": "QtQml",
+ "relativePath": "QtQml/Base",
"type": "module",
- "prefer":":/qt-project.org/imports/QtQml/"
+ "prefer": ":/qt-project.org/imports/QtQml/Base/"
},
{
"classname": "QtQmlModelsPlugin",
@@ -32,7 +42,7 @@
"pluginIsOptional": true,
"relativePath": "QtQml/Models",
"type": "module",
- "prefer":":/qt-project.org/imports/QtQml/Models/"
+ "prefer": ":/qt-project.org/imports/QtQml/Models/"
},
{
"classname": "QtQmlWorkerScriptPlugin",
@@ -42,6 +52,6 @@
"pluginIsOptional": true,
"relativePath": "QtQml/WorkerScript",
"type": "module",
- "prefer":":/qt-project.org/imports/QtQml/WorkerScript/"
+ "prefer": ":/qt-project.org/imports/QtQml/WorkerScript/"
}
]
diff --git a/tests/auto/qml/qmlimportscanner/data/Things.json b/tests/auto/qml/qmlimportscanner/data/Things.json
index 7a70e49c3a..ee5caecfda 100644
--- a/tests/auto/qml/qmlimportscanner/data/Things.json
+++ b/tests/auto/qml/qmlimportscanner/data/Things.json
@@ -13,17 +13,27 @@
"pluginIsOptional": true,
"relativePath": "QtQuick",
"type": "module",
- "prefer":":/qt-project.org/imports/QtQuick/"
+ "prefer": ":/qt-project.org/imports/QtQuick/"
+ },
+ {
+ "classname": "QtQmlMetaPlugin",
+ "linkTarget": "Qt6::QmlMeta",
+ "name": "QtQml",
+ "plugin": "qmlmetaplugin",
+ "pluginIsOptional": true,
+ "relativePath": "QtQml",
+ "type": "module",
+ "prefer": ":/qt-project.org/imports/QtQml/"
},
{
"classname": "QtQmlPlugin",
"linkTarget": "Qt6::qmlplugin",
- "name": "QtQml",
+ "name": "QtQml.Base",
"plugin": "qmlplugin",
"pluginIsOptional": true,
- "relativePath": "QtQml",
+ "relativePath": "QtQml/Base",
"type": "module",
- "prefer":":/qt-project.org/imports/QtQml/"
+ "prefer": ":/qt-project.org/imports/QtQml/Base/"
},
{
"classname": "QtQmlModelsPlugin",
@@ -33,7 +43,7 @@
"pluginIsOptional": true,
"relativePath": "QtQml/Models",
"type": "module",
- "prefer":":/qt-project.org/imports/QtQml/Models/"
+ "prefer": ":/qt-project.org/imports/QtQml/Models/"
},
{
"classname": "QtQmlWorkerScriptPlugin",
@@ -43,6 +53,6 @@
"pluginIsOptional": true,
"relativePath": "QtQml/WorkerScript",
"type": "module",
- "prefer":":/qt-project.org/imports/QtQml/WorkerScript/"
+ "prefer": ":/qt-project.org/imports/QtQml/WorkerScript/"
}
]
diff --git a/tests/auto/qml/qmlimportscanner/data/javascriptMethods.qml.json b/tests/auto/qml/qmlimportscanner/data/javascriptMethods.qml.json
index adde17e8d5..2d2b602fb1 100644
--- a/tests/auto/qml/qmlimportscanner/data/javascriptMethods.qml.json
+++ b/tests/auto/qml/qmlimportscanner/data/javascriptMethods.qml.json
@@ -1,13 +1,23 @@
[
{
+ "classname": "QtQmlMetaPlugin",
+ "linkTarget": "Qt6::QmlMeta",
+ "name": "QtQml",
+ "plugin": "qmlmetaplugin",
+ "pluginIsOptional": true,
+ "relativePath": "QtQml",
+ "type": "module",
+ "prefer": ":/qt-project.org/imports/QtQml/"
+ },
+ {
"classname": "QtQmlPlugin",
"linkTarget": "Qt6::qmlplugin",
- "name": "QtQml",
+ "name": "QtQml.Base",
"plugin": "qmlplugin",
"pluginIsOptional": true,
- "relativePath": "QtQml",
+ "relativePath": "QtQml/Base",
"type": "module",
- "prefer":":/qt-project.org/imports/QtQml/"
+ "prefer": ":/qt-project.org/imports/QtQml/Base/"
},
{
"name": "Methods.js",
@@ -21,7 +31,7 @@
"pluginIsOptional": true,
"relativePath": "QtQml/Models",
"type": "module",
- "prefer":":/qt-project.org/imports/QtQml/Models/"
+ "prefer": ":/qt-project.org/imports/QtQml/Models/"
},
{
"classname": "QtQmlWorkerScriptPlugin",
@@ -31,6 +41,6 @@
"pluginIsOptional": true,
"relativePath": "QtQml/WorkerScript",
"type": "module",
- "prefer":":/qt-project.org/imports/QtQml/WorkerScript/"
+ "prefer": ":/qt-project.org/imports/QtQml/WorkerScript/"
}
]
diff --git a/tests/auto/qml/qmlimportscanner/data/localImport.qml.json b/tests/auto/qml/qmlimportscanner/data/localImport.qml.json
index 7a70e49c3a..ee5caecfda 100644
--- a/tests/auto/qml/qmlimportscanner/data/localImport.qml.json
+++ b/tests/auto/qml/qmlimportscanner/data/localImport.qml.json
@@ -13,17 +13,27 @@
"pluginIsOptional": true,
"relativePath": "QtQuick",
"type": "module",
- "prefer":":/qt-project.org/imports/QtQuick/"
+ "prefer": ":/qt-project.org/imports/QtQuick/"
+ },
+ {
+ "classname": "QtQmlMetaPlugin",
+ "linkTarget": "Qt6::QmlMeta",
+ "name": "QtQml",
+ "plugin": "qmlmetaplugin",
+ "pluginIsOptional": true,
+ "relativePath": "QtQml",
+ "type": "module",
+ "prefer": ":/qt-project.org/imports/QtQml/"
},
{
"classname": "QtQmlPlugin",
"linkTarget": "Qt6::qmlplugin",
- "name": "QtQml",
+ "name": "QtQml.Base",
"plugin": "qmlplugin",
"pluginIsOptional": true,
- "relativePath": "QtQml",
+ "relativePath": "QtQml/Base",
"type": "module",
- "prefer":":/qt-project.org/imports/QtQml/"
+ "prefer": ":/qt-project.org/imports/QtQml/Base/"
},
{
"classname": "QtQmlModelsPlugin",
@@ -33,7 +43,7 @@
"pluginIsOptional": true,
"relativePath": "QtQml/Models",
"type": "module",
- "prefer":":/qt-project.org/imports/QtQml/Models/"
+ "prefer": ":/qt-project.org/imports/QtQml/Models/"
},
{
"classname": "QtQmlWorkerScriptPlugin",
@@ -43,6 +53,6 @@
"pluginIsOptional": true,
"relativePath": "QtQml/WorkerScript",
"type": "module",
- "prefer":":/qt-project.org/imports/QtQml/WorkerScript/"
+ "prefer": ":/qt-project.org/imports/QtQml/WorkerScript/"
}
]
diff --git a/tests/auto/qml/qmlimportscanner/data/parentEnum.qml.json b/tests/auto/qml/qmlimportscanner/data/parentEnum.qml.json
index 48531c59cb..213798d04d 100644
--- a/tests/auto/qml/qmlimportscanner/data/parentEnum.qml.json
+++ b/tests/auto/qml/qmlimportscanner/data/parentEnum.qml.json
@@ -7,17 +7,27 @@
"pluginIsOptional": true,
"relativePath": "QtQuick",
"type": "module",
- "prefer":":/qt-project.org/imports/QtQuick/"
+ "prefer": ":/qt-project.org/imports/QtQuick/"
+ },
+ {
+ "classname": "QtQmlMetaPlugin",
+ "linkTarget": "Qt6::QmlMeta",
+ "name": "QtQml",
+ "plugin": "qmlmetaplugin",
+ "pluginIsOptional": true,
+ "relativePath": "QtQml",
+ "type": "module",
+ "prefer": ":/qt-project.org/imports/QtQml/"
},
{
"classname": "QtQmlPlugin",
"linkTarget": "Qt6::qmlplugin",
- "name": "QtQml",
+ "name": "QtQml.Base",
"plugin": "qmlplugin",
"pluginIsOptional": true,
- "relativePath": "QtQml",
+ "relativePath": "QtQml/Base",
"type": "module",
- "prefer":":/qt-project.org/imports/QtQml/"
+ "prefer": ":/qt-project.org/imports/QtQml/Base/"
},
{
"classname": "QtQmlModelsPlugin",
@@ -27,7 +37,7 @@
"pluginIsOptional": true,
"relativePath": "QtQml/Models",
"type": "module",
- "prefer":":/qt-project.org/imports/QtQml/Models/"
+ "prefer": ":/qt-project.org/imports/QtQml/Models/"
},
{
"classname": "QtQmlWorkerScriptPlugin",
@@ -37,6 +47,6 @@
"pluginIsOptional": true,
"relativePath": "QtQml/WorkerScript",
"type": "module",
- "prefer":":/qt-project.org/imports/QtQml/WorkerScript/"
+ "prefer": ":/qt-project.org/imports/QtQml/WorkerScript/"
}
]
diff --git a/tests/auto/qml/qmlimportscanner/data/qmldirImportAndDepend.qml.json b/tests/auto/qml/qmlimportscanner/data/qmldirImportAndDepend.qml.json
index 7a70e49c3a..ee5caecfda 100644
--- a/tests/auto/qml/qmlimportscanner/data/qmldirImportAndDepend.qml.json
+++ b/tests/auto/qml/qmlimportscanner/data/qmldirImportAndDepend.qml.json
@@ -13,17 +13,27 @@
"pluginIsOptional": true,
"relativePath": "QtQuick",
"type": "module",
- "prefer":":/qt-project.org/imports/QtQuick/"
+ "prefer": ":/qt-project.org/imports/QtQuick/"
+ },
+ {
+ "classname": "QtQmlMetaPlugin",
+ "linkTarget": "Qt6::QmlMeta",
+ "name": "QtQml",
+ "plugin": "qmlmetaplugin",
+ "pluginIsOptional": true,
+ "relativePath": "QtQml",
+ "type": "module",
+ "prefer": ":/qt-project.org/imports/QtQml/"
},
{
"classname": "QtQmlPlugin",
"linkTarget": "Qt6::qmlplugin",
- "name": "QtQml",
+ "name": "QtQml.Base",
"plugin": "qmlplugin",
"pluginIsOptional": true,
- "relativePath": "QtQml",
+ "relativePath": "QtQml/Base",
"type": "module",
- "prefer":":/qt-project.org/imports/QtQml/"
+ "prefer": ":/qt-project.org/imports/QtQml/Base/"
},
{
"classname": "QtQmlModelsPlugin",
@@ -33,7 +43,7 @@
"pluginIsOptional": true,
"relativePath": "QtQml/Models",
"type": "module",
- "prefer":":/qt-project.org/imports/QtQml/Models/"
+ "prefer": ":/qt-project.org/imports/QtQml/Models/"
},
{
"classname": "QtQmlWorkerScriptPlugin",
@@ -43,6 +53,6 @@
"pluginIsOptional": true,
"relativePath": "QtQml/WorkerScript",
"type": "module",
- "prefer":":/qt-project.org/imports/QtQml/WorkerScript/"
+ "prefer": ":/qt-project.org/imports/QtQml/WorkerScript/"
}
]
diff --git a/tests/auto/qml/qmlimportscanner/data/qtQmlOnly.qml.json b/tests/auto/qml/qmlimportscanner/data/qtQmlOnly.qml.json
index d8e972002d..447c664785 100644
--- a/tests/auto/qml/qmlimportscanner/data/qtQmlOnly.qml.json
+++ b/tests/auto/qml/qmlimportscanner/data/qtQmlOnly.qml.json
@@ -1,13 +1,23 @@
[
{
+ "classname": "QtQmlMetaPlugin",
+ "linkTarget": "Qt6::QmlMeta",
+ "name": "QtQml",
+ "plugin": "qmlmetaplugin",
+ "pluginIsOptional": true,
+ "relativePath": "QtQml",
+ "type": "module",
+ "prefer": ":/qt-project.org/imports/QtQml/"
+ },
+ {
"classname": "QtQmlPlugin",
"linkTarget": "Qt6::qmlplugin",
- "name": "QtQml",
+ "name": "QtQml.Base",
"plugin": "qmlplugin",
"pluginIsOptional": true,
- "relativePath": "QtQml",
+ "relativePath": "QtQml/Base",
"type": "module",
- "prefer":":/qt-project.org/imports/QtQml/"
+ "prefer": ":/qt-project.org/imports/QtQml/Base/"
},
{
"classname": "QtQmlModelsPlugin",
@@ -17,7 +27,7 @@
"pluginIsOptional": true,
"relativePath": "QtQml/Models",
"type": "module",
- "prefer":":/qt-project.org/imports/QtQml/Models/"
+ "prefer": ":/qt-project.org/imports/QtQml/Models/"
},
{
"classname": "QtQmlWorkerScriptPlugin",
@@ -27,6 +37,6 @@
"pluginIsOptional": true,
"relativePath": "QtQml/WorkerScript",
"type": "module",
- "prefer":":/qt-project.org/imports/QtQml/WorkerScript/"
+ "prefer": ":/qt-project.org/imports/QtQml/WorkerScript/"
}
]
diff --git a/tests/auto/qml/qmlimportscanner/data/rootPath.json b/tests/auto/qml/qmlimportscanner/data/rootPath.json
index efb3ca8244..942c8d6000 100644
--- a/tests/auto/qml/qmlimportscanner/data/rootPath.json
+++ b/tests/auto/qml/qmlimportscanner/data/rootPath.json
@@ -7,17 +7,27 @@
"pluginIsOptional": true,
"relativePath": "QtQuick",
"type": "module",
- "prefer":":/qt-project.org/imports/QtQuick/"
+ "prefer": ":/qt-project.org/imports/QtQuick/"
+ },
+ {
+ "classname": "QtQmlMetaPlugin",
+ "linkTarget": "Qt6::QmlMeta",
+ "name": "QtQml",
+ "plugin": "qmlmetaplugin",
+ "pluginIsOptional": true,
+ "relativePath": "QtQml",
+ "type": "module",
+ "prefer": ":/qt-project.org/imports/QtQml/"
},
{
"classname": "QtQmlPlugin",
"linkTarget": "Qt6::qmlplugin",
- "name": "QtQml",
+ "name": "QtQml.Base",
"plugin": "qmlplugin",
"pluginIsOptional": true,
- "relativePath": "QtQml",
+ "relativePath": "QtQml/Base",
"type": "module",
- "prefer":":/qt-project.org/imports/QtQml/"
+ "prefer": ":/qt-project.org/imports/QtQml/Base/"
},
{
"classname": "QtQmlModelsPlugin",
@@ -27,7 +37,7 @@
"pluginIsOptional": true,
"relativePath": "QtQml/Models",
"type": "module",
- "prefer":":/qt-project.org/imports/QtQml/Models/"
+ "prefer": ":/qt-project.org/imports/QtQml/Models/"
},
{
"classname": "QtQmlWorkerScriptPlugin",
@@ -37,7 +47,7 @@
"pluginIsOptional": true,
"relativePath": "QtQml/WorkerScript",
"type": "module",
- "prefer":":/qt-project.org/imports/QtQml/WorkerScript/"
+ "prefer": ":/qt-project.org/imports/QtQml/WorkerScript/"
},
{
"name": "QTBUG-45916.js",
diff --git a/tests/auto/qml/qqmlengine/tst_qqmlengine.cpp b/tests/auto/qml/qqmlengine/tst_qqmlengine.cpp
index 8a15cf906a..991af073fb 100644
--- a/tests/auto/qml/qqmlengine/tst_qqmlengine.cpp
+++ b/tests/auto/qml/qqmlengine/tst_qqmlengine.cpp
@@ -904,6 +904,7 @@ void tst_qqmlengine::qtqmlModule()
QQmlEngine e;
QQmlComponent c(&e, testFile);
if (expectedError.isEmpty()) {
+ QVERIFY2(c.isReady(), qPrintable(c.errorString()));
QScopedPointer<QObject> o(c.create());
QVERIFY(o);
} else {
diff --git a/tests/auto/qml/qqmlmoduleplugin/imports/ModuleFromQrc/Foo.qml b/tests/auto/qml/qqmlmoduleplugin/imports/ModuleFromQrc/Foo.qml
index 54531c4bdc..842183ed5b 100644
--- a/tests/auto/qml/qqmlmoduleplugin/imports/ModuleFromQrc/Foo.qml
+++ b/tests/auto/qml/qqmlmoduleplugin/imports/ModuleFromQrc/Foo.qml
@@ -1,2 +1,2 @@
-import QtQml
+import QML
QtObject {}