File indexing completed on 2024-05-05 05:41:38

0001 // clang+++ test.cpp -I /usr/include/qt/ -fPIC -lQt5Core -c
0002 
0003 #include <QtCore/QHash>
0004 #include <QtCore/QMap>
0005 #include <QtCore/QSet>
0006 #include <QtCore/QString>
0007 
0008 QSet<QString *> values()
0009 {
0010     QSet<QString *> s;
0011     return s;
0012 }
0013 
0014 QSet<QString *> keys()
0015 {
0016     QSet<QString *> s;
0017     return s;
0018 }
0019 
0020 struct Foo {
0021     QSet<QString *> values()
0022     {
0023         QSet<QString *> s;
0024         return s;
0025     }
0026 
0027     QSet<QString *> doSomethingWithValues(const QList<QString*> &)
0028     {
0029         QSet<QString *> s;
0030         return s;
0031     }
0032 };
0033 
0034 int main()
0035 {
0036     QSet<QString *> s;
0037     qDeleteAll(s);
0038     qDeleteAll(s.begin(), s.end());
0039     qDeleteAll(s.values()); // warning
0040 
0041     QHash<int, QString *> h;
0042     qDeleteAll(h);
0043     qDeleteAll(h.begin(), h.end());
0044     qDeleteAll(h.values()); // warning
0045 
0046     QMap<int*, QString *> m;
0047     qDeleteAll(m);
0048     qDeleteAll(m.begin(), m.end());
0049     qDeleteAll(m.values()); // warning
0050 
0051     QMultiHash<int, QString *> mh;
0052     qDeleteAll(mh);
0053     qDeleteAll(mh.begin(), mh.end());
0054     qDeleteAll(mh.values()); // warning
0055 
0056     QMultiMap<int, QString *> mm;
0057     qDeleteAll(mm);
0058     qDeleteAll(mm.begin(), mm.end());
0059     qDeleteAll(mm.values()); // warning
0060 
0061     qDeleteAll(values());  // ok
0062 
0063     Foo foo;
0064     qDeleteAll(foo.values());  // ok
0065     qDeleteAll(foo.doSomethingWithValues(h.values()));  // ok
0066 
0067     qDeleteAll(m.keys()); // warning
0068     qDeleteAll(keys()); // ok
0069 
0070 #if QT_VERSION_MAJOR == 5
0071     qDeleteAll(h.values(1)); // OK, we have specified a key
0072 #endif
0073     qDeleteAll(mh.values(1)); // We only want to delete a subset of the container - ok
0074 
0075 }