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 | b744ce87fc48cb60d6c79f00bf8c2959579a2f2f (patch) | |
tree | a09813908a283e2388392b44503fe051faaa1039 | |
parent | 6cfb5caf0550a656bd06ea9faf415ad4b2aa9790 (diff) | |
download | bcm5719-llvm-b744ce87fc48cb60d6c79f00bf8c2959579a2f2f.tar.gz bcm5719-llvm-b744ce87fc48cb60d6c79f00bf8c2959579a2f2f.zip |
[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
llvm-svn: 290972
-rw-r--r-- | clang-tools-extra/clang-tidy/modernize/UseDefaultMemberInitCheck.cpp | 2 | ||||
-rw-r--r-- | clang-tools-extra/test/clang-tidy/modernize-use-default-member-init.cpp | 6 |
2 files changed, 7 insertions, 1 deletions
diff --git a/clang-tools-extra/clang-tidy/modernize/UseDefaultMemberInitCheck.cpp b/clang-tools-extra/clang-tidy/modernize/UseDefaultMemberInitCheck.cpp index c8e92043381..d0d4c657e57 100644 --- a/clang-tools-extra/clang-tidy/modernize/UseDefaultMemberInitCheck.cpp +++ b/clang-tools-extra/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/clang-tools-extra/test/clang-tidy/modernize-use-default-member-init.cpp b/clang-tools-extra/test/clang-tidy/modernize-use-default-member-init.cpp index 5844cdff990..febcce514cb 100644 --- a/clang-tools-extra/test/clang-tidy/modernize-use-default-member-init.cpp +++ b/clang-tools-extra/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] |