diff options
author | Volker Krause <volker.krause@kdab.com> | 2012-09-02 16:30:47 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-09-02 23:41:42 +0200 |
commit | 8c1cb66712a339b09988d8ef2b15ce39678178a6 (patch) | |
tree | 0b3214586a36223c508ffc7b0e1c2eb7dc11e9cf /src/tools/moc/generator.cpp | |
parent | 9d4814e18b9c243340f492f8b7ddd19b523b229f (diff) |
Fix moc generating invalid code for slots with reference types as argument.
We can't have T& declared/registered as a metatype (wont compile), but
using it as type for a slot argument is possible. With the recent
introduction of metatype auto-registration we have to make sure that moc
doesn't attempt to auto-register those. Simple types are handled correctly
already, this fixes containers and smart pointers.
Change-Id: Id96857c57d6ebf158a67e9d527c89dc195473b1b
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
Diffstat (limited to 'src/tools/moc/generator.cpp')
-rw-r--r-- | src/tools/moc/generator.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/tools/moc/generator.cpp b/src/tools/moc/generator.cpp index 6aaefc452d..694152f436 100644 --- a/src/tools/moc/generator.cpp +++ b/src/tools/moc/generator.cpp @@ -162,7 +162,7 @@ bool Generator::registerableMetaType(const QByteArray &propertyType) ; foreach (const QByteArray &smartPointer, smartPointers) - if (propertyType.startsWith(smartPointer + "<")) + if (propertyType.startsWith(smartPointer + "<") && !propertyType.endsWith("&")) return knownQObjectClasses.contains(propertyType.mid(smartPointer.size() + 1, propertyType.size() - smartPointer.size() - 1 - 1)); static const QVector<QByteArray> oneArgTemplates = QVector<QByteArray>() @@ -171,7 +171,7 @@ bool Generator::registerableMetaType(const QByteArray &propertyType) #undef STREAM_1ARG_TEMPLATE ; foreach (const QByteArray &oneArgTemplateType, oneArgTemplates) - if (propertyType.startsWith(oneArgTemplateType + "<")) { + if (propertyType.startsWith(oneArgTemplateType + "<") && !propertyType.endsWith("&")) { const int argumentSize = propertyType.size() - oneArgTemplateType.size() - 1 // The closing '>' - 1 |