diff options
| author | Felix Berger <flx@google.com> | 2016-05-03 01:41:19 +0000 |
|---|---|---|
| committer | Felix Berger <flx@google.com> | 2016-05-03 01:41:19 +0000 |
| commit | b6947a58473f85cdee708d37649fed793ce49025 (patch) | |
| tree | 413d30681044e969c1f368fce948a1f156284d88 | |
| parent | 92fbd8df15b5ba7f624c1f24e785c71ae9e71ef3 (diff) | |
| download | bcm5719-llvm-b6947a58473f85cdee708d37649fed793ce49025.tar.gz bcm5719-llvm-b6947a58473f85cdee708d37649fed793ce49025.zip | |
[clang-tidy] ProTypeMemberInitCheck - check that field decls do not have in-class initializer.
Reviewers: alexfh, JVApen, aaron.ballman
Subscribers: flx, aaron.ballman, cfe-commits
Differential Revision: http://reviews.llvm.org/D18300
llvm-svn: 268352
| -rw-r--r-- | clang-tools-extra/clang-tidy/cppcoreguidelines/ProTypeMemberInitCheck.cpp | 2 | ||||
| -rw-r--r-- | clang-tools-extra/test/clang-tidy/cppcoreguidelines-pro-type-member-init.cpp | 8 |
2 files changed, 10 insertions, 0 deletions
diff --git a/clang-tools-extra/clang-tidy/cppcoreguidelines/ProTypeMemberInitCheck.cpp b/clang-tools-extra/clang-tidy/cppcoreguidelines/ProTypeMemberInitCheck.cpp index eabadd89a9b..9ba8bd902d7 100644 --- a/clang-tools-extra/clang-tidy/cppcoreguidelines/ProTypeMemberInitCheck.cpp +++ b/clang-tools-extra/clang-tidy/cppcoreguidelines/ProTypeMemberInitCheck.cpp @@ -31,6 +31,8 @@ void fieldsRequiringInit(const RecordDecl::field_range &Fields, ASTContext &Context, SmallPtrSetImpl<const FieldDecl *> &FieldsToInit) { for (const FieldDecl *F : Fields) { + if (F->hasInClassInitializer()) + continue; QualType Type = F->getType(); if (!F->hasInClassInitializer() && type_traits::isTriviallyDefaultConstructible(Type, Context)) diff --git a/clang-tools-extra/test/clang-tidy/cppcoreguidelines-pro-type-member-init.cpp b/clang-tools-extra/test/clang-tidy/cppcoreguidelines-pro-type-member-init.cpp index b95f1588f97..4cda3a43da5 100644 --- a/clang-tools-extra/test/clang-tidy/cppcoreguidelines-pro-type-member-init.cpp +++ b/clang-tools-extra/test/clang-tidy/cppcoreguidelines-pro-type-member-init.cpp @@ -85,6 +85,14 @@ struct NegativeInitializedInBody { int I; }; +struct A {}; +template <class> class AA; +template <class T> class NegativeTemplateConstructor { + NegativeTemplateConstructor(const AA<T> &, A) {} + bool Bool{false}; + // CHECK-FIXES: bool Bool{false}; +}; + #define UNINITIALIZED_FIELD_IN_MACRO_BODY(FIELD) \ struct UninitializedField##FIELD { \ UninitializedField##FIELD() {} \ |

