diff options
| author | Ulf Hermann <ulf.hermann@qt.io> | 2024-12-19 14:52:09 +0100 |
|---|---|---|
| committer | Ulf Hermann <ulf.hermann@qt.io> | 2025-01-06 17:27:47 +0100 |
| commit | 735556d19d7bd67a1a9729586743e1c8b86de257 (patch) | |
| tree | fd38b43fc17fbfbb723560e38d871f1b3292efd0 /src/qml/qmldirparser/qqmldirparser.cpp | |
| parent | 52b5aaaabbbdef3da9fd9ffc2cf3fb947196ab24 (diff) | |
QtQml: Accept .js and .mjs files in directory-listing qmldirs
Since it's documented like this, we should actually allow it.
Pick-to: 6.9 6.8 6.5
Task-number: QTBUG-132118
Change-Id: I2192f040b8fdf545b8dbb0687b6e618a9858ed07
Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io>
Diffstat (limited to 'src/qml/qmldirparser/qqmldirparser.cpp')
| -rw-r--r-- | src/qml/qmldirparser/qqmldirparser.cpp | 29 |
1 files changed, 16 insertions, 13 deletions
diff --git a/src/qml/qmldirparser/qqmldirparser.cpp b/src/qml/qmldirparser/qqmldirparser.cpp index 6ac3cb997a..7c1fd3d11f 100644 --- a/src/qml/qmldirparser/qqmldirparser.cpp +++ b/src/qml/qmldirparser/qqmldirparser.cpp @@ -399,23 +399,16 @@ bool QQmlDirParser::parse(const QString &source) _linkTarget = sections[1]; } else if (sectionCount == 2) { // No version specified (should only be used for relative qmldir files) - const Component entry(sections[0], sections[1], QTypeRevision()); - _components.insert(entry.typeName, entry); + insertComponentOrScript(sections[0], sections[1], QTypeRevision()); } else if (sectionCount == 3) { const QTypeRevision version = parseVersion(sections[1]); if (version.isValid()) { - const QString &fileName = sections[2]; - - if (fileName.endsWith(QLatin1String(".js")) || fileName.endsWith(QLatin1String(".mjs"))) { - // A 'js' extension indicates a namespaced script import - const Script entry(sections[0], fileName, version); - _scripts.append(entry); - } else { - const Component entry(sections[0], fileName, version); - _components.insert(entry.typeName, entry); - } + insertComponentOrScript(sections[0], sections[2], version); } else { - reportError(lineNumber, 0, QStringLiteral("invalid version %1, expected <major>.<minor>").arg(sections[1])); + reportError( + lineNumber, 0, + QStringLiteral("invalid version %1, expected <major>.<minor>") + .arg(sections[1])); } } else { reportError(lineNumber, 0, @@ -560,6 +553,16 @@ void QQmlDirParser::reportError(quint16 line, quint16 column, const QString &des _errors.append(error); } +void QQmlDirParser::insertComponentOrScript( + const QString &name, const QString &fileName, QTypeRevision version) +{ + // A 'js' extension indicates a namespaced script import + if (fileName.endsWith(QLatin1String(".js")) || fileName.endsWith(QLatin1String(".mjs"))) + _scripts.append(Script(name, fileName, version)); + else + _components.insert(name, Component(name, fileName, version)); +} + void QQmlDirParser::setError(const QQmlJS::DiagnosticMessage &e) { _errors.clear(); |
