From 8de049389610037595e3b24ed660d4855aa460ce Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Tue, 15 Feb 2022 08:36:45 -0800 Subject: QMetaObjectBuilder: fix addProperty() recording of the property type Issue introduced by commit 465701bb98f3c3454d15c22b8e38ab4ad8821dfc. [ChangeLog][QtCore][QMetaObjectBuilder] Fixed a bug that would cause addProperty() to use the incorrect type for the property if the property's name matched a valid type registered with QMetaType. Pick-to: 6.2 6.3 Change-Id: Ic15405335d804bdea761fffd16d402f2c9611f30 Reviewed-by: Fabian Kosmale --- src/corelib/kernel/qmetaobjectbuilder.cpp | 2 +- .../corelib/kernel/qmetaobjectbuilder/tst_qmetaobjectbuilder.cpp | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/corelib/kernel/qmetaobjectbuilder.cpp b/src/corelib/kernel/qmetaobjectbuilder.cpp index 1a95d7265f..4f762b5e96 100644 --- a/src/corelib/kernel/qmetaobjectbuilder.cpp +++ b/src/corelib/kernel/qmetaobjectbuilder.cpp @@ -558,7 +558,7 @@ QMetaMethodBuilder QMetaObjectBuilder::addConstructor(const QMetaMethod &prototy QMetaPropertyBuilder QMetaObjectBuilder::addProperty(const QByteArray &name, const QByteArray &type, int notifierId) { - return addProperty(name, type, QMetaType::fromName(name), notifierId); + return addProperty(name, type, QMetaType::fromName(type), notifierId); } /*! diff --git a/tests/auto/corelib/kernel/qmetaobjectbuilder/tst_qmetaobjectbuilder.cpp b/tests/auto/corelib/kernel/qmetaobjectbuilder/tst_qmetaobjectbuilder.cpp index d8b7a96f4c..188a5a6626 100644 --- a/tests/auto/corelib/kernel/qmetaobjectbuilder/tst_qmetaobjectbuilder.cpp +++ b/tests/auto/corelib/kernel/qmetaobjectbuilder/tst_qmetaobjectbuilder.cpp @@ -1638,17 +1638,19 @@ void tst_QMetaObjectBuilder::classNameFirstInStringData() } struct MyFoo {}; +struct myParameter {}; void tst_QMetaObjectBuilder::propertyMetaType() { + qRegisterMetaType(); QMetaType meta = QMetaType::fromType(); auto metaId = meta.id(); QMetaObjectBuilder builder; builder.setClassName("Test"); - builder.addProperty("test", "MyFoo"); + builder.addProperty("myParameter", "MyFoo"); auto mo = builder.toMetaObject(); - QMetaProperty metaProp = mo->property(mo->indexOfProperty("test")); + QMetaProperty metaProp = mo->property(mo->indexOfProperty("myParameter")); QCOMPARE(metaProp.typeName(), meta.name()); QCOMPARE(metaProp.typeId(), metaId); QCOMPARE(metaProp.metaType(), meta); -- cgit v1.2.3