Author: malcolm.parsons Date: Tue Oct 11 05:47:06 2016 New Revision: 283869
URL: http://llvm.org/viewvc/llvm-project?rev=283869&view=rev Log: [clang-tidy] modernize-use-default default constructor bugfix Summary: Only member initializers that are written should prevent using '= default' on a default constructor. Reviewers: klimek, sbenza, aaron.ballman, alexfh Subscribers: Eugene.Zelenko, alexfh, klimek, cfe-commits Differential Revision: https://reviews.llvm.org/D24444 Modified: clang-tools-extra/trunk/clang-tidy/modernize/UseDefaultCheck.cpp clang-tools-extra/trunk/test/clang-tidy/modernize-use-default.cpp Modified: clang-tools-extra/trunk/clang-tidy/modernize/UseDefaultCheck.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/modernize/UseDefaultCheck.cpp?rev=283869&r1=283868&r2=283869&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-tidy/modernize/UseDefaultCheck.cpp (original) +++ clang-tools-extra/trunk/clang-tidy/modernize/UseDefaultCheck.cpp Tue Oct 11 05:47:06 2016 @@ -238,7 +238,7 @@ void UseDefaultCheck::registerMatchers(M isDefinition(), anyOf( // Default constructor. - allOf(unless(hasAnyConstructorInitializer(anything())), + allOf(unless(hasAnyConstructorInitializer(isWritten())), parameterCountIs(0)), // Copy constructor. allOf(isCopyConstructor(), @@ -296,12 +296,12 @@ void UseDefaultCheck::check(const MatchF if (!isCopyConstructorAndCanBeDefaulted(Result.Context, Ctor)) return; SpecialFunctionName = "copy constructor"; - } - // If there are constructor initializers, they must be removed. - if (Ctor->getNumCtorInitializers() != 0) { - StartLoc = getColonLoc(Result.Context, Ctor); - if (!StartLoc.isValid()) - return; + // If there are constructor initializers, they must be removed. + if (Ctor->getNumCtorInitializers() != 0) { + StartLoc = getColonLoc(Result.Context, Ctor); + if (!StartLoc.isValid()) + return; + } } } else if (isa<CXXDestructorDecl>(SpecialFunctionDecl)) { SpecialFunctionName = "destructor"; Modified: clang-tools-extra/trunk/test/clang-tidy/modernize-use-default.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/modernize-use-default.cpp?rev=283869&r1=283868&r2=283869&view=diff ============================================================================== --- clang-tools-extra/trunk/test/clang-tidy/modernize-use-default.cpp (original) +++ clang-tools-extra/trunk/test/clang-tidy/modernize-use-default.cpp Tue Oct 11 05:47:06 2016 @@ -43,6 +43,24 @@ public: int Field; }; +// Default member initializer +class DMI { +public: + DMI() {} + // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: use '= default' + // CHECK-FIXES: DMI() = default; + int Field = 5; +}; + +// Class member +class CM { +public: + CM() {} + // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: use '= default' + // CHECK-FIXES: CM() = default; + OL o; +}; + // Private constructor/destructor. class Priv { Priv() {} _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits