aboutsummaryrefslogtreecommitdiffstats
path: root/tests/assert-with-side-effects
diff options
context:
space:
mode:
authorSergio Martins <sergio.martins@kdab.com>2015-08-30 12:33:53 +0100
committerSergio Martins <sergio.martins@kdab.com>2015-08-30 12:33:53 +0100
commit551eacfd9a419934a8d01bc8819838a8b4b88505 (patch)
treee52c9711779a7ea761b41c84b5ac539effdecb0d /tests/assert-with-side-effects
parenta1ab4540b5139a3a84c2405dcb7abf4947f84a8d (diff)
assert-with-side-effects: Cleanup
Diffstat (limited to 'tests/assert-with-side-effects')
-rw-r--r--tests/assert-with-side-effects/main.cpp51
-rw-r--r--tests/assert-with-side-effects/test.expected2
2 files changed, 53 insertions, 0 deletions
diff --git a/tests/assert-with-side-effects/main.cpp b/tests/assert-with-side-effects/main.cpp
new file mode 100644
index 00000000..43c5f46c
--- /dev/null
+++ b/tests/assert-with-side-effects/main.cpp
@@ -0,0 +1,51 @@
+#include <QtCore/qglobal.h>
+#include <QtCore/QVector>
+#include <QtCore/QString>
+
+
+
+
+
+
+
+
+struct SomeStruct
+{
+ bool nonConstMember() { return false; }
+ bool constMember() const { return false; }
+ bool m;
+};
+
+
+bool global_func() { return false; }
+
+void test()
+{
+ SomeStruct s;
+ Q_ASSERT(s.nonConstMember()); // Warning, but ok with normal agressiveness
+ Q_ASSERT(global_func()); // Warning, but ok with normal agressiveness
+
+ int i;
+ Q_ASSERT(i = 0); // Warning
+}
+
+class MyVector : QVector<int>
+{
+public:
+ MyVector()
+ {
+ Q_ASSERT(!isEmpty()); // OK
+
+ int a, b;
+ Q_ASSERT(a <= b); // OK
+
+ SomeStruct *s;
+ Q_ASSERT(s->m); // OK
+ Q_ASSERT(s->constMember()); // OK
+
+ QString format;
+ int i = 0;
+ Q_ASSERT(format.at(i) == QLatin1Char('\'')); // OK
+ Q_ASSERT(++i); // Warning
+ }
+};
diff --git a/tests/assert-with-side-effects/test.expected b/tests/assert-with-side-effects/test.expected
new file mode 100644
index 00000000..143f3ca4
--- /dev/null
+++ b/tests/assert-with-side-effects/test.expected
@@ -0,0 +1,2 @@
+main.cpp:29:14: warning: Code inside Q_ASSERT has side-effects but won't be built in release mode [-Wclazy-assert-with-side-effects]
+main.cpp:49:18: warning: Code inside Q_ASSERT has side-effects but won't be built in release mode [-Wclazy-assert-with-side-effects]