[PATCH] D30592: [clang-tidy] Fix diag message for catch-by-value

Alexander Kornienko via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Thu Mar 23 08:30:03 PDT 2017


This revision was automatically updated to reflect the committed changes.
Closed by commit rL298608: [clang-tidy] Fix diag message for catch-by-value (authored by alexfh).

Changed prior to commit:
  https://reviews.llvm.org/D30592?vs=90572&id=92805#toc

Repository:
  rL LLVM

https://reviews.llvm.org/D30592

Files:
  clang-tools-extra/trunk/clang-tidy/misc/ThrowByValueCatchByReferenceCheck.cpp
  clang-tools-extra/trunk/test/clang-tidy/misc-throw-by-value-catch-by-reference.cpp


Index: clang-tools-extra/trunk/test/clang-tidy/misc-throw-by-value-catch-by-reference.cpp
===================================================================
--- clang-tools-extra/trunk/test/clang-tidy/misc-throw-by-value-catch-by-reference.cpp
+++ clang-tools-extra/trunk/test/clang-tidy/misc-throw-by-value-catch-by-reference.cpp
@@ -62,7 +62,7 @@
   try {
     testThrowFunc();
   } catch (logic_error e) {
-    // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: catch handler catches a pointer value; should throw a non-pointer value and catch by reference instead [misc-throw-by-value-catch-by-reference]
+    // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: catch handler catches by value; should catch by reference instead [misc-throw-by-value-catch-by-reference]
   }
 }
 
Index: clang-tools-extra/trunk/clang-tidy/misc/ThrowByValueCatchByReferenceCheck.cpp
===================================================================
--- clang-tools-extra/trunk/clang-tidy/misc/ThrowByValueCatchByReferenceCheck.cpp
+++ clang-tools-extra/trunk/clang-tidy/misc/ThrowByValueCatchByReferenceCheck.cpp
@@ -131,22 +131,24 @@
 
 void ThrowByValueCatchByReferenceCheck::diagnoseCatchLocations(
     const CXXCatchStmt *catchStmt, ASTContext &context) {
-  const char *diagMsgCatchReference = "catch handler catches a pointer value; "
-                                      "should throw a non-pointer value and "
-                                      "catch by reference instead";
   if (!catchStmt)
     return;
   auto caughtType = catchStmt->getCaughtType();
   if (caughtType.isNull())
     return;
   auto *varDecl = catchStmt->getExceptionDecl();
   if (const auto *PT = caughtType.getCanonicalType()->getAs<PointerType>()) {
+    const char *diagMsgCatchReference = "catch handler catches a pointer value; "
+                                        "should throw a non-pointer value and "
+                                        "catch by reference instead";
     // We do not diagnose when catching pointer to strings since we also allow
     // throwing string literals.
     if (!PT->getPointeeType()->isAnyCharacterType())
       diag(varDecl->getLocStart(), diagMsgCatchReference);
   } else if (!caughtType->isReferenceType()) {
-    // If it's not a pointer and not a reference then it must be thrown "by
+    const char *diagMsgCatchReference = "catch handler catches by value; "
+                                        "should catch by reference instead";
+    // If it's not a pointer and not a reference then it must be caught "by
     // value". In this case we should emit a diagnosis message unless the type
     // is trivial.
     if (!caughtType.isTrivialType(context))


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D30592.92805.patch
Type: text/x-patch
Size: 2680 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20170323/a4bee82a/attachment-0001.bin>


More information about the cfe-commits mailing list