summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMalcolm Parsons <malcolm.parsons@gmail.com>2017-01-04 17:33:55 +0000
committerMalcolm Parsons <malcolm.parsons@gmail.com>2017-01-04 17:33:55 +0000
commit9e7c3af789b532b90168c8e627290a1fead683bb (patch)
tree2960d1dc174e566b6413d848c2a8cec15396624f
parenta7cbf92d44cdd5ab8168e15861bda82642e56e07 (diff)
[clang-tidy] Ignore default arguments in modernize-default-member-init
Summary: Default member initializers cannot refer to constructor parameters, but modernize-default-member-init was trying to when the default constructor had default arguments. Change the check to ignore default arguments to the default constructor. Fixes PR31524. Reviewers: alexfh, aaron.ballman Subscribers: cfe-commits, JDevlieghere, Eugene.Zelenko Differential Revision: https://reviews.llvm.org/D28287 git-svn-id: https://llvm.org/svn/llvm-project/clang-tools-extra/trunk@290972 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--clang-tidy/modernize/UseDefaultMemberInitCheck.cpp2
-rw-r--r--test/clang-tidy/modernize-use-default-member-init.cpp6
2 files changed, 7 insertions, 1 deletions
diff --git a/clang-tidy/modernize/UseDefaultMemberInitCheck.cpp b/clang-tidy/modernize/UseDefaultMemberInitCheck.cpp
index c8e92043..d0d4c657 100644
--- a/clang-tidy/modernize/UseDefaultMemberInitCheck.cpp
+++ b/clang-tidy/modernize/UseDefaultMemberInitCheck.cpp
@@ -158,7 +158,7 @@ void UseDefaultMemberInitCheck::registerMatchers(MatchFinder *Finder) {
unaryOperator(anyOf(hasOperatorName("+"), hasOperatorName("-")),
hasUnaryOperand(floatLiteral())),
cxxBoolLiteral(), cxxNullPtrLiteralExpr(), implicitValueInitExpr(),
- declRefExpr());
+ declRefExpr(to(enumConstantDecl())));
Finder->addMatcher(
cxxConstructorDecl(
diff --git a/test/clang-tidy/modernize-use-default-member-init.cpp b/test/clang-tidy/modernize-use-default-member-init.cpp
index 5844cdff..febcce51 100644
--- a/test/clang-tidy/modernize-use-default-member-init.cpp
+++ b/test/clang-tidy/modernize-use-default-member-init.cpp
@@ -221,6 +221,12 @@ struct NegativeNotDefaultInt
int i;
};
+struct NegativeDefaultArg
+{
+ NegativeDefaultArg(int i = 4) : i(i) {}
+ int i;
+};
+
struct ExistingChar {
ExistingChar(short) : e1(), e2(), e3(), e4() {}
// CHECK-MESSAGES: :[[@LINE-1]]:25: warning: member initializer for 'e1' is redundant [modernize-use-default-member-init]