https://github.com/RiverDave updated https://github.com/llvm/llvm-project/pull/134774
>From bf1294a2be9da63717087f8940a7bad5b3c522f6 Mon Sep 17 00:00:00 2001 From: David Rivera <davidriv...@gmail.com> Date: Mon, 7 Apr 2025 23:21:50 -0400 Subject: [PATCH 1/2] [clang-tidy] Avoid diagnosing std::array initializations for modernize-use-designated-initializers --- .../modernize/UseDesignatedInitializersCheck.cpp | 7 ++++++- clang-tools-extra/docs/ReleaseNotes.rst | 4 ++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/clang-tools-extra/clang-tidy/modernize/UseDesignatedInitializersCheck.cpp b/clang-tools-extra/clang-tidy/modernize/UseDesignatedInitializersCheck.cpp index 3132067f3d5ec..9e2ac149d0868 100644 --- a/clang-tools-extra/clang-tidy/modernize/UseDesignatedInitializersCheck.cpp +++ b/clang-tools-extra/clang-tidy/modernize/UseDesignatedInitializersCheck.cpp @@ -119,13 +119,18 @@ UseDesignatedInitializersCheck::UseDesignatedInitializersCheck( void UseDesignatedInitializersCheck::registerMatchers(MatchFinder *Finder) { const auto HasBaseWithFields = hasAnyBase(hasType(cxxRecordDecl(has(fieldDecl())))); + + // see #133715 + const auto IsSTLArray = + hasType(qualType(hasDeclaration(recordDecl(hasName("::std::array"))))); + Finder->addMatcher( initListExpr( hasType(cxxRecordDecl(RestrictToPODTypes ? isPOD() : isAggregate(), unless(HasBaseWithFields)) .bind("type")), IgnoreSingleElementAggregates ? hasMoreThanOneElement() : anything(), - unless(isFullyDesignated())) + unless(anyOf(isFullyDesignated(), IsSTLArray))) .bind("init"), this); } diff --git a/clang-tools-extra/docs/ReleaseNotes.rst b/clang-tools-extra/docs/ReleaseNotes.rst index 6c1f05009df98..44c348f453543 100644 --- a/clang-tools-extra/docs/ReleaseNotes.rst +++ b/clang-tools-extra/docs/ReleaseNotes.rst @@ -171,6 +171,10 @@ Changes in existing checks ``constexpr`` and ``static``` values on member initialization and by detecting explicit casting of built-in types within member list initialization. +- Improved :doc:`modernize-use-designated-initializers + <clang-tidy/checks/modernize/use-designated-initializers>` check by avoiding + diagnosing designated initializers for ``std::array`` initializations. + - Improved :doc:`modernize-use-ranges <clang-tidy/checks/modernize/use-ranges>` check by updating suppress warnings logic for ``nullptr`` in ``std::find``. >From 65fc264b7cdd33a6f8d8ad6d76a9c2f5e551955a Mon Sep 17 00:00:00 2001 From: David Rivera <davidriv...@gmail.com> Date: Sat, 12 Apr 2025 19:55:39 -0400 Subject: [PATCH 2/2] [clang-tidy] avoid diagnosing std::array initializations for modernize-use-designated-initializers when IgnoreSingleElementAggregates is false --- .../modernize/UseDesignatedInitializersCheck.cpp | 12 +++++------- clang-tools-extra/docs/ReleaseNotes.rst | 3 ++- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/clang-tools-extra/clang-tidy/modernize/UseDesignatedInitializersCheck.cpp b/clang-tools-extra/clang-tidy/modernize/UseDesignatedInitializersCheck.cpp index 9e2ac149d0868..508d9ed821cae 100644 --- a/clang-tools-extra/clang-tidy/modernize/UseDesignatedInitializersCheck.cpp +++ b/clang-tools-extra/clang-tidy/modernize/UseDesignatedInitializersCheck.cpp @@ -119,18 +119,16 @@ UseDesignatedInitializersCheck::UseDesignatedInitializersCheck( void UseDesignatedInitializersCheck::registerMatchers(MatchFinder *Finder) { const auto HasBaseWithFields = hasAnyBase(hasType(cxxRecordDecl(has(fieldDecl())))); - - // see #133715 - const auto IsSTLArray = - hasType(qualType(hasDeclaration(recordDecl(hasName("::std::array"))))); - Finder->addMatcher( initListExpr( hasType(cxxRecordDecl(RestrictToPODTypes ? isPOD() : isAggregate(), - unless(HasBaseWithFields)) + unless(anyOf(HasBaseWithFields, + IgnoreSingleElementAggregates + ? hasName("::std::array") + : anything()))) .bind("type")), IgnoreSingleElementAggregates ? hasMoreThanOneElement() : anything(), - unless(anyOf(isFullyDesignated(), IsSTLArray))) + unless(isFullyDesignated())) .bind("init"), this); } diff --git a/clang-tools-extra/docs/ReleaseNotes.rst b/clang-tools-extra/docs/ReleaseNotes.rst index 44c348f453543..f6f1d27c1cff7 100644 --- a/clang-tools-extra/docs/ReleaseNotes.rst +++ b/clang-tools-extra/docs/ReleaseNotes.rst @@ -173,7 +173,8 @@ Changes in existing checks - Improved :doc:`modernize-use-designated-initializers <clang-tidy/checks/modernize/use-designated-initializers>` check by avoiding - diagnosing designated initializers for ``std::array`` initializations. + diagnosing designated initializers for ``std::array`` initializations when + `IgnoreSingleElementAggregates` is false. - Improved :doc:`modernize-use-ranges <clang-tidy/checks/modernize/use-ranges>` check by updating suppress _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits