diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2019-12-11 15:31:55 +0100 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2019-12-11 16:34:01 +0100 |
commit | d07a5221ce0a138743341e2edeaba6f8488f42f7 (patch) | |
tree | 003e8143f4bb3a20debd557b6df412334804f734 /tools | |
parent | 8a7e163c00212ee30c425bb58b45f8b0f7face69 (diff) |
qmllint: Handle unversioned import statements in qmldir files
The import statements in qmldir files are not required to have a version
attached to them anymore.
Change-Id: I925d5f965c73685874c23510cf2e569d1528d8c1
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/qmllint/findunqualified.cpp | 23 | ||||
-rw-r--r-- | tools/qmllint/findunqualified.h | 3 |
2 files changed, 19 insertions, 7 deletions
diff --git a/tools/qmllint/findunqualified.cpp b/tools/qmllint/findunqualified.cpp index 6274238f96..af2bf1ae7e 100644 --- a/tools/qmllint/findunqualified.cpp +++ b/tools/qmllint/findunqualified.cpp @@ -103,7 +103,10 @@ QStringList completeImportPaths(const QString &uri, const QString &basePath, int return str; }; - for (int version = FullyVersioned; version <= BasePath; ++version) { + const ImportVersion initial = (vmin >= 0) + ? FullyVersioned + : (vmaj >= 0 ? PartiallyVersioned : Unversioned); + for (int version = initial; version <= BasePath; ++version) { const QString ver = versionString(vmaj, vmin, static_cast<ImportVersion>(version)); QString dir = basePath; @@ -185,9 +188,16 @@ void FindUnqualifiedIDVisitor::processImport(const QString &prefix, const FindUn for (auto const &dependency : qAsConst(import.dependencies)) { auto const split = dependency.split(" "); auto const &id = split.at(0); - auto const major = split.at(1).split('.').at(0).toInt(); - auto const minor = split.at(1).split('.').at(1).toInt(); - importHelper(id, QString(), major, minor); + if (split.length() > 1) { + const auto version = split.at(1).split('.'); + importHelper(id, QString(), + version.at(0).toInt(), + version.length() > 1 ? version.at(1).toInt() : -1); + } else { + importHelper(id, QString(), -1, -1); + } + + } // add objects @@ -205,9 +215,10 @@ void FindUnqualifiedIDVisitor::processImport(const QString &prefix, const FindUn } } -void FindUnqualifiedIDVisitor::importHelper(QString id, QString prefix, int major, int minor) +void FindUnqualifiedIDVisitor::importHelper(const QString &module, const QString &prefix, + int major, int minor) { - id = id.replace(QLatin1String("/"), QLatin1String(".")); + const QString id = QString(module).replace(QLatin1Char('/'), QLatin1Char('.')); QPair<QString, QString> importId { id, prefix }; if (m_alreadySeenImports.contains(importId)) return; diff --git a/tools/qmllint/findunqualified.h b/tools/qmllint/findunqualified.h index a8fa435464..483a6da039 100644 --- a/tools/qmllint/findunqualified.h +++ b/tools/qmllint/findunqualified.h @@ -88,7 +88,8 @@ private: void enterEnvironment(ScopeType type, QString name); void leaveEnvironment(); - void importHelper(QString id, QString prefix, int major, int minor); + void importHelper(const QString &module, const QString &prefix = QString(), + int major = -1, int minor = -1); void readQmltypes(const QString &filename, Import &result); Import readQmldir(const QString &dirname); |