diff options
| author | Malcolm Parsons <malcolm.parsons@gmail.com> | 2017-01-04 17:33:55 +0000 |
|---|---|---|
| committer | Malcolm Parsons <malcolm.parsons@gmail.com> | 2017-01-04 17:33:55 +0000 |
| commit | 9e7c3af789b532b90168c8e627290a1fead683bb (patch) | |
| tree | 2960d1dc174e566b6413d848c2a8cec15396624f | |
| parent | a7cbf92d44cdd5ab8168e15861bda82642e56e07 (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.cpp | 2 | ||||
| -rw-r--r-- | test/clang-tidy/modernize-use-default-member-init.cpp | 6 |
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] |
