Warning, /sdk/clazy/tests/range-loop-reference/main.cpp.fixed.expected is written in an unsupported language. File is not indexed.
0001 #include <QtCore/QList>
0002 #include <QtCore/QString>
0003 #include <QtCore/QJsonArray>
0004 #include <QtCore/QSequentialIterable>
0005
0006 struct Trivial
0007 {
0008 int a;
0009 };
0010
0011 struct BigTrivial
0012 {
0013 int a, b, c, d, e;
0014 void constFoo() const {}
0015 void nonConstFoo() {}
0016 };
0017
0018 struct SmallNonTrivial
0019 {
0020 int a;
0021 ~SmallNonTrivial() {}
0022 };
0023
0024 extern void nop();
0025 extern void nop2(BigTrivial &); // non-const-ref
0026 extern void nop3(const BigTrivial &); // const-ref
0027 extern void nop4(BigTrivial *); // pointer
0028
0029 void test_missing_ref()
0030 {
0031 const QList<Trivial> trivials;
0032 const QList<BigTrivial> bigTrivials;
0033 const QList<SmallNonTrivial> smallNonTrivials;
0034
0035 // Test #2: No warning
0036 for (Trivial t : trivials) {
0037 nop();
0038 }
0039
0040 // Test #3: No warning
0041 for (BigTrivial t : bigTrivials) {
0042 nop();
0043 }
0044
0045 // Test #4: Warning
0046 for (const SmallNonTrivial &t : smallNonTrivials) {
0047 nop();
0048 }
0049
0050 // Test #5: No Warning
0051 for (const BigTrivial t : bigTrivials) {
0052 t.constFoo();
0053 }
0054
0055 // Test #6: No warning
0056 for (BigTrivial t : bigTrivials) {
0057 t.nonConstFoo();
0058 }
0059
0060 // Test #7: No warning
0061 for (BigTrivial t : bigTrivials) {
0062 t = BigTrivial();
0063 }
0064
0065 // Test #8: No warning
0066 for (BigTrivial t : bigTrivials) {
0067 nop2(t);
0068 }
0069
0070 // Test #9: No Warning
0071 for (BigTrivial t : bigTrivials) {
0072 nop3(t);
0073 }
0074
0075 // Test #9: No warning
0076 for (BigTrivial t : bigTrivials) {
0077 nop4(&t);
0078 }
0079
0080 // Test #10: No warning (bug #362587)
0081 QSequentialIterable si = QVariant().value<QSequentialIterable>();
0082 for (const auto &s : si) {}
0083 }
0084
0085 void test_add_ref_fixits()
0086 {
0087 QStringList strlist;
0088 for (const QString &s : strlist) {} // should add &
0089 for (const QString &s : strlist) {} // should add const-&
0090
0091 for (QString s : strlist) { // shouldn't warn
0092 s = s.toLower();
0093 }
0094
0095 for (QString s : strlist) { // shouldn't warn
0096 s.clear();
0097 }
0098 }
0099
0100 void test_json_array()
0101 {
0102 QJsonArray array;
0103 const QJsonArray const_array;
0104 for (const auto a : array) {} // OK
0105 for (const QJsonValue &a : const_array) {} // Warn
0106 for (const QJsonValue &a : const_array) {} // OK
0107 }