From ac178eae4eb9f2647d07de2dfffa3c7ed18e2de8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C4=99drzej=20Nowacki?= Date: Mon, 17 Mar 2014 09:38:39 +0100 Subject: Fix Q_DECLARE_METATYPE macro The macro should stringify value of the given token not the token itself. Task-number: QTBUG-37547 Change-Id: I90f4fa613bd13d5a581828ab13f620b40dfd3593 Reviewed-by: Olivier Goffart --- src/corelib/kernel/qmetatype.h | 3 ++- tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp | 8 +++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/corelib/kernel/qmetatype.h b/src/corelib/kernel/qmetatype.h index 5e354b3f41..c468c0b45d 100644 --- a/src/corelib/kernel/qmetatype.h +++ b/src/corelib/kernel/qmetatype.h @@ -1706,7 +1706,8 @@ inline int qRegisterMetaTypeStreamOperators() } QT_END_NAMESPACE \ /**/ -#define Q_DECLARE_METATYPE(TYPE) \ +#define Q_DECLARE_METATYPE(TYPE) Q_DECLARE_METATYPE_IMPL(TYPE) +#define Q_DECLARE_METATYPE_IMPL(TYPE) \ QT_BEGIN_NAMESPACE \ template <> \ struct QMetaTypeId< TYPE > \ diff --git a/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp b/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp index 0e3ea86165..959c79ed60 100644 --- a/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp +++ b/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp @@ -278,15 +278,21 @@ void tst_QMetaType::threadSafety() namespace TestSpace { struct Foo { double d; }; - + struct QungTfu {}; } Q_DECLARE_METATYPE(TestSpace::Foo) +#define ADD_TESTSPACE(F) TestSpace::F +Q_DECLARE_METATYPE(ADD_TESTSPACE(QungTfu)) + void tst_QMetaType::namespaces() { TestSpace::Foo nf = { 11.12 }; QVariant v = QVariant::fromValue(nf); QCOMPARE(qvariant_cast(v).d, 11.12); + + int qungTfuId = qRegisterMetaType(); + QCOMPARE(QMetaType::typeName(qungTfuId), "TestSpace::QungTfu"); } void tst_QMetaType::qMetaTypeId() -- cgit v1.2.3