qmlcompilerplus: Add pending upstream patch

The latest dev branch submodule update causes
build break in qmlcompilerplus module. Add pending
reviewed upstream patch to fix issue:

"error: invalid initialization of reference of type ‘QQmlJSScope::ConstPtr&’
{aka ‘QDeferredSharedPointer<const QQmlJSScope>&’} from expression of type ‘QQmlJSRegisterContent’"

Change-Id: Id750838347ccd17a2cc6e336375ea6df1e7d14fb
Reviewed-by: Samuli Piippo <samuli.piippo@qt.io>
This commit is contained in:
Mikko Gronoff 2022-03-11 08:05:44 +02:00
parent a1b6233b65
commit a9011cf6cd
2 changed files with 48 additions and 0 deletions

View File

@ -0,0 +1,44 @@
From b75e47c42ac4103181149033ab6978165f2d40ee Mon Sep 17 00:00:00 2001
From: Ulf Hermann <ulf.hermann@qt.io>
Date: Mon, 21 Feb 2022 17:36:51 +0100
Subject: [PATCH] Adapt to arguments being stored as QQmlJSRegisterContent
Change-Id: Ia0ef456b8ede4c19cf9864117b46cf6909c6c457
---
src/qmlcompilerplus/bytecodetranslator.cpp | 2 +-
src/qmlcompilerplus/cppcodegen.cpp | 9 ++++-----
2 files changed, 5 insertions(+), 6 deletions(-)
diff --git a/src/qmlcompilerplus/bytecodetranslator.cpp b/src/qmlcompilerplus/bytecodetranslator.cpp
index c95365a..0307f2d 100644
--- a/src/qmlcompilerplus/bytecodetranslator.cpp
+++ b/src/qmlcompilerplus/bytecodetranslator.cpp
@@ -88,7 +88,7 @@ QQmlJSAotFunction ByteCodeTranslator::run(
{
addInclude(function->returnType);
for (const auto &argType : function->argumentTypes)
- addInclude(argType);
+ addInclude(argType.storedType());
if (function->returnType)
addInclude(function->returnType);
diff --git a/src/qmlcompilerplus/cppcodegen.cpp b/src/qmlcompilerplus/cppcodegen.cpp
index a984a23..48263d2 100644
--- a/src/qmlcompilerplus/cppcodegen.cpp
+++ b/src/qmlcompilerplus/cppcodegen.cpp
@@ -95,11 +95,10 @@ QQmlJSAotFunction CppCodeGenerator::doCompile(
else
return signatureError(u"Cannot store return type %s"_qs.arg(ret->internalName()));
}
- for (QQmlJSScope::ConstPtr &arg : function->argumentTypes) {
- if (const auto storedType = m_typeResolver.storedType(arg))
- arg = storedType;
- else
- return signatureError(u"Cannot store argument type %s"_qs.arg(arg->internalName()));
+ for (const QQmlJSRegisterContent &arg : function->argumentTypes) {
+ if (!arg.isValid())
+ return signatureError(u"Cannot store argument type %s"_qs
+ .arg(arg.descriptiveName()));
}
} else {
// Generalize all arguments, registers, and the return type.

View File

@ -8,6 +8,10 @@ inherit qt6-cmake
include recipes-qt/qt6/qt6-git.inc
include recipes-qt/qt6/qt6.inc
SRC_URI += "\
file://0001-Adapt-to-arguments-being-stored-as-QQmlJSRegisterCon.patch \
"
python() {
if d.getVar('QT_EDITION') != 'commercial':
raise bb.parse.SkipRecipe('Available only with Commercial Qt')