summaryrefslogtreecommitdiff
path: root/clang-tools-extra/test
diff options
context:
space:
mode:
authorJonas Toth <jonas.toth@gmail.com>2018-12-05 08:29:56 +0000
committerJonas Toth <jonas.toth@gmail.com>2018-12-05 08:29:56 +0000
commit5caf183e425ae9cc014005d06b2e172e2bf9dfd6 (patch)
treef3481bac9400fc371e5990b8cbc6f438dc5e32eb /clang-tools-extra/test
parent718142bd0dd5d002c78dbbf41d52ee751aad43c4 (diff)
Fix a false positive in misplaced-widening-cast
Summary: bugprone-misplaced-widening-cast check used to give a false warning to the following example. enum DaysEnum{ MON = 0, TUE = 1 }; day = (DaysEnum)(day + 1); //warning: either cast from 'int' to 'DaysEnum' is ineffective... But i think int to enum cast is not widening neither ineffective. Patch by dkrupp. Reviewers: JonasToth, alexfh Reviewed By: alexfh Subscribers: rnkovacs, Szelethus, gamesh411, cfe-commits Tags: #clang-tools-extra Differential Revision: https://reviews.llvm.org/D55255
Diffstat (limited to 'clang-tools-extra/test')
-rw-r--r--clang-tools-extra/test/clang-tidy/bugprone-misplaced-widening-cast-explicit-only.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/clang-tools-extra/test/clang-tidy/bugprone-misplaced-widening-cast-explicit-only.cpp b/clang-tools-extra/test/clang-tidy/bugprone-misplaced-widening-cast-explicit-only.cpp
index be12614a103..ed2fd4094f2 100644
--- a/clang-tools-extra/test/clang-tidy/bugprone-misplaced-widening-cast-explicit-only.cpp
+++ b/clang-tools-extra/test/clang-tidy/bugprone-misplaced-widening-cast-explicit-only.cpp
@@ -62,3 +62,21 @@ template <class> class A {
enum Type {};
static char *m_fn1() { char p = (Type)(&p - m_fn1()); }
};
+
+enum DaysEnum {
+ MON,
+ TUE,
+ WED,
+ THR,
+ FRI,
+ SAT,
+ SUN
+};
+
+// Do not warn for int to enum casts.
+void nextDay(DaysEnum day) {
+ if (day < SUN)
+ day = (DaysEnum)(day + 1);
+ if (day < SUN)
+ day = static_cast<DaysEnum>(day + 1);
+}