llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-clang-tidy @llvm/pr-subscribers-clang-tools-extra Author: None (dsiroky) <details> <summary>Changes</summary> cppcoreguidelines-pro-type-member-init check has an option IgnoreArrays for ignoring uninitialized C arrays. This patch adds support for C++ std::array as well. --- Full diff: https://github.com/llvm/llvm-project/pull/98134.diff 1 Files Affected: - (modified) clang-tools-extra/clang-tidy/cppcoreguidelines/ProTypeMemberInitCheck.cpp (+23-1) ``````````diff diff --git a/clang-tools-extra/clang-tidy/cppcoreguidelines/ProTypeMemberInitCheck.cpp b/clang-tools-extra/clang-tidy/cppcoreguidelines/ProTypeMemberInitCheck.cpp index 9c3c7cc70c187..f5fa340cdb985 100644 --- a/clang-tools-extra/clang-tidy/cppcoreguidelines/ProTypeMemberInitCheck.cpp +++ b/clang-tools-extra/clang-tidy/cppcoreguidelines/ProTypeMemberInitCheck.cpp @@ -422,6 +422,28 @@ static const char *getInitializer(QualType QT, bool UseAssignment) { } } +static bool isStdArray(QualType QT) { + const auto *RT = QT->getAs<RecordType>(); + if (!RT) + return false; + const auto *RD = RT->getDecl(); + if (!RD) + return false; + + const IdentifierInfo *II = RD->getIdentifier(); + if (!II) + return false; + + if (II->getName() == "array") { + const NamespaceDecl *NS = dyn_cast<NamespaceDecl>(RD->getDeclContext()); + if (NS && NS->getName() == "std") { + return true; + } + } + + return false; +} + void ProTypeMemberInitCheck::checkMissingMemberInitializer( ASTContext &Context, const CXXRecordDecl &ClassDecl, const CXXConstructorDecl *Ctor) { @@ -435,7 +457,7 @@ void ProTypeMemberInitCheck::checkMissingMemberInitializer( bool AnyMemberHasInitPerUnion = false; forEachFieldWithFilter(ClassDecl, ClassDecl.fields(), AnyMemberHasInitPerUnion, [&](const FieldDecl *F) { - if (IgnoreArrays && F->getType()->isArrayType()) + if (IgnoreArrays && (F->getType()->isArrayType() || isStdArray(F->getType()))) return; if (F->hasInClassInitializer() && F->getParent()->isUnion()) { AnyMemberHasInitPerUnion = true; `````````` </details> https://github.com/llvm/llvm-project/pull/98134 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits