This revision was automatically updated to reflect the committed changes. Closed by commit rL348341: Fix a false positive in misplaced-widening-cast (authored by JonasToth, committed by ). Herald added a subscriber: llvm-commits.
Changed prior to commit: https://reviews.llvm.org/D55255?vs=176604&id=176769#toc Repository: rL LLVM CHANGES SINCE LAST ACTION https://reviews.llvm.org/D55255/new/ https://reviews.llvm.org/D55255 Files: clang-tools-extra/trunk/clang-tidy/bugprone/MisplacedWideningCastCheck.cpp clang-tools-extra/trunk/test/clang-tidy/bugprone-misplaced-widening-cast-explicit-only.cpp Index: clang-tools-extra/trunk/clang-tidy/bugprone/MisplacedWideningCastCheck.cpp =================================================================== --- clang-tools-extra/trunk/clang-tidy/bugprone/MisplacedWideningCastCheck.cpp +++ clang-tools-extra/trunk/clang-tidy/bugprone/MisplacedWideningCastCheck.cpp @@ -213,8 +213,9 @@ dyn_cast<BuiltinType>(CastType->getUnqualifiedDesugaredType()); const auto *CalcBuiltinType = dyn_cast<BuiltinType>(CalcType->getUnqualifiedDesugaredType()); - if (CastBuiltinType && CalcBuiltinType && - !isFirstWider(CastBuiltinType->getKind(), CalcBuiltinType->getKind())) + if (!CastBuiltinType || !CalcBuiltinType) + return; + if (!isFirstWider(CastBuiltinType->getKind(), CalcBuiltinType->getKind())) return; } Index: clang-tools-extra/trunk/test/clang-tidy/bugprone-misplaced-widening-cast-explicit-only.cpp =================================================================== --- clang-tools-extra/trunk/test/clang-tidy/bugprone-misplaced-widening-cast-explicit-only.cpp +++ clang-tools-extra/trunk/test/clang-tidy/bugprone-misplaced-widening-cast-explicit-only.cpp @@ -62,3 +62,21 @@ 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); +}
Index: clang-tools-extra/trunk/clang-tidy/bugprone/MisplacedWideningCastCheck.cpp =================================================================== --- clang-tools-extra/trunk/clang-tidy/bugprone/MisplacedWideningCastCheck.cpp +++ clang-tools-extra/trunk/clang-tidy/bugprone/MisplacedWideningCastCheck.cpp @@ -213,8 +213,9 @@ dyn_cast<BuiltinType>(CastType->getUnqualifiedDesugaredType()); const auto *CalcBuiltinType = dyn_cast<BuiltinType>(CalcType->getUnqualifiedDesugaredType()); - if (CastBuiltinType && CalcBuiltinType && - !isFirstWider(CastBuiltinType->getKind(), CalcBuiltinType->getKind())) + if (!CastBuiltinType || !CalcBuiltinType) + return; + if (!isFirstWider(CastBuiltinType->getKind(), CalcBuiltinType->getKind())) return; } Index: clang-tools-extra/trunk/test/clang-tidy/bugprone-misplaced-widening-cast-explicit-only.cpp =================================================================== --- clang-tools-extra/trunk/test/clang-tidy/bugprone-misplaced-widening-cast-explicit-only.cpp +++ clang-tools-extra/trunk/test/clang-tidy/bugprone-misplaced-widening-cast-explicit-only.cpp @@ -62,3 +62,21 @@ 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); +}
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits