aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@qt.io>2020-09-25 13:29:50 +0200
committerUlf Hermann <ulf.hermann@qt.io>2020-09-25 16:16:21 +0200
commit0cc0c8535b17adc01525b6d309c3e38fd46d7917 (patch)
tree65c6cfb1ded6cfd7befcb60f9f5ffd4e86c0da96 /src
parent5458f379ac5d5d88dd7f5ddeafd370dbeee3a436 (diff)
QQmlDirParser: Treat dependencies like imports
In particular, allow auto and latest versions. Change-Id: I4a6b26112950d066ae2d8a37dc0e9fa1dec24724 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Diffstat (limited to 'src')
-rw-r--r--src/qml/qmldirparser/qqmldirparser.cpp35
-rw-r--r--src/qml/qmldirparser/qqmldirparser_p.h4
2 files changed, 15 insertions, 24 deletions
diff --git a/src/qml/qmldirparser/qqmldirparser.cpp b/src/qml/qmldirparser/qqmldirparser.cpp
index e774f471cb..c4fdd70c56 100644
--- a/src/qml/qmldirparser/qqmldirparser.cpp
+++ b/src/qml/qmldirparser/qqmldirparser.cpp
@@ -260,31 +260,18 @@ bool QQmlDirParser::parse(const QString &source)
reportError(lineNumber, 0, QStringLiteral("designersupported does not expect any argument"));
else
_designerSupported = true;
- } else if (sections[0] == QLatin1String("depends")) {
- if (sectionCount != 3) {
- reportError(lineNumber, 0,
- QStringLiteral("depends requires 2 arguments, but %1 were provided").arg(sectionCount - 1));
- continue;
- }
-
- const QTypeRevision version = parseVersion(sections[2]);
- if (version.isValid()) {
- Component entry(sections[1], QString(), version);
- entry.internal = true;
- _dependencies.insert(entry.typeName, entry);
- } else {
- reportError(lineNumber, 0, QStringLiteral("invalid version %1, expected <major>.<minor>").arg(sections[2]));
- }
- } else if (sections[0] == QLatin1String("import")) {
+ } else if (sections[0] == QLatin1String("import")
+ || sections[0] == QLatin1String("depends")) {
+ Import import;
if (sectionCount == 2) {
- _imports << Import(sections[1], QTypeRevision(), false);
+ import = Import(sections[1], QTypeRevision(), false);
} else if (sectionCount == 3) {
if (sections[2] == QLatin1String("auto")) {
- _imports << Import(sections[1], QTypeRevision(), true);
+ import = Import(sections[1], QTypeRevision(), true);
} else {
const auto version = parseVersion(sections[2]);
if (version.isValid()) {
- _imports << Import(sections[1], version, false);
+ import = Import(sections[1], version, false);
} else {
reportError(lineNumber, 0,
QStringLiteral("invalid version %1, expected <major>.<minor>")
@@ -294,10 +281,14 @@ bool QQmlDirParser::parse(const QString &source)
}
} else {
reportError(lineNumber, 0,
- QStringLiteral("import requires 1 or 2 arguments, but %1 were provided")
- .arg(sectionCount - 1));
+ QStringLiteral("%1 requires 1 or 2 arguments, but %2 were provided")
+ .arg(sections[0]).arg(sectionCount - 1));
continue;
}
+ if (sections[0] == QStringLiteral("import"))
+ _imports.append(import);
+ else
+ _dependencies.append(import);
} else if (sectionCount == 2) {
// No version specified (should only be used for relative qmldir files)
const Component entry(sections[0], sections[1], QTypeRevision());
@@ -385,7 +376,7 @@ QMultiHash<QString, QQmlDirParser::Component> QQmlDirParser::components() const
return _components;
}
-QHash<QString, QQmlDirParser::Component> QQmlDirParser::dependencies() const
+QList<QQmlDirParser::Import> QQmlDirParser::dependencies() const
{
return _dependencies;
}
diff --git a/src/qml/qmldirparser/qqmldirparser_p.h b/src/qml/qmldirparser/qqmldirparser_p.h
index 1500d0c653..d65b7eed85 100644
--- a/src/qml/qmldirparser/qqmldirparser_p.h
+++ b/src/qml/qmldirparser/qqmldirparser_p.h
@@ -144,7 +144,7 @@ public:
};
QMultiHash<QString,Component> components() const;
- QHash<QString,Component> dependencies() const;
+ QList<Import> dependencies() const;
QList<Import> imports() const;
QList<Script> scripts() const;
QList<Plugin> plugins() const;
@@ -171,7 +171,7 @@ private:
QList<QQmlJS::DiagnosticMessage> _errors;
QString _typeNamespace;
QMultiHash<QString,Component> _components;
- QHash<QString,Component> _dependencies;
+ QList<Import> _dependencies;
QList<Import> _imports;
QList<Script> _scripts;
QList<Plugin> _plugins;