From: Alexander Kornienko Date: Mon, 22 May 2017 13:58:57 +0000 (+0000) Subject: [clang-tidy] readability-redundant-declaration false positive for defaulted function X-Git-Tag: llvmorg-5.0.0-rc1~4601 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=1e034c3f228122beb2bf7b32ba4bba667068760d;p=platform%2Fupstream%2Fllvm.git [clang-tidy] readability-redundant-declaration false positive for defaulted function Summary: ``` template struct C { C(); }; template C::C() = default; ``` Causes a readability-redundant-declaration diagnostic. This is caused by `isDefinition` not matching defaulted functions. Reviewers: alexfh, danielmarjamaki Reviewed By: alexfh Subscribers: xazax.hun, cfe-commits Patch by Florian Gross! Differential Revision: https://reviews.llvm.org/D33358 llvm-svn: 303552 --- diff --git a/clang-tools-extra/clang-tidy/readability/RedundantDeclarationCheck.cpp b/clang-tools-extra/clang-tidy/readability/RedundantDeclarationCheck.cpp index 1ee65d8..29d43c7 100644 --- a/clang-tools-extra/clang-tidy/readability/RedundantDeclarationCheck.cpp +++ b/clang-tools-extra/clang-tidy/readability/RedundantDeclarationCheck.cpp @@ -19,11 +19,12 @@ namespace tidy { namespace readability { void RedundantDeclarationCheck::registerMatchers(MatchFinder *Finder) { - auto UnlessDefinition = unless(isDefinition()); - Finder->addMatcher(namedDecl(anyOf(varDecl(UnlessDefinition), - functionDecl(UnlessDefinition))) - .bind("Decl"), - this); + Finder->addMatcher( + namedDecl( + anyOf(varDecl(unless(isDefinition())), + functionDecl(unless(anyOf(isDefinition(), isDefaulted()))))) + .bind("Decl"), + this); } void RedundantDeclarationCheck::check(const MatchFinder::MatchResult &Result) { diff --git a/clang-tools-extra/test/clang-tidy/readability-redundant-declaration.cpp b/clang-tools-extra/test/clang-tidy/readability-redundant-declaration.cpp index bedc68c..e1b8023 100644 --- a/clang-tools-extra/test/clang-tidy/readability-redundant-declaration.cpp +++ b/clang-tools-extra/test/clang-tidy/readability-redundant-declaration.cpp @@ -34,3 +34,11 @@ struct C { static int I; }; int C::I; + +template +struct C2 { + C2(); +}; + +template +C2::C2() = default;