diff options
| -rw-r--r-- | clang-tools-extra/clang-tidy/cppcoreguidelines/SlicingCheck.cpp | 5 | ||||
| -rw-r--r-- | clang-tools-extra/test/clang-tidy/cppcoreguidelines-slicing.cpp | 10 |
2 files changed, 8 insertions, 7 deletions
diff --git a/clang-tools-extra/clang-tidy/cppcoreguidelines/SlicingCheck.cpp b/clang-tools-extra/clang-tidy/cppcoreguidelines/SlicingCheck.cpp index 2a6cf098e69..53b2f728fe4 100644 --- a/clang-tools-extra/clang-tidy/cppcoreguidelines/SlicingCheck.cpp +++ b/clang-tools-extra/clang-tidy/cppcoreguidelines/SlicingCheck.cpp @@ -122,10 +122,11 @@ void SlicingCheck::check(const MatchFinder::MatchResult &Result) { 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()); } } diff --git a/clang-tools-extra/test/clang-tidy/cppcoreguidelines-slicing.cpp b/clang-tools-extra/test/clang-tidy/cppcoreguidelines-slicing.cpp index ca2291c85c7..6856f52f706 100644 --- a/clang-tools-extra/test/clang-tidy/cppcoreguidelines-slicing.cpp +++ b/clang-tools-extra/test/clang-tidy/cppcoreguidelines-slicing.cpp @@ -31,18 +31,18 @@ DerivedWithMemberVariables ReturnsDerived(); 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() { |

