aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/qmldirparser/qqmldirparser.cpp
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@qt.io>2023-02-03 11:26:27 +0100
committerUlf Hermann <ulf.hermann@qt.io>2023-02-07 19:23:12 +0100
commit577e1dea2583d6c9dddd122842a2a58be332dbb0 (patch)
tree70a6d6bc80991e5a9b0d86b4d8cdde93a4f7b59a /src/qml/qmldirparser/qqmldirparser.cpp
parentbe815997238f38d6a0672c1cb9f2ecb995ce1d13 (diff)
qmldir parser: Handle internal types with versions
There is no reason why internal types cannot have versions. Pick-to: 6.5 Task-number: QTBUG-110815 Change-Id: I7fa9790dc64dd785fc08ec7b22f68b4f961fdb00 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Diffstat (limited to 'src/qml/qmldirparser/qqmldirparser.cpp')
-rw-r--r--src/qml/qmldirparser/qqmldirparser.cpp24
1 files changed, 19 insertions, 5 deletions
diff --git a/src/qml/qmldirparser/qqmldirparser.cpp b/src/qml/qmldirparser/qqmldirparser.cpp
index 112c7d12d0..9a34c9fe49 100644
--- a/src/qml/qmldirparser/qqmldirparser.cpp
+++ b/src/qml/qmldirparser/qqmldirparser.cpp
@@ -233,14 +233,28 @@ bool QQmlDirParser::parse(const QString &source)
_classNames.append(sections[1]);
} else if (sections[0] == QLatin1String("internal")) {
- if (sectionCount != 3) {
+ if (sectionCount == 3) {
+ Component entry(sections[1], sections[2], QTypeRevision());
+ entry.internal = true;
+ _components.insert(entry.typeName, entry);
+ } else if (sectionCount == 4) {
+ const QTypeRevision version = parseVersion(sections[2]);
+ if (version.isValid()) {
+ Component entry(sections[1], sections[3], version);
+ entry.internal = true;
+ _components.insert(entry.typeName, entry);
+ } else {
+ reportError(lineNumber, 0,
+ QStringLiteral("invalid version %1, expected <major>.<minor>")
+ .arg(sections[2]));
+ continue;
+ }
+ } else {
reportError(lineNumber, 0,
- QStringLiteral("internal types require 2 arguments, but %1 were provided").arg(sectionCount - 1));
+ QStringLiteral("internal types require 2 or 3 arguments, "
+ "but %1 were provided").arg(sectionCount - 1));
continue;
}
- Component entry(sections[1], sections[2], QTypeRevision());
- entry.internal = true;
- _components.insert(entry.typeName, entry);
} else if (sections[0] == QLatin1String("singleton")) {
if (sectionCount < 3 || sectionCount > 4) {
reportError(lineNumber, 0,