[PATCH] D21992: [clang-tidy] new cppcoreguidelines-slicing

Alexander Kornienko via cfe-commits cfe-commits at lists.llvm.org
Tue Jul 19 06:43:05 PDT 2016


alexfh accepted this revision.
alexfh added a comment.
This revision is now accepted and ready to land.

LG with a nit.


================
Comment at: clang-tidy/cppcoreguidelines/SlicingCheck.cpp:86
@@ +85,3 @@
+           "slicing object from type %0 to %1 discards override %2")
+          << &DerivedDecl << &BaseDecl << Method;
+    }
----------------
The "slicing ... discards x bytes of state" message is not going to be repeated for the same location, so it's fine on its own.

Re: the "discards override" messages, they quite infrequent, IIUC, so the risk of spamming people with diagnostics is rather low. In case it's still problematic, we can change the repeated parts to notes.

================
Comment at: clang-tidy/cppcoreguidelines/SlicingCheck.cpp:91
@@ +90,3 @@
+  for (const auto &Base : DerivedDecl.bases()) {
+    const auto *BaseRecordType = Base.getType()->getAs<RecordType>();
+    if (!BaseRecordType)
----------------
Let's make the code more consistent:

```
if (const auto *BaseRecordType = Base.getType()->getAs<RecordType>()) {
  if (const auto *BaseRecord =
        cast_or_null<CXXRecordDecl>(BaseRecordType->getDecl()->getDefinition()))
      DiagnoseSlicedOverriddenMethods(Call, *BaseRecord, BaseDecl);
}
```


https://reviews.llvm.org/D21992





More information about the cfe-commits mailing list