diff options
author | Sergio Martins <smartins@kde.org> | 2018-02-24 17:00:51 +0000 |
---|---|---|
committer | Sergio Martins <smartins@kde.org> | 2018-02-24 17:04:32 +0000 |
commit | 044c1dfdb92bc680c7b70084d5fe3f33137a9cae (patch) | |
tree | f31549c063e5584abd483ebe020f129f88d31b15 /tests/unneeded-cast | |
parent | 46c9af032c56687c944c19b2d6ff485b1869c21d (diff) |
Rename bogus-dynamic-cast to unneeded-cast
Preparing to warn for qobject_casts too.
Diffstat (limited to 'tests/unneeded-cast')
-rw-r--r-- | tests/unneeded-cast/config.json | 14 | ||||
-rw-r--r-- | tests/unneeded-cast/main.cpp | 46 | ||||
-rw-r--r-- | tests/unneeded-cast/main.cpp.expected | 6 | ||||
-rw-r--r-- | tests/unneeded-cast/qobjectcast.cpp | 8 | ||||
-rw-r--r-- | tests/unneeded-cast/qobjectcast.cpp.expected | 1 |
5 files changed, 75 insertions, 0 deletions
diff --git a/tests/unneeded-cast/config.json b/tests/unneeded-cast/config.json new file mode 100644 index 00000000..cf5fbd5e --- /dev/null +++ b/tests/unneeded-cast/config.json @@ -0,0 +1,14 @@ +{ + "tests" : [ + { + "filename" : "main.cpp" + }, + { + "filename" : "qobjectcast.cpp", + "env" : + { + "CLAZY_EXTRA_OPTIONS" : "unneeded-cast-qobject" + } + } + ] +} diff --git a/tests/unneeded-cast/main.cpp b/tests/unneeded-cast/main.cpp new file mode 100644 index 00000000..bca5b416 --- /dev/null +++ b/tests/unneeded-cast/main.cpp @@ -0,0 +1,46 @@ +#include <QtCore/QObject> + + + + + + + + + + + + + + + +struct A +{ + virtual void foo() { } +}; + +struct B : public A +{ + +}; + +void test() +{ + A *a = new A(); + B *b = new B(); + + dynamic_cast<A*>(b); // warning: Casting to base + dynamic_cast<A*>(a); // warning: Casting to itself + dynamic_cast<B*>(a); // OK + dynamic_cast<B*>(b); // warning: Casting to itself +} + +class MyObj : public QObject +{ +public: +}; + +void testQObjectCast(QObject *o) +{ + dynamic_cast<MyObj*>(o); // OK +} diff --git a/tests/unneeded-cast/main.cpp.expected b/tests/unneeded-cast/main.cpp.expected new file mode 100644 index 00000000..44ee4318 --- /dev/null +++ b/tests/unneeded-cast/main.cpp.expected @@ -0,0 +1,6 @@ +unneeded-cast/main.cpp:32:5: warning: explicitly casting to base is unnecessary [-Wclazy-unneeded-cast] + dynamic_cast<A*>(b); // warning: Casting to base +unneeded-cast/main.cpp:33:5: warning: Casting to itself [-Wclazy-unneeded-cast] + dynamic_cast<A*>(a); // warning: Casting to itself +unneeded-cast/main.cpp:35:5: warning: Casting to itself [-Wclazy-unneeded-cast] + dynamic_cast<B*>(b); // warning: Casting to itself diff --git a/tests/unneeded-cast/qobjectcast.cpp b/tests/unneeded-cast/qobjectcast.cpp new file mode 100644 index 00000000..11e0ed62 --- /dev/null +++ b/tests/unneeded-cast/qobjectcast.cpp @@ -0,0 +1,8 @@ +#include <QtCore/QObject> + +struct MyObj : public QObject {}; + +void testQObjectCast(QObject *o) +{ + dynamic_cast<MyObj*>(o); // Warn +} diff --git a/tests/unneeded-cast/qobjectcast.cpp.expected b/tests/unneeded-cast/qobjectcast.cpp.expected new file mode 100644 index 00000000..ba0b86e0 --- /dev/null +++ b/tests/unneeded-cast/qobjectcast.cpp.expected @@ -0,0 +1 @@ +unneeded-cast/qobjectcast.cpp:7:5: warning: Use qobject_cast rather than dynamic_cast [-Wclazy-unneeded-cast] |