aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/qmldirparser/qqmldirparser.cpp
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@qt.io>2024-12-19 14:52:09 +0100
committerUlf Hermann <ulf.hermann@qt.io>2025-01-06 17:27:47 +0100
commit735556d19d7bd67a1a9729586743e1c8b86de257 (patch)
treefd38b43fc17fbfbb723560e38d871f1b3292efd0 /src/qml/qmldirparser/qqmldirparser.cpp
parent52b5aaaabbbdef3da9fd9ffc2cf3fb947196ab24 (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.cpp29
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();