[clang-tidy] Resolve cppcoreguidelines-pro-type-member-init false positive
authorJonas Devlieghere <jonas@devlieghere.com>
Mon, 3 Jul 2017 16:46:46 +0000 (16:46 +0000)
committerJonas Devlieghere <jonas@devlieghere.com>
Mon, 3 Jul 2017 16:46:46 +0000 (16:46 +0000)
Summary: https://bugs.llvm.org/show_bug.cgi?id=33557

Reviewers: Eugene.Zelenko, alexfh, aaron.ballman, hokein

Reviewed By: aaron.ballman, hokein

Subscribers: cfe-commits, nemanjai, xazax.hun, kbarton

Tags: #clang-tools-extra

Differential Revision: https://reviews.llvm.org/D34932

llvm-svn: 307040

clang-tools-extra/clang-tidy/cppcoreguidelines/ProTypeMemberInitCheck.cpp
clang-tools-extra/test/clang-tidy/cppcoreguidelines-pro-type-member-init.cpp

index 16955f8817e26700c252e16c9ffb3a56e7779489..7fbc8961de4e5a7e12a3b7f474cc7075266ade21 100644 (file)
@@ -449,6 +449,9 @@ void ProTypeMemberInitCheck::checkMissingBaseClassInitializer(
 
   // Remove any bases that were explicitly written in the initializer list.
   if (Ctor) {
+    if (Ctor->isImplicit())
+      return;
+
     for (const CXXCtorInitializer *Init : Ctor->inits()) {
       if (Init->isBaseInitializer() && Init->isWritten())
         BasesToInit.erase(Init->getBaseClass()->getAsCXXRecordDecl());
index 08481a8918c6046a242e84e5fa590a4ace379b55..7b1d96fb4fe1ddc361eaf4bf9d58c01a134f2741 100644 (file)
@@ -473,3 +473,16 @@ struct NegativeInitializedBitfieldMembers {
   unsigned F : 5;
   unsigned G : 5;
 };
+
+struct NegativeImplicitInheritedCtorBase {
+  NegativeImplicitInheritedCtorBase(unsigned F) : F(F) {}
+  unsigned F;
+};
+
+struct NegativeImplicitInheritedCtor : NegativeImplicitInheritedCtorBase {
+  using NegativeImplicitInheritedCtorBase::NegativeImplicitInheritedCtorBase;
+};
+
+void Bug33557() {
+  NegativeImplicitInheritedCtor I(5);
+}