From a8ccd9cd848be9aafd2d07d83a8897dc8b2a0cb3 Mon Sep 17 00:00:00 2001 From: Fabian Kosmale Date: Mon, 19 Sep 2022 12:23:04 +0200 Subject: moc: Do not fail to compile meta-methods containing non-const ref types Amends 2d0c31e7d92a3e9df4ce2b9c1d41b94fb12735fc. We were using MetaTypeDecay in qTryMetaTypeInterfaceForType; but that is not used by moc when complete types are enforced. Change qt_metaTypeArray to also use qTryMetaTypeInterfaceForType, so that the code path for "force complete types"[0] and the normal one do not diverge. [0] Most easily enabled by using one of the QML type registration macros. Fixes: QTBUG-106672 Pick-to: 6.4 6.4.0 Change-Id: I9bf14873d1d0c4127a676643f7e8eb77f6e42dc8 Reviewed-by: Volker Hilsheimer --- tests/auto/tools/moc/qmlmacro.h | 19 +++++++++++++++++++ tests/auto/tools/moc/tst_moc.cpp | 2 ++ 2 files changed, 21 insertions(+) create mode 100644 tests/auto/tools/moc/qmlmacro.h (limited to 'tests/auto/tools') diff --git a/tests/auto/tools/moc/qmlmacro.h b/tests/auto/tools/moc/qmlmacro.h new file mode 100644 index 0000000000..cb3b291bf1 --- /dev/null +++ b/tests/auto/tools/moc/qmlmacro.h @@ -0,0 +1,19 @@ +// Copyright (C) 2022 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 + + +#ifndef QMlMACRO_H +#define QMlMACRO_H + +#include +#include + +struct QmlMacro : QObject +{ + Q_OBJECT + Q_CLASSINFO("QML.Element", "auto") + + signals: + void f(QByteArray &b); +}; +#endif diff --git a/tests/auto/tools/moc/tst_moc.cpp b/tests/auto/tools/moc/tst_moc.cpp index 48249eec0c..2b4737bae3 100644 --- a/tests/auto/tools/moc/tst_moc.cpp +++ b/tests/auto/tools/moc/tst_moc.cpp @@ -56,6 +56,8 @@ #include "fwdclass2.h" #include "fwdclass3.h" +#include "qmlmacro.h" + #ifdef Q_MOC_RUN // check that moc can parse these constructs, they are being used in Windows winsock2.h header #define STRING_HASH_HASH(x) ("foo" ## x ## "bar") -- cgit v1.2.3