File indexing completed on 2024-04-28 05:38:40

0001 #include <QtCore/QList>
0002 #include <QtCore/QString>
0003 #include <QtCore/QMap>
0004 #include <QtCore/QVector>
0005 
0006 
0007 
0008 
0009 
0010 
0011 
0012 
0013 
0014 
0015 struct A
0016 {
0017     A()
0018     {
0019         m_list.begin();  // Warning
0020         m_list.cbegin(); // OK
0021     }
0022 
0023     void f()
0024     {
0025         QList<int> list;
0026         list.begin(); // OK
0027         list[0]; // OK
0028 
0029         m_list.begin();  // Warning
0030         m_list.cbegin(); // OK
0031         m_constList.begin();  // OK
0032     }
0033 
0034     void constF() const
0035     {
0036         m_list.begin(); // OK
0037         m_string.data(); // OK
0038         m_string[0]; // OK
0039         m_list[0]; // OK
0040         m_mutableString.begin(); // Warning
0041         m_mutableString[0]; // Warning
0042     }
0043 
0044     void testAssignment()
0045     {
0046         m_string[0] = QChar('a'); // OK
0047         m_mutableString[0] = QChar('a'); // OK
0048         m_list[0]++;    // OK
0049         m_list[0] += 2; // OK
0050         m_list2[0] = m_list[0]; // Warning
0051     }
0052 
0053 
0054     QList<int> m_list;
0055     QList<int> m_list2;
0056     QString m_string;
0057     mutable QString m_mutableString;
0058     const QList<int> m_constList;
0059 };
0060 
0061 class Static
0062 {
0063 public:
0064     static Static *instance()
0065     {
0066         return new Static();
0067     }
0068 
0069     QMap<int,int> getMap() const { return {}; }
0070     QMap<QString,QString> map;
0071 };
0072 
0073 void test(const QString &prefix, const QString &path)
0074 {
0075     Static::instance()->getMap()[0] = 0;
0076     Static::instance()->getMap()[0] += 0;
0077     Static::instance()->map[prefix] = path;
0078     Static::instance()->map[prefix] += path;
0079 }
0080 
0081 // Bug 356699
0082 struct T {
0083     void nonConstMethod() {}
0084     void constMethod() const { }
0085 };
0086 
0087 struct S
0088 {
0089     QList<T> m_listOfValues;
0090     QList<T*> m_listOfPointers;
0091 };
0092 
0093 void test356699()
0094 {
0095     S s;
0096     s.m_listOfPointers[0]->nonConstMethod(); // Warning
0097     s.m_listOfValues[0].nonConstMethod(); // OK
0098     s.m_listOfValues.at(0).constMethod(); // OK
0099     s.m_listOfPointers.at(0)->nonConstMethod(); // OK
0100 }
0101 
0102 void test356755()
0103 {
0104     S s;
0105 #if QT_VERSION_MAJOR == 5
0106     qSort(s.m_listOfPointers.begin(), s.m_listOfPointers.end());
0107 #else
0108     std::sort(s.m_listOfPointers.begin(), s.m_listOfPointers.end());
0109 #endif
0110 }
0111 
0112 void testFill() {
0113     struct Fill {
0114         Fill() {
0115             m_vector.fill(1);
0116         }
0117         QVector<int> m_vector;
0118     };
0119 
0120 }