forked from OSchip/llvm-project
[clang-tidy] Ignore blank spaces between cast's ")" and its sub expr.
Summary: Before the change: `auto i = (Enum) 5;` => `auto i = static_cast<Enum>( 5);` After the change: `auto i = (Enum) 5;` => `auto i = static_cast<Enum>(5);` Reviewers: alexfh Reviewed By: alexfh Subscribers: JDevlieghere, xazax.hun, cfe-commits Differential Revision: https://reviews.llvm.org/D31700 llvm-svn: 307812
This commit is contained in:
parent
6f92d2dd24
commit
a9a1b403bc
|
@ -58,10 +58,9 @@ static bool pointedUnqualifiedTypesAreEqual(QualType T1, QualType T2) {
|
|||
|
||||
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())
|
||||
if (CastExpr->getExprLoc().isMacroID())
|
||||
return;
|
||||
|
||||
// Casting to void is an idiomatic way to mute "unused variable" and similar
|
||||
|
@ -82,6 +81,9 @@ void AvoidCStyleCastsCheck::check(const MatchFinder::MatchResult &Result) {
|
|||
const QualType SourceType = SourceTypeAsWritten.getCanonicalType();
|
||||
const QualType DestType = DestTypeAsWritten.getCanonicalType();
|
||||
|
||||
auto ReplaceRange = CharSourceRange::getCharRange(
|
||||
CastExpr->getLParenLoc(), CastExpr->getSubExprAsWritten()->getLocStart());
|
||||
|
||||
bool FnToFnCast =
|
||||
isFunction(SourceTypeAsWritten) && isFunction(DestTypeAsWritten);
|
||||
|
||||
|
@ -92,7 +94,7 @@ void AvoidCStyleCastsCheck::check(const MatchFinder::MatchResult &Result) {
|
|||
// pointer/reference types.
|
||||
if (SourceTypeAsWritten == DestTypeAsWritten) {
|
||||
diag(CastExpr->getLocStart(), "redundant cast to the same type")
|
||||
<< FixItHint::CreateRemoval(ParenRange);
|
||||
<< FixItHint::CreateRemoval(ReplaceRange);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -136,7 +138,7 @@ void AvoidCStyleCastsCheck::check(const MatchFinder::MatchResult &Result) {
|
|||
getLangOpts()),
|
||||
")");
|
||||
}
|
||||
Diag << FixItHint::CreateReplacement(ParenRange, CastText);
|
||||
Diag << FixItHint::CreateReplacement(ReplaceRange, CastText);
|
||||
};
|
||||
auto ReplaceWithNamedCast = [&](StringRef CastType) {
|
||||
Diag << CastType;
|
||||
|
|
|
@ -85,6 +85,22 @@ void f(int a, double b, const char *cpc, const void *cpv, X *pX) {
|
|||
// CHECK-MESSAGES: :[[@LINE-1]]:8: warning: {{.*}}; use static_cast/const_cast/reinterpret_cast [
|
||||
// CHECK-FIXES: b1 = (const int&)b;
|
||||
|
||||
b1 = (int) b;
|
||||
// CHECK-MESSAGES: :[[@LINE-1]]:8: warning: {{.*}}; use static_cast {{.*}}
|
||||
// CHECK-FIXES: b1 = static_cast<int>(b);
|
||||
|
||||
b1 = (int) b;
|
||||
// CHECK-MESSAGES: :[[@LINE-1]]:8: warning: {{.*}}; use static_cast {{.*}}
|
||||
// CHECK-FIXES: b1 = static_cast<int>(b);
|
||||
|
||||
b1 = (int) (b);
|
||||
// CHECK-MESSAGES: :[[@LINE-1]]:8: warning: {{.*}}; use static_cast {{.*}}
|
||||
// CHECK-FIXES: b1 = static_cast<int>(b);
|
||||
|
||||
b1 = (int) (b);
|
||||
// CHECK-MESSAGES: :[[@LINE-1]]:8: warning: {{.*}}; use static_cast {{.*}}
|
||||
// CHECK-FIXES: b1 = static_cast<int>(b);
|
||||
|
||||
Y *pB = (Y*)pX;
|
||||
// CHECK-MESSAGES: :[[@LINE-1]]:11: warning: {{.*}}; use static_cast/const_cast/reinterpret_cast [
|
||||
Y &rB = (Y&)*pX;
|
||||
|
@ -114,6 +130,14 @@ void f(int a, double b, const char *cpc, const void *cpv, X *pX) {
|
|||
// CHECK-MESSAGES: :[[@LINE-1]]:7: warning: redundant cast to the same type
|
||||
// CHECK-FIXES: {{^}} e = e;
|
||||
|
||||
e = (Enum) e;
|
||||
// CHECK-MESSAGES: :[[@LINE-1]]:7: warning: redundant cast to the same type
|
||||
// CHECK-FIXES: {{^}} e = e;
|
||||
|
||||
e = (Enum) (e);
|
||||
// CHECK-MESSAGES: :[[@LINE-1]]:7: warning: redundant cast to the same type
|
||||
// CHECK-FIXES: {{^}} e = (e);
|
||||
|
||||
static const int kZero = 0;
|
||||
(int)kZero;
|
||||
// CHECK-MESSAGES: :[[@LINE-1]]:3: warning: redundant cast to the same type
|
||||
|
|
Loading…
Reference in New Issue