diff options
Diffstat (limited to 'tests/wrong-qevent-cast/main.cpp')
-rw-r--r-- | tests/wrong-qevent-cast/main.cpp | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/tests/wrong-qevent-cast/main.cpp b/tests/wrong-qevent-cast/main.cpp new file mode 100644 index 00000000..a212c6cd --- /dev/null +++ b/tests/wrong-qevent-cast/main.cpp @@ -0,0 +1,41 @@ +#include <QtCore/QObject> +#include <QtCore/QString> +#include <QtCore/QEvent> +#include <QtGui/QKeyEvent> + +void test(QEvent *ev) +{ + + switch (ev->type()) { + case QEvent::MouseMove: { + auto a = static_cast<QKeyEvent*>(ev); // Warn + auto b = static_cast<QMouseEvent*>(ev); // OK + break; + } + case QEvent::KeyPress: { + auto a = static_cast<QKeyEvent*>(ev); // OK + auto b = static_cast<QMouseEvent*>(ev); // Warn + + int val = 0; + switch (val) { // unrelated switch + case 1000: { + auto a = static_cast<QKeyEvent*>(ev); // OK + auto b = static_cast<QMouseEvent*>(ev); // Warn + } + } + break; + } + + case QEvent::Paint: + case QEvent::MetaCall: { + if (ev->type() == QEvent::Paint) + auto pe = static_cast<QPaintEvent*>(ev); // OK + break; + } + + default: + break; + } + + +} |