diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2020-01-27 17:31:06 +0100 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2020-03-17 14:44:17 +0100 |
commit | 1eb20d70619cc896fc283bd6605b257a8750c518 (patch) | |
tree | 1d308932d38759a643d8eef49b211329a2cd5467 /src/qml/qml/qqmltype.cpp | |
parent | e3c64aff6579f04353608d4b218f031d9137d3f4 (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.cpp | 18 |
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 |