[PATCH] D24339: [clang-tidy] Add check 'readability-redundant-member-init'

Malcolm Parsons via cfe-commits cfe-commits at lists.llvm.org
Thu Sep 8 12:13:47 PDT 2016

malcolm.parsons added a comment.

How do I add FixIt hints?
They should be simple removals, but how do I decide whether to remove the following comma, preceding comma or preceding colon?

Comment at: clang-tidy/readability/RedundantMemberInitCheck.cpp:33
@@ +32,3 @@
+  const auto *Init = Result.Nodes.getNodeAs<CXXCtorInitializer>("init");
+  const auto *Construct = Result.Nodes.getNodeAs<CXXConstructExpr>("construct");
+  const auto arguments = Construct->arguments();
sbenza wrote:
> These construct expressions might actually have side effects that you would not get if you omit them.
> For example, aggregates will be value initialized. If you remove it you change the behavior.
> The tests should include defaulted vs non-defaulted default constructor, user-defined/user-provided/implicit default constructor, aggregates with and without trivially constructible members, etc.
Yes, more tests needed.

Comment at: clang-tidy/readability/RedundantMemberInitCheck.cpp:39
@@ +38,3 @@
+  if (std::find_if(begin(arguments), end(arguments), [](const Expr *expr) {
+        return !expr->isDefaultArgument();
sbenza wrote:
> You want `std::none_of` instead of `std::find_if`.
> (or use `std::any_of` and don't negate the expression in the lambda)
Maybe I only need to check the first argument - if that's defaulted then they all are.

Comment at: docs/clang-tidy/checks/readability-redundant-member-init.rst:6
@@ +5,3 @@
+Finds unnecessary member initializations.                                                                               
sbenza wrote:
> Explain when they are unnecessary.
"Finds member initializations that are unnecessary because the same default constructor would be called if they were not present"



More information about the cfe-commits mailing list