diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2020-09-25 13:29:50 +0200 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2020-09-25 16:16:21 +0200 |
commit | 0cc0c8535b17adc01525b6d309c3e38fd46d7917 (patch) | |
tree | 65c6cfb1ded6cfd7befcb60f9f5ffd4e86c0da96 /src/qml | |
parent | 5458f379ac5d5d88dd7f5ddeafd370dbeee3a436 (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/qml')
-rw-r--r-- | src/qml/qmldirparser/qqmldirparser.cpp | 35 | ||||
-rw-r--r-- | src/qml/qmldirparser/qqmldirparser_p.h | 4 |
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; |