diff options
author | Olivier Goffart <olivier.goffart@nokia.com> | 2010-07-19 15:04:06 (GMT) |
---|---|---|
committer | Olivier Goffart <olivier.goffart@nokia.com> | 2010-07-19 16:02:05 (GMT) |
commit | 4da1a3b63445c04d4ca4acae448e9b6b046938c3 (patch) | |
tree | 001d5e9b0900a0662b0953da1f699fb332351403 /tests/auto/moc | |
parent | f19a95429a5e9b760f49152ebdf9b39474750116 (diff) | |
download | Qt-4da1a3b63445c04d4ca4acae448e9b6b046938c3.zip Qt-4da1a3b63445c04d4ca4acae448e9b6b046938c3.tar.gz Qt-4da1a3b63445c04d4ca4acae448e9b6b046938c3.tar.bz2 |
moc: Slot with complex template default value does not compile
The way we detect the end of a default argument does not take in account
template parametter.
It is unfortunatelly not trivial to do it properly without semantic information
So we will use heuristics and if the number of < matches the number of >
we consider it is a template. Or if we have a '=' we consider it is not a
template.
Task-number: QTBUG-12260
Reviewed-by: Roberto Raggi
Diffstat (limited to 'tests/auto/moc')
-rw-r--r-- | tests/auto/moc/tst_moc.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/tests/auto/moc/tst_moc.cpp b/tests/auto/moc/tst_moc.cpp index 19f3677..4fcc7bd 100644 --- a/tests/auto/moc/tst_moc.cpp +++ b/tests/auto/moc/tst_moc.cpp @@ -491,6 +491,7 @@ private slots: void typenameWithUnsigned(); void warnOnVirtualSignal(); void QTBUG5590_dummyProperty(); + void QTBUG12260_defaultTemplate(); signals: void sigWithUnsignedArg(unsigned foo); void sigWithSignedArg(signed foo); @@ -1340,6 +1341,20 @@ signals: void testSignal(TestTemplate2<const int, const short*>); }; +class QTBUG12260_defaultTemplate_Object : public QObject +{ Q_OBJECT +public slots: + void doSomething(QHash<QString, QVariant> values = QHash<QString, QVariant>()) { Q_UNUSED(values); } + void doAnotherThing(bool a = (1 < 3), bool b = (1 > 4)) { Q_UNUSED(a); Q_UNUSED(b); } +}; + + +void tst_Moc::QTBUG12260_defaultTemplate() +{ + QVERIFY(QTBUG12260_defaultTemplate_Object::staticMetaObject.indexOfSlot("doSomething(QHash<QString,QVariant>)") != -1); + QVERIFY(QTBUG12260_defaultTemplate_Object::staticMetaObject.indexOfSlot("doAnotherThing(bool,bool)") != -1); +} + QTEST_APPLESS_MAIN(tst_Moc) #include "tst_moc.moc" |