diff options
author | Fabian Kosmale <fabian.kosmale@qt.io> | 2020-03-19 10:47:29 +0100 |
---|---|---|
committer | Fabian Kosmale <fabian.kosmale@qt.io> | 2020-06-02 22:42:15 +0200 |
commit | fa987d44417528856d5e80ed7b48ba99e19fa307 (patch) | |
tree | 50cd74c1a9dd3c2197f7de2ac0d431a5b16b0a42 /tests/auto/tools/moc | |
parent | 5306fdabc1ceb09875f791526553b3665017f7ce (diff) |
MetaObject: Store the QMetaType of the methods
This does the analog of 46f407126ef3e94d59254012cdc34d6a4ad2faf2 for the
methods we care about (signals, slots, Q_INVOKABLEs). In addition to the
actual QMetaType, we store an array with offsets so that we later can do
a mapping from methodIndex to metatype.
The newly added QMetaMethod::{return,parameter}MetaType methods can then
be used to retrieve the metatypes.
This does however require that all involved types are complete. This is
unfortunately not a feasible requirement. Thus, we only populate the
metatype array on a best effort basis. For any incomplete type, we store
QMetaType::Unknown. Then, when accessing the metatype, we fall back to
the old string based code base if it's Unknown.
Squashes "moc: support incomplete types" and "Fix compile failures
after QMetaMethod change"
Fixes: QTBUG-82932
Change-Id: I6b7a587cc364b7cad0c158d6de54e8a204289ad4
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Diffstat (limited to 'tests/auto/tools/moc')
-rw-r--r-- | tests/auto/tools/moc/forward-declared-param.h | 1 | ||||
-rw-r--r-- | tests/auto/tools/moc/forwarddeclaredparam.h | 5 | ||||
-rw-r--r-- | tests/auto/tools/moc/parse-defines.h | 1 | ||||
-rw-r--r-- | tests/auto/tools/moc/tst_moc.cpp | 16 |
4 files changed, 18 insertions, 5 deletions
diff --git a/tests/auto/tools/moc/forward-declared-param.h b/tests/auto/tools/moc/forward-declared-param.h index 3c10b7be1f..484e546482 100644 --- a/tests/auto/tools/moc/forward-declared-param.h +++ b/tests/auto/tools/moc/forward-declared-param.h @@ -30,6 +30,7 @@ #define FORWARD_DECLARED_PARAM_H #include <qobject.h> #include <qmetatype.h> +Q_MOC_INCLUDE("forwarddeclaredparam.h") // test support for const refs to forward-declared structs in parameters diff --git a/tests/auto/tools/moc/forwarddeclaredparam.h b/tests/auto/tools/moc/forwarddeclaredparam.h new file mode 100644 index 0000000000..176f0c3356 --- /dev/null +++ b/tests/auto/tools/moc/forwarddeclaredparam.h @@ -0,0 +1,5 @@ +#ifndef FORWARDDECLAREDPARAM_H +#define FORWARDDECLAREDPARAM_H +struct ForwardDeclaredParam {}; +template <typename T> class ForwardDeclaredContainer {}; +#endif diff --git a/tests/auto/tools/moc/parse-defines.h b/tests/auto/tools/moc/parse-defines.h index bd22b0b9af..b88fe63e4a 100644 --- a/tests/auto/tools/moc/parse-defines.h +++ b/tests/auto/tools/moc/parse-defines.h @@ -30,6 +30,7 @@ #define PARSE_DEFINES_H #include <qobject.h> +Q_MOC_INCLUDE(<QMap>) // this is intentionally ugly to test moc's preprocessing capabilities #define PD_NAMESPACE PD diff --git a/tests/auto/tools/moc/tst_moc.cpp b/tests/auto/tools/moc/tst_moc.cpp index 2fe5f42609..d4e3a4e297 100644 --- a/tests/auto/tools/moc/tst_moc.cpp +++ b/tests/auto/tools/moc/tst_moc.cpp @@ -1773,14 +1773,20 @@ public slots: QString const returnConstString2( QString const s) { return s; } }; + +struct science_constant {}; +struct science_const {}; +struct constconst {}; +struct const_ {}; + class QTBUG9354_constInName: public QObject { Q_OBJECT public slots: - void slotChooseScientificConst0(struct science_constant const &) {}; - void foo(struct science_const const &) {}; - void foo(struct constconst const &) {}; - void foo(struct constconst *) {}; - void foo(struct const_ *) {}; + void slotChooseScientificConst0(science_constant const &) {}; + void foo(science_const const &) {}; + void foo(constconst const &) {}; + void foo(constconst *) {}; + void foo(const_ *) {}; }; |