[PATCH] D26750: [clang-tidy] Add modernize-use-default-member-init check
Alexander Kornienko via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Tue Dec 13 08:15:46 PST 2016
alexfh added inline comments.
================
Comment at: clang-tidy/modernize/UseDefaultMemberInitCheck.cpp:21
+
+static StringRef getValueInit(const CXXCtorInitializer *Init) {
+ switch (Init->getInit()->getType()->getScalarTypeKind()) {
----------------
The function name doesn't make it clear that the value is returned for zero-initialization.
================
Comment at: clang-tidy/modernize/UseDefaultMemberInitCheck.cpp:137
+ isDefaultConstructor(),
+ unless(ast_matchers::isTemplateInstantiation()),
+ forEachConstructorInitializer(allOf(
----------------
`isInTemplateInstantiation()` is usually a better choice, since it also checks for ancestors being templates.
================
Comment at: clang-tidy/modernize/UseDefaultMemberInitCheck.cpp:157-161
+ const auto *Default = Result.Nodes.getNodeAs<CXXCtorInitializer>("default");
+ const auto *Existing = Result.Nodes.getNodeAs<CXXCtorInitializer>("existing");
+
+ if (Default)
+ checkDefaultInit(Result, Default);
----------------
This is a more common way to do this in LLVM:
```
if (const auto *Default = Result.Nodes.getNodeAs<...>("default"))
checkDefaultInit(Result, Default);
else if (const auto *Existing = ...)
checkExistingInit(...);
else
llvm_unreachable(...);
```
================
Comment at: docs/clang-tidy/checks/modernize-use-default-member-init.rst:29
+
+.. note::
+ Only converts member initializers for built-in types, enums and pointers.
----------------
Is an empty line needed after this?
https://reviews.llvm.org/D26750
More information about the cfe-commits
mailing list