Index: clang-tidy/bugprone/MisplacedWideningCastCheck.cpp =================================================================== --- clang-tidy/bugprone/MisplacedWideningCastCheck.cpp +++ clang-tidy/bugprone/MisplacedWideningCastCheck.cpp @@ -213,8 +213,9 @@ dyn_cast(CastType->getUnqualifiedDesugaredType()); const auto *CalcBuiltinType = dyn_cast(CalcType->getUnqualifiedDesugaredType()); - if (CastBuiltinType && CalcBuiltinType && - !isFirstWider(CastBuiltinType->getKind(), CalcBuiltinType->getKind())) + if (!CastBuiltinType || !CalcBuiltinType) + return; + if (!isFirstWider(CastBuiltinType->getKind(), CalcBuiltinType->getKind())) return; } Index: test/clang-tidy/bugprone-misplaced-widening-cast-explicit-only.cpp =================================================================== --- test/clang-tidy/bugprone-misplaced-widening-cast-explicit-only.cpp +++ test/clang-tidy/bugprone-misplaced-widening-cast-explicit-only.cpp @@ -62,3 +62,29 @@ enum Type {}; static char *m_fn1() { char p = (Type)(&p - m_fn1()); } }; + +enum DaysEnum{ +MON = 0, +TUE = 1, +WED = 2, +THR = 3, +FRI = 4, +SAT = 5, +SUN = 6 +}; + +//do not warn for int to enum casts +DaysEnum nextDay(DaysEnum day){ + if (day < SUN) + day = (DaysEnum)(day + 1); + return day; +} + +//do not warn for int to enum casts +DaysEnum nextDay_cpp(DaysEnum day){ + if (day < SUN) + day = static_cast(day + 1); + return day; +} + +