Author: courbet
Date: Thu Dec 22 08:12:31 2016
New Revision: 290340

URL: http://llvm.org/viewvc/llvm-project?rev=290340&view=rev
Log:
[clang-tidy] cppcoreguidelines-slicing: display discarded state size in bytes

https://reviews.llvm.org/D27212

Modified:
    clang-tools-extra/trunk/clang-tidy/cppcoreguidelines/SlicingCheck.cpp
    clang-tools-extra/trunk/test/clang-tidy/cppcoreguidelines-slicing.cpp

Modified: clang-tools-extra/trunk/clang-tidy/cppcoreguidelines/SlicingCheck.cpp
URL: 
http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/cppcoreguidelines/SlicingCheck.cpp?rev=290340&r1=290339&r2=290340&view=diff
==============================================================================
--- clang-tools-extra/trunk/clang-tidy/cppcoreguidelines/SlicingCheck.cpp 
(original)
+++ clang-tools-extra/trunk/clang-tidy/cppcoreguidelines/SlicingCheck.cpp Thu 
Dec 22 08:12:31 2016
@@ -122,10 +122,11 @@ void SlicingCheck::check(const MatchFind
       BaseDecl->getASTContext().getASTRecordLayout(BaseDecl);
   const auto &DerivedLayout =
       DerivedDecl->getASTContext().getASTRecordLayout(DerivedDecl);
-  const auto StateSize = DerivedLayout.getDataSize() - 
BaseLayout.getDataSize();
+  const CharUnits StateSize =
+      DerivedLayout.getDataSize() - BaseLayout.getDataSize();
   if (StateSize.isPositive()) {
     diag(Call->getExprLoc(), "slicing object from type %0 to %1 discards "
-                             "%2*sizeof(char) bytes of state")
+                             "%2 bytes of state")
         << DerivedDecl << BaseDecl << 
static_cast<int>(StateSize.getQuantity());
   }
 }

Modified: clang-tools-extra/trunk/test/clang-tidy/cppcoreguidelines-slicing.cpp
URL: 
http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/cppcoreguidelines-slicing.cpp?rev=290340&r1=290339&r2=290340&view=diff
==============================================================================
--- clang-tools-extra/trunk/test/clang-tidy/cppcoreguidelines-slicing.cpp 
(original)
+++ clang-tools-extra/trunk/test/clang-tidy/cppcoreguidelines-slicing.cpp Thu 
Dec 22 08:12:31 2016
@@ -31,18 +31,18 @@ DerivedWithMemberVariables ReturnsDerive
 void positivesWithMemberVariables() {
   DerivedWithMemberVariables b;
   Base a{b};
-  // CHECK-MESSAGES: :[[@LINE-1]]:8: warning: slicing object from type 
'DerivedWithMemberVariables' to 'Base' discards {{[0-9]*}}*sizeof(char) bytes 
of state [cppcoreguidelines-slicing]
+  // CHECK-MESSAGES: :[[@LINE-1]]:8: warning: slicing object from type 
'DerivedWithMemberVariables' to 'Base' discards {{[0-9]*}} bytes of state 
[cppcoreguidelines-slicing]
   a = b;
-  // CHECK-MESSAGES: :[[@LINE-1]]:5: warning: slicing object from type 
'DerivedWithMemberVariables' to 'Base' discards {{[0-9]*}}*sizeof(char) bytes 
of state
+  // CHECK-MESSAGES: :[[@LINE-1]]:5: warning: slicing object from type 
'DerivedWithMemberVariables' to 'Base' discards {{[0-9]*}} bytes of state
   TakesBaseByValue(b);
-  // CHECK-MESSAGES: :[[@LINE-1]]:20: warning: slicing object from type 
'DerivedWithMemberVariables' to 'Base' discards {{[0-9]*}}*sizeof(char) bytes 
of state
+  // CHECK-MESSAGES: :[[@LINE-1]]:20: warning: slicing object from type 
'DerivedWithMemberVariables' to 'Base' discards {{[0-9]*}} bytes of state
 
   TwiceDerivedWithNoMemberVariables c;
   a = c;
-  // CHECK-MESSAGES: :[[@LINE-1]]:5: warning: slicing object from type 
'TwiceDerivedWithNoMemberVariables' to 'Base' discards {{[0-9]*}}*sizeof(char) 
bytes of state
+  // CHECK-MESSAGES: :[[@LINE-1]]:5: warning: slicing object from type 
'TwiceDerivedWithNoMemberVariables' to 'Base' discards {{[0-9]*}} bytes of state
 
   a = ReturnsDerived();
-  // CHECK-MESSAGES: :[[@LINE-1]]:5: warning: slicing object from type 
'DerivedWithMemberVariables' to 'Base' discards {{[0-9]*}}*sizeof(char) bytes 
of state
+  // CHECK-MESSAGES: :[[@LINE-1]]:5: warning: slicing object from type 
'DerivedWithMemberVariables' to 'Base' discards {{[0-9]*}} bytes of state
 }
 
 void positivesWithOverride() {


_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to