[PATCH] D63128: Fixed google-readability-casting test to work in c++17

Dmitri Gribenko via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Tue Jun 11 03:57:06 PDT 2019


This revision was automatically updated to reflect the committed changes.
Closed by commit rL363047: Fixed google-readability-casting test to work in c++17 (authored by gribozavr, committed by ).
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.

Changed prior to commit:
  https://reviews.llvm.org/D63128?vs=204002&id=204008#toc

Repository:
  rL LLVM

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D63128/new/

https://reviews.llvm.org/D63128

Files:
  clang-tools-extra/trunk/clang-tidy/google/AvoidCStyleCastsCheck.cpp
  clang-tools-extra/trunk/test/clang-tidy/google-readability-casting.cpp


Index: clang-tools-extra/trunk/test/clang-tidy/google-readability-casting.cpp
===================================================================
--- clang-tools-extra/trunk/test/clang-tidy/google-readability-casting.cpp
+++ clang-tools-extra/trunk/test/clang-tidy/google-readability-casting.cpp
@@ -1,4 +1,4 @@
-// RUN: %check_clang_tidy -std=c++11,c++14 %s google-readability-casting %t
+// RUN: %check_clang_tidy -std=c++11-or-later %s google-readability-casting %t
 // FIXME: Fix the checker to work in C++17 mode.
 
 bool g() { return false; }
Index: clang-tools-extra/trunk/clang-tidy/google/AvoidCStyleCastsCheck.cpp
===================================================================
--- clang-tools-extra/trunk/clang-tidy/google/AvoidCStyleCastsCheck.cpp
+++ clang-tools-extra/trunk/clang-tidy/google/AvoidCStyleCastsCheck.cpp
@@ -86,6 +86,10 @@
   bool FnToFnCast =
       isFunction(SourceTypeAsWritten) && isFunction(DestTypeAsWritten);
 
+  const bool ConstructorCast = !CastExpr->getTypeAsWritten().hasQualifiers() &&
+      DestTypeAsWritten->isRecordType() &&
+      !DestTypeAsWritten->isElaboratedTypeSpecifier();
+
   if (CastExpr->getCastKind() == CK_NoOp && !FnToFnCast) {
     // Function pointer/reference casts may be needed to resolve ambiguities in
     // case of overloaded functions, so detection of redundant casts is trickier
@@ -144,19 +148,19 @@
     Diag << CastType;
     ReplaceWithCast((CastType + "<" + DestTypeString + ">").str());
   };
-
+  auto ReplaceWithConstructorCall = [&]() {
+    Diag << "constructor call syntax";
+    // FIXME: Validate DestTypeString, maybe.
+    ReplaceWithCast(DestTypeString.str());
+  };
   // Suggest appropriate C++ cast. See [expr.cast] for cast notation semantics.
   switch (CastExpr->getCastKind()) {
   case CK_FunctionToPointerDecay:
     ReplaceWithNamedCast("static_cast");
     return;
   case CK_ConstructorConversion:
-    if (!CastExpr->getTypeAsWritten().hasQualifiers() &&
-        DestTypeAsWritten->isRecordType() &&
-        !DestTypeAsWritten->isElaboratedTypeSpecifier()) {
-      Diag << "constructor call syntax";
-      // FIXME: Validate DestTypeString, maybe.
-      ReplaceWithCast(DestTypeString.str());
+    if (ConstructorCast) {
+      ReplaceWithConstructorCall();
     } else {
       ReplaceWithNamedCast("static_cast");
     }
@@ -176,6 +180,10 @@
       ReplaceWithNamedCast("const_cast");
       return;
     }
+    if (ConstructorCast) {
+      ReplaceWithConstructorCall();
+      return;
+    }
     if (DestType->isReferenceType()) {
       QualType Dest = DestType.getNonReferenceType();
       QualType Source = SourceType.getNonReferenceType();


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D63128.204008.patch
Type: text/x-patch
Size: 2662 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20190611/b7fc6455/attachment-0001.bin>


More information about the cfe-commits mailing list