[clang-tools-extra] r215799 - AvoidCStyleCastsCheck: don't warn on casts in macros
Alexander Kornienko
alexfh at google.com
Fri Aug 15 17:53:20 PDT 2014
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
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 };
More information about the cfe-commits
mailing list