aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/qml/qqmltype.cpp
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@qt.io>2020-01-27 17:31:06 +0100
committerUlf Hermann <ulf.hermann@qt.io>2020-03-17 14:44:17 +0100
commit1eb20d70619cc896fc283bd6605b257a8750c518 (patch)
tree1d308932d38759a643d8eef49b211329a2cd5467 /src/qml/qml/qqmltype.cpp
parente3c64aff6579f04353608d4b218f031d9137d3f4 (diff)
Allow partial and absent version specifiers in import statements
An import statement without version specifier imports the latest version available, one with only a major version imports the latest minor version from that major version. Task-number: QTBUG-71278 Change-Id: I43907ae4e1052be533039d545de5391c41d38307 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Diffstat (limited to 'src/qml/qml/qqmltype.cpp')
-rw-r--r--src/qml/qml/qqmltype.cpp18
1 files changed, 11 insertions, 7 deletions
diff --git a/src/qml/qml/qqmltype.cpp b/src/qml/qml/qqmltype.cpp
index db22c93733..5eb77b617d 100644
--- a/src/qml/qml/qqmltype.cpp
+++ b/src/qml/qml/qqmltype.cpp
@@ -141,20 +141,24 @@ QTypeRevision QQmlType::version() const
bool QQmlType::availableInVersion(QTypeRevision version) const
{
- Q_ASSERT(version.hasMajorVersion() && version.hasMinorVersion());
if (!d)
return false;
- return version.majorVersion() == d->version.majorVersion()
- && version.minorVersion() >= d->version.minorVersion();
+
+ if (!version.hasMajorVersion())
+ return true;
+
+ if (version.majorVersion() != d->version.majorVersion())
+ return false;
+
+ return !version.hasMinorVersion() || version.minorVersion() >= d->version.minorVersion();
}
bool QQmlType::availableInVersion(const QHashedStringRef &module, QTypeRevision version) const
{
- Q_ASSERT(version.hasMajorVersion() && version.hasMinorVersion());
- if (!d)
+ if (!d || module != d->module)
return false;
- return module == d->module && version.majorVersion() == d->version.majorVersion()
- && version.minorVersion() >= d->version.minorVersion();
+
+ return availableInVersion(version);
}
QQmlType QQmlTypePrivate::resolveCompositeBaseType(QQmlEnginePrivate *engine) const