qt6-6.9.0

This commit is contained in:
Rmys
2025-05-12 21:02:59 +03:00
parent 84d03cf445
commit 66c4e5e240
3 changed files with 164 additions and 22 deletions
@@ -0,0 +1,128 @@
From e5d9bcf70ae704569e091ee0ee93561e01fefe38 Mon Sep 17 00:00:00 2001
From: Ulf Hermann <ulf.hermann@qt.io>
Date: Fri, 11 Apr 2025 17:00:52 +0200
Subject: [PATCH] QmlCompiler: Error out on unstorable types
We already do this for return types, but it's fatal on any type.
Fixes: QTBUG-135342
Change-Id: I7aee2a19ffcd39d2707eceb34b5073057d8b5ebb
Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io>
(cherry picked from commit 0bd329a0b42b4c8c3bf77c201f3d8b187467ef02)
---
diff --git a/src/qmlcompiler/qqmljsstorageinitializer.cpp b/src/qmlcompiler/qqmljsstorageinitializer.cpp
index 4123716..60f46fa 100644
--- a/src/qmlcompiler/qqmljsstorageinitializer.cpp
+++ b/src/qmlcompiler/qqmljsstorageinitializer.cpp
@@ -35,17 +35,25 @@
if (!content.isValid() || !content.storage().isNull())
return;
- const QQmlJSRegisterContent original = m_typeResolver->original(content);
- const QQmlJSScope::ConstPtr originalStored
- = m_typeResolver->storedType(original.containedType());
- m_pool->storeType(content, originalStored);
+ const QQmlJSScope::ConstPtr original = m_typeResolver->originalContainedType(content);
+ if (const QQmlJSScope::ConstPtr originalStored = m_typeResolver->storedType(original)) {
+ m_pool->storeType(content, originalStored);
+ } else {
+ addError(QStringLiteral("Cannot store type %1.").arg(original->internalName()));
+ return;
+ }
- const QQmlJSScope::ConstPtr adjustedStored
- = m_typeResolver->storedType(content.containedType());
+ const QQmlJSScope::ConstPtr contentContained = content.containedType();
+ const QQmlJSScope::ConstPtr adjustedStored = m_typeResolver->storedType(contentContained);
+ if (!adjustedStored) {
+ addError(QStringLiteral("Cannot store type %1.")
+ .arg(contentContained->internalName()));
+ return;
+ }
if (!m_typeResolver->adjustTrackedType(content.storage(), adjustedStored)) {
- addError(QStringLiteral("Cannot adjust stored type for %1.")
- .arg(content.containedType()->internalName()));
+ addError(QStringLiteral("Cannot adjust stored type for %1 to %2.")
+ .arg(contentContained->internalName(), adjustedStored->internalName()));
}
};
diff --git a/tests/auto/qml/qmlcppcodegen/data/CMakeLists.txt b/tests/auto/qml/qmlcppcodegen/data/CMakeLists.txt
index 4661211..cc92631 100644
--- a/tests/auto/qml/qmlcppcodegen/data/CMakeLists.txt
+++ b/tests/auto/qml/qmlcppcodegen/data/CMakeLists.txt
@@ -308,6 +308,7 @@
undefinedToDouble.qml
unknownAttached.qml
unknownParameter.qml
+ unknownUnderlyingType.qml
unstoredUndefined.qml
unusedAttached.qml
urlString.qml
diff --git a/tests/auto/qml/qmlcppcodegen/data/enumproblems.h b/tests/auto/qml/qmlcppcodegen/data/enumproblems.h
index 36f97be..9c98789 100644
--- a/tests/auto/qml/qmlcppcodegen/data/enumproblems.h
+++ b/tests/auto/qml/qmlcppcodegen/data/enumproblems.h
@@ -116,4 +116,19 @@
Q_ENUM(EType)
};
+using uint_myown_t = decltype(75 - 12);
+
+class UnknownUnderlyingType : public QObject
+{
+ Q_OBJECT
+ QML_ELEMENT
+
+public:
+ enum Bla : uint_myown_t {
+ Yo = 11,
+ };
+ Q_ENUM(Bla)
+};
+
+
#endif // ENUMPROBLEMS_H
diff --git a/tests/auto/qml/qmlcppcodegen/data/unknownUnderlyingType.qml b/tests/auto/qml/qmlcppcodegen/data/unknownUnderlyingType.qml
new file mode 100644
index 0000000..8e43828
--- /dev/null
+++ b/tests/auto/qml/qmlcppcodegen/data/unknownUnderlyingType.qml
@@ -0,0 +1,6 @@
+import QtQml
+import TestTypes as FB
+
+QtObject {
+ property var foo: FB.UnknownUnderlyingType.Yo
+}
diff --git a/tests/auto/qml/qmlcppcodegen/tst_qmlcppcodegen.cpp b/tests/auto/qml/qmlcppcodegen/tst_qmlcppcodegen.cpp
index f44cae1..5f701d7 100644
--- a/tests/auto/qml/qmlcppcodegen/tst_qmlcppcodegen.cpp
+++ b/tests/auto/qml/qmlcppcodegen/tst_qmlcppcodegen.cpp
@@ -269,6 +269,7 @@
void undefinedToDouble();
void unknownAttached();
void unknownParameter();
+ void unknownUnderlyingType();
void unstoredUndefined();
void unusedAttached();
void urlString();
@@ -5466,6 +5467,16 @@
QCOMPARE(object->property("cppProp").toInt(), 18);
}
+void tst_QmlCppCodegen::unknownUnderlyingType()
+{
+ QQmlEngine engine;
+ QQmlComponent component(&engine, QUrl(u"qrc:/qt/qml/TestTypes/unknownUnderlyingType.qml"_s));
+ QVERIFY2(!component.isError(), component.errorString().toUtf8());
+ QScopedPointer<QObject> object(component.create());
+ QVERIFY(!object.isNull());
+ QCOMPARE(object->property("foo").toInt(), 11);
+}
+
void tst_QmlCppCodegen::unstoredUndefined()
{
QQmlEngine engine;
+24 -17
View File
@@ -11,26 +11,26 @@
<Summary>Classes for QML and JavaScript languages</Summary>
<Description>Classes for QML and JavaScript languages</Description>
<License>LGPLv2.1-linking-exception</License>
<Archive sha1sum="38a8ab99beb0aa6c8443ad466248f7dd4a020da8" type="tarxz">https://download.qt.io/official_releases/qt/6.8/6.8.2/submodules/qtdeclarative-everywhere-src-6.8.2.tar.xz</Archive>
<Archive sha1sum="aab45329a3a1c1f5b64c8696573fb1481892afa3" type="tarxz">https://download.qt.io/official_releases/qt/6.9/6.9.0/submodules/qtdeclarative-everywhere-src-6.9.0.tar.xz</Archive>
<BuildDependencies>
<Dependency>ninja</Dependency>
<Dependency>cmake</Dependency>
<Dependency>python3</Dependency>
<Dependency>libxkbcommon-devel</Dependency>
<Dependency versionFrom="13.0.4">mesa-devel</Dependency>
<Dependency versionFrom="6.8.2">qt6-sql-sqlite</Dependency>
<Dependency versionFrom="6.8.2">qt6-sql-mysql</Dependency>
<Dependency versionFrom="6.8.2">qt6-sql-odbc</Dependency>
<Dependency versionFrom="6.8.2">qt6-svg-devel</Dependency>
<Dependency versionFrom="6.8.2">qt6-base-devel</Dependency>
<Dependency versionFrom="6.8.2">qt6-sql-postgresql</Dependency>
<Dependency versionFrom="6.9.0">qt6-sql-sqlite</Dependency>
<Dependency versionFrom="6.9.0">qt6-sql-mysql</Dependency>
<Dependency versionFrom="6.9.0">qt6-sql-odbc</Dependency>
<Dependency versionFrom="6.9.0">qt6-svg-devel</Dependency>
<Dependency versionFrom="6.9.0">qt6-base-devel</Dependency>
<Dependency versionFrom="6.9.0">qt6-sql-postgresql</Dependency>
<!--Dependency versionFrom="6.4.0">qt6-svg-devel</Dependency-->
<Dependency versionFrom="6.8.2">qt6-imageformats</Dependency>
<Dependency versionFrom="6.8.2">qt6-shadertools-devel</Dependency>
<Dependency versionFrom="6.8.2">qt6-languageserver-devel</Dependency>
<Dependency versionFrom="6.9.0">qt6-imageformats</Dependency>
<Dependency versionFrom="6.9.0">qt6-shadertools-devel</Dependency>
<Dependency versionFrom="6.9.0">qt6-languageserver-devel</Dependency>
</BuildDependencies>
<Patches>
<!-- <Patch level="1">qt_kde.patch</Patch> -->
<Patch level="1">qtdeclarative-qmlcompiler-error-out-on-unstorable-types.patch</Patch>
</Patches>
</Source>
@@ -39,11 +39,11 @@
<RuntimeDependencies>
<Dependency>libgcc</Dependency>
<!-- <Dependency>libglvnd</Dependency> -->
<Dependency versionFrom="6.8.2">qt6-base</Dependency>
<Dependency versionFrom="6.8.2">qt6-svg</Dependency>
<Dependency versionFrom="6.8.2">qt6-languageserver</Dependency>
<Dependency versionFrom="6.9.0">qt6-base</Dependency>
<Dependency versionFrom="6.9.0">qt6-svg</Dependency>
<Dependency versionFrom="6.9.0">qt6-languageserver</Dependency>
<Dependency>libglvnd</Dependency>
<!-- <Dependency versionFrom="6.8.2">qt6-xmlpatterns</Dependency> -->
<!-- <Dependency versionFrom="6.9.0">qt6-xmlpatterns</Dependency> -->
</RuntimeDependencies>
<Files>
<Path fileType="library">/usr/lib</Path>
@@ -64,7 +64,7 @@
<Path fileType="header">/usr/include/qt6</Path>
</Files>
<RuntimeDependencies>
<Dependency versionFrom="6.8.2">qt6-base-devel</Dependency>
<Dependency versionFrom="6.9.0">qt6-base-devel</Dependency>
<Dependency release="current">qt6-declarative</Dependency>
</RuntimeDependencies>
</Package>
@@ -72,7 +72,7 @@
<!--Package>
<Name>qt6-declarative-docs</Name>
<RuntimeDependencies>
<Dependency versionFrom="6.8.2">qt6-base</Dependency>
<Dependency versionFrom="6.9.0">qt6-base</Dependency>
</RuntimeDependencies>
<Files>
<Path fileType="doc">/usr/share/doc/qt6</Path>
@@ -80,6 +80,13 @@
</Package-->
<History>
<Update release="14">
<Date>2025-05-12</Date>
<Version>6.9.0</Version>
<Comment>Version bump.</Comment>
<Name>Pisi Linux Community</Name>
<Email>admin@pisilinux.org</Email>
</Update>
<Update release="13">
<Date>2025-02-01</Date>
<Version>6.8.2</Version>
+12 -5
View File
@@ -11,20 +11,20 @@
<Summary>Provides access to hardware and virtual serial ports</Summary>
<Description>Provides access to hardware and virtual serial ports</Description>
<License>LGPLv2.1-linking-exception</License>
<Archive sha1sum="6fdf622d07a86722a481e79cc3165049b88b1fd3" type="tarxz">https://download.qt.io/official_releases/qt/6.8/6.8.2/submodules/qtserialport-everywhere-src-6.8.2.tar.xz</Archive>
<Archive sha1sum="2642cf0906508575c4166e3d76a6d7c62a7a0470" type="tarxz">https://download.qt.io/official_releases/qt/6.9/6.9.0/submodules/qtserialport-everywhere-src-6.9.0.tar.xz</Archive>
<BuildDependencies>
<Dependency>ninja</Dependency>
<Dependency>cmake</Dependency>
<Dependency>eudev-devel</Dependency>
<Dependency versionFrom="6.8.2">qt6-base-devel</Dependency>
<Dependency versionFrom="6.8.2">qt6-sql-sqlite</Dependency>
<Dependency versionFrom="6.9.0">qt6-base-devel</Dependency>
<Dependency versionFrom="6.9.0">qt6-sql-sqlite</Dependency>
</BuildDependencies>
</Source>
<Package>
<Name>qt6-serialport</Name>
<RuntimeDependencies>
<Dependency versionFrom="6.8.2">qt6-base</Dependency>
<Dependency versionFrom="6.9.0">qt6-base</Dependency>
<Dependency versionFrom="3.2.1">eudev</Dependency>
<Dependency>libgcc</Dependency>
</RuntimeDependencies>
@@ -39,7 +39,7 @@
<Package>
<Name>qt6-serialport-devel</Name>
<RuntimeDependencies>
<Dependency versionFrom="6.8.2">qt6-base-devel</Dependency>
<Dependency versionFrom="6.9.0">qt6-base-devel</Dependency>
<Dependency release="current">qt6-serialport</Dependency>
</RuntimeDependencies>
<Files>
@@ -49,6 +49,13 @@
</Package>
<History>
<Update release="14">
<Date>2025-05-12</Date>
<Version>6.9.0</Version>
<Comment>Version bump.</Comment>
<Name>Pisi Linux Community</Name>
<Email>admin@pisilinux.org</Email>
</Update>
<Update release="13">
<Date>2025-02-01</Date>
<Version>6.8.2</Version>