summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--clang-tools-extra/clang-tidy/google/ExplicitConstructorCheck.cpp13
1 files changed, 7 insertions, 6 deletions
diff --git a/clang-tools-extra/clang-tidy/google/ExplicitConstructorCheck.cpp b/clang-tools-extra/clang-tidy/google/ExplicitConstructorCheck.cpp
index 1d0ea68450c..df21d46ad58 100644
--- a/clang-tools-extra/clang-tidy/google/ExplicitConstructorCheck.cpp
+++ b/clang-tools-extra/clang-tidy/google/ExplicitConstructorCheck.cpp
@@ -24,8 +24,11 @@ void ExplicitConstructorCheck::registerMatchers(MatchFinder *Finder) {
// provide any benefit to other languages, despite being benign.
if (!getLangOpts().CPlusPlus)
return;
- Finder->addMatcher(cxxConstructorDecl(unless(isInstantiated())).bind("ctor"),
- this);
+ Finder->addMatcher(
+ cxxConstructorDecl(unless(anyOf(isImplicit(), // Compiler-generated.
+ isDeleted(), isInstantiated())))
+ .bind("ctor"),
+ this);
Finder->addMatcher(
cxxConversionDecl(unless(anyOf(isExplicit(), // Already marked explicit.
isImplicit(), // Compiler-generated.
@@ -99,10 +102,8 @@ void ExplicitConstructorCheck::check(const MatchFinder::MatchResult &Result) {
}
const auto *Ctor = Result.Nodes.getNodeAs<CXXConstructorDecl>("ctor");
- // Do not be confused: isExplicit means 'explicit' keyword is present,
- // isImplicit means that it's a compiler-generated constructor.
- if (Ctor->isOutOfLine() || Ctor->isImplicit() || Ctor->isDeleted() ||
- Ctor->getNumParams() == 0 || Ctor->getMinRequiredArguments() > 1)
+ if (Ctor->isOutOfLine() || Ctor->getNumParams() == 0 ||
+ Ctor->getMinRequiredArguments() > 1)
return;
bool takesInitializerList = isStdInitializerList(
OpenPOWER on IntegriCloud