diff options
author | Jonas Toth <jonas.toth@gmail.com> | 2018-12-05 08:29:56 +0000 |
---|---|---|
committer | Jonas Toth <jonas.toth@gmail.com> | 2018-12-05 08:29:56 +0000 |
commit | 5caf183e425ae9cc014005d06b2e172e2bf9dfd6 (patch) | |
tree | f3481bac9400fc371e5990b8cbc6f438dc5e32eb /clang-tools-extra/test | |
parent | 718142bd0dd5d002c78dbbf41d52ee751aad43c4 (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.cpp | 18 |
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); +} |