commit: fcc4f0cb453d0629691774e2a28c55645bb98817 Author: Ionen Wolkens <ionen <AT> gentoo <DOT> org> AuthorDate: Mon Sep 8 01:44:22 2025 +0000 Commit: Ionen Wolkens <ionen <AT> gentoo <DOT> org> CommitDate: Mon Sep 8 05:56:54 2025 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=fcc4f0cb
dev-qt/qtdeclarative: backport fix for QTBUG-139626 Signed-off-by: Ionen Wolkens <ionen <AT> gentoo.org> .../files/qtdeclarative-6.9.2-QTBUG-139626.patch | 87 ++++++++++++++++++++++ ...-6.9.2.ebuild => qtdeclarative-6.9.2-r1.ebuild} | 4 + 2 files changed, 91 insertions(+) diff --git a/dev-qt/qtdeclarative/files/qtdeclarative-6.9.2-QTBUG-139626.patch b/dev-qt/qtdeclarative/files/qtdeclarative-6.9.2-QTBUG-139626.patch new file mode 100644 index 000000000000..71aa7d3809e4 --- /dev/null +++ b/dev-qt/qtdeclarative/files/qtdeclarative-6.9.2-QTBUG-139626.patch @@ -0,0 +1,87 @@ +https://bugreports.qt.io/browse/QTBUG-139626 +https://codereview.qt-project.org/c/qt/qtdeclarative/+/672607 +--- a/src/qmlcompiler/qqmljscodegenerator.cpp ++++ b/src/qmlcompiler/qqmljscodegenerator.cpp +@@ -1441,4 +1441,15 @@ + } + ++QString QQmlJSCodeGenerator::generateVariantMapLookup( ++ const QString &map, const int nameIndex) ++{ ++ const QString mapLookup = map ++ + u"["_s + QQmlJSUtils::toLiteral(m_jsUnitGenerator->lookupName(nameIndex)) + u"]"_s; ++ ++ return m_state.accumulatorVariableOut + u" = "_s ++ + conversion(m_typeResolver->varType(), m_state.accumulatorOut(), mapLookup) ++ + u";\n"_s; ++} ++ + void QQmlJSCodeGenerator::generate_GetLookupHelper(int index) + { +@@ -1588,9 +1599,5 @@ + } + } else if (accumulatorIn.isStoredIn(m_typeResolver->variantMapType())) { +- QString mapLookup = m_state.accumulatorVariableIn + u"["_s +- + QQmlJSUtils::toLiteral(m_jsUnitGenerator->lookupName(index)) + u"]"_s; +- m_body += m_state.accumulatorVariableOut + u" = "_s; +- m_body += conversion(m_typeResolver->varType(), m_state.accumulatorOut(), mapLookup); +- m_body += u";\n"_s; ++ m_body += generateVariantMapLookup(m_state.accumulatorVariableIn, index); + } else { + if (m_state.isRegisterAffectedBySideEffects(Accumulator)) +@@ -1602,4 +1609,11 @@ + m_jsUnitGenerator->lookupName(index))); + ++ if (scope.contains(m_typeResolver->variantMapType())) { ++ m_body += generateVariantMapLookup( ++ u"(*static_cast<const QVariantMap *>("_s ++ + inputContentPointer + u"))"_s, index); ++ return; ++ } ++ + const QString lookup = u"aotContext->getValueLookup("_s + indexString + + u", "_s + inputContentPointer +--- a/src/qmlcompiler/qqmljscodegenerator_p.h ++++ b/src/qmlcompiler/qqmljscodegenerator_p.h +@@ -360,4 +360,6 @@ + const QStringList &arguments, const QString &metaType, const QString &metaObject); + ++ QString generateVariantMapLookup(const QString &map, const int nameIndex); ++ + QQmlJSRegisterContent originalType(QQmlJSRegisterContent tracked) + { +--- a/tests/auto/qml/qmlcppcodegen/data/variantMapLookup.h ++++ b/tests/auto/qml/qmlcppcodegen/data/variantMapLookup.h +@@ -9,4 +9,5 @@ + QML_ELEMENT + Q_PROPERTY(QVariantMap data READ data CONSTANT) ++ Q_PROPERTY(QList<QVariantMap> many READ many CONSTANT) + + public: +@@ -15,3 +16,10 @@ + private: + QVariantMap data() const { return { { QStringLiteral("value"), 42 } }; } ++ QList<QVariantMap> many() const ++ { ++ const QVariantMap one = data(); ++ return QList<QVariantMap>({one, one, one}); ++ } + }; ++ ++ +--- a/tests/auto/qml/qmlcppcodegen/data/variantMapLookup.qml ++++ b/tests/auto/qml/qmlcppcodegen/data/variantMapLookup.qml +@@ -5,4 +5,5 @@ + Item { + property int i: moo.data.value ++ property int j: moo.many[1].value + + VariantMapLookupFoo { +--- a/tests/auto/qml/qmlcppcodegen/tst_qmlcppcodegen.cpp ++++ b/tests/auto/qml/qmlcppcodegen/tst_qmlcppcodegen.cpp +@@ -5697,4 +5697,5 @@ + QVERIFY(!o.isNull()); + QCOMPARE(o->property("i"), 42); ++ QCOMPARE(o->property("j"), 42); + } + diff --git a/dev-qt/qtdeclarative/qtdeclarative-6.9.2.ebuild b/dev-qt/qtdeclarative/qtdeclarative-6.9.2-r1.ebuild similarity index 97% rename from dev-qt/qtdeclarative/qtdeclarative-6.9.2.ebuild rename to dev-qt/qtdeclarative/qtdeclarative-6.9.2-r1.ebuild index eb34cbcde726..20dd725e2bb4 100644 --- a/dev-qt/qtdeclarative/qtdeclarative-6.9.2.ebuild +++ b/dev-qt/qtdeclarative/qtdeclarative-6.9.2-r1.ebuild @@ -32,6 +32,10 @@ BDEPEND=" ~dev-qt/qtshadertools-${PV}:6 " +PATCHES=( + "${FILESDIR}"/${P}-QTBUG-139626.patch +) + src_configure() { local mycmakeargs=( $(cmake_use_find_package qmlls Qt6LanguageServerPrivate)
