flx created this revision.
flx added reviewers: alexfh, JVApen.
flx added a subscriber: cfe-commits.
flx set the repository for this revision to rL LLVM.
This fixes bug https://llvm.org/bugs/show_bug.cgi?id=26747
Repository:
rL LLVM
http://reviews.llvm.org/D18300
Files:
clang-tidy/cppcoreguidelines/ProTypeMemberInitCheck.cpp
test/clang-tidy/cppcoreguidelines-pro-type-member-init.cpp
Index: test/clang-tidy/cppcoreguidelines-pro-type-member-init.cpp
===================================================================
--- test/clang-tidy/cppcoreguidelines-pro-type-member-init.cpp
+++ test/clang-tidy/cppcoreguidelines-pro-type-member-init.cpp
@@ -86,6 +86,14 @@
int I;
};
+struct A {};
+template <class> class B;
+template <class T> class NegativeTemplateConstructor {
+ NegativeTemplateConstructor(const B<T> &, A) {}
+ bool Bool{false};
+ // CHECK-FIXES: bool Bool{false};
+};
+
#define UNINITIALIZED_FIELD_IN_MACRO_BODY(FIELD) \
struct UninitializedField##FIELD { \
UninitializedField##FIELD() {} \
Index: clang-tidy/cppcoreguidelines/ProTypeMemberInitCheck.cpp
===================================================================
--- clang-tidy/cppcoreguidelines/ProTypeMemberInitCheck.cpp
+++ clang-tidy/cppcoreguidelines/ProTypeMemberInitCheck.cpp
@@ -32,6 +32,8 @@
fieldsRequiringInit(const RecordDecl::field_range &Fields,
SmallPtrSetImpl<const FieldDecl *> &FieldsToInit) {
for (const FieldDecl *F : Fields) {
+ if (F->hasInClassInitializer())
+ continue;
QualType Type = F->getType();
if (Type->isPointerType() || Type->isBuiltinType())
FieldsToInit.insert(F);
Index: test/clang-tidy/cppcoreguidelines-pro-type-member-init.cpp
===================================================================
--- test/clang-tidy/cppcoreguidelines-pro-type-member-init.cpp
+++ test/clang-tidy/cppcoreguidelines-pro-type-member-init.cpp
@@ -86,6 +86,14 @@
int I;
};
+struct A {};
+template <class> class B;
+template <class T> class NegativeTemplateConstructor {
+ NegativeTemplateConstructor(const B<T> &, A) {}
+ bool Bool{false};
+ // CHECK-FIXES: bool Bool{false};
+};
+
#define UNINITIALIZED_FIELD_IN_MACRO_BODY(FIELD) \
struct UninitializedField##FIELD { \
UninitializedField##FIELD() {} \
Index: clang-tidy/cppcoreguidelines/ProTypeMemberInitCheck.cpp
===================================================================
--- clang-tidy/cppcoreguidelines/ProTypeMemberInitCheck.cpp
+++ clang-tidy/cppcoreguidelines/ProTypeMemberInitCheck.cpp
@@ -32,6 +32,8 @@
fieldsRequiringInit(const RecordDecl::field_range &Fields,
SmallPtrSetImpl<const FieldDecl *> &FieldsToInit) {
for (const FieldDecl *F : Fields) {
+ if (F->hasInClassInitializer())
+ continue;
QualType Type = F->getType();
if (Type->isPointerType() || Type->isBuiltinType())
FieldsToInit.insert(F);
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits