On Fri, Aug 15, 2014 at 5:53 PM, Alexander Kornienko <[email protected]> wrote: > Author: alexfh > Date: Fri Aug 15 19:53:20 2014 > New Revision: 215799 > > URL: http://llvm.org/viewvc/llvm-project?rev=215799&view=rev > Log: > AvoidCStyleCastsCheck: don't warn on casts in macros
What's the particular justification? c-style casts, even hidden in macros, seem like they'd still be a bit subtle/surprising/etc. > > Modified: > clang-tools-extra/trunk/clang-tidy/google/AvoidCStyleCastsCheck.cpp > clang-tools-extra/trunk/test/clang-tidy/avoid-c-style-casts.cpp > > Modified: clang-tools-extra/trunk/clang-tidy/google/AvoidCStyleCastsCheck.cpp > URL: > http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/google/AvoidCStyleCastsCheck.cpp?rev=215799&r1=215798&r2=215799&view=diff > ============================================================================== > --- clang-tools-extra/trunk/clang-tidy/google/AvoidCStyleCastsCheck.cpp > (original) > +++ clang-tools-extra/trunk/clang-tidy/google/AvoidCStyleCastsCheck.cpp Fri > Aug 15 19:53:20 2014 > @@ -60,6 +60,12 @@ bool pointedTypesAreEqual(QualType Sourc > void AvoidCStyleCastsCheck::check(const MatchFinder::MatchResult &Result) { > const auto *CastExpr = Result.Nodes.getNodeAs<CStyleCastExpr>("cast"); > > + auto ParenRange = CharSourceRange::getTokenRange(CastExpr->getLParenLoc(), > + CastExpr->getRParenLoc()); > + // Ignore casts in macros. > + if (ParenRange.getBegin().isMacroID() || ParenRange.getEnd().isMacroID()) > + return; > + > // Casting to void is an idiomatic way to mute "unused variable" and > similar > // warnings. > if (CastExpr->getTypeAsWritten()->isVoidType()) > @@ -69,8 +75,6 @@ void AvoidCStyleCastsCheck::check(const > CastExpr->getSubExprAsWritten()->getType().getCanonicalType(); > QualType DestType = CastExpr->getTypeAsWritten().getCanonicalType(); > > - auto ParenRange = CharSourceRange::getTokenRange(CastExpr->getLParenLoc(), > - CastExpr->getRParenLoc()); > if (SourceType == DestType) { > diag(CastExpr->getLocStart(), "Redundant cast to the same type.") > << FixItHint::CreateRemoval(ParenRange); > @@ -84,8 +88,6 @@ void AvoidCStyleCastsCheck::check(const > > auto ReplaceWithCast = [&](StringRef CastType) { > diag_builder << ("Use " + CastType + ".").str(); > - if (ParenRange.getBegin().isMacroID() || ParenRange.getEnd().isMacroID()) > - return; > > const Expr *SubExpr = CastExpr->getSubExprAsWritten()->IgnoreImpCasts(); > std::string CastText = (CastType + "<" + DestTypeString + ">").str(); > > Modified: clang-tools-extra/trunk/test/clang-tidy/avoid-c-style-casts.cpp > URL: > http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/avoid-c-style-casts.cpp?rev=215799&r1=215798&r2=215799&view=diff > ============================================================================== > --- clang-tools-extra/trunk/test/clang-tidy/avoid-c-style-casts.cpp (original) > +++ clang-tools-extra/trunk/test/clang-tidy/avoid-c-style-casts.cpp Fri Aug > 15 19:53:20 2014 > @@ -105,9 +105,6 @@ void test_templates() { > #define CAST(type, value) (type)(value) > void macros(double d) { > int i = CAST(int, d); > - // CHECK-MESSAGES: :[[@LINE-1]]:11: warning: C-style casts are > discouraged. Use static_cast. > - // CHECK-FIXES: #define CAST(type, value) (type)(value) > - // CHECK-FIXES: int i = CAST(int, d); > } > > enum E { E1 = 1 }; > > > _______________________________________________ > cfe-commits mailing list > [email protected] > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
