aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@qt.io>2019-12-11 15:31:55 +0100
committerUlf Hermann <ulf.hermann@qt.io>2019-12-11 16:34:01 +0100
commitd07a5221ce0a138743341e2edeaba6f8488f42f7 (patch)
tree003e8143f4bb3a20debd557b6df412334804f734 /tools
parent8a7e163c00212ee30c425bb58b45f8b0f7face69 (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.cpp23
-rw-r--r--tools/qmllint/findunqualified.h3
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);