Skip to content

Commit bf1294a

Browse files
committed
[clang-tidy] Avoid diagnosing std::array initializations for modernize-use-designated-initializers
1 parent c9497a2 commit bf1294a

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

clang-tools-extra/clang-tidy/modernize/UseDesignatedInitializersCheck.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,13 +119,18 @@ UseDesignatedInitializersCheck::UseDesignatedInitializersCheck(
119119
void UseDesignatedInitializersCheck::registerMatchers(MatchFinder *Finder) {
120120
const auto HasBaseWithFields =
121121
hasAnyBase(hasType(cxxRecordDecl(has(fieldDecl()))));
122+
123+
// see #133715
124+
const auto IsSTLArray =
125+
hasType(qualType(hasDeclaration(recordDecl(hasName("::std::array")))));
126+
122127
Finder->addMatcher(
123128
initListExpr(
124129
hasType(cxxRecordDecl(RestrictToPODTypes ? isPOD() : isAggregate(),
125130
unless(HasBaseWithFields))
126131
.bind("type")),
127132
IgnoreSingleElementAggregates ? hasMoreThanOneElement() : anything(),
128-
unless(isFullyDesignated()))
133+
unless(anyOf(isFullyDesignated(), IsSTLArray)))
129134
.bind("init"),
130135
this);
131136
}

clang-tools-extra/docs/ReleaseNotes.rst

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,10 @@ Changes in existing checks
171171
``constexpr`` and ``static``` values on member initialization and by detecting
172172
explicit casting of built-in types within member list initialization.
173173

174+
- Improved :doc:`modernize-use-designated-initializers
175+
<clang-tidy/checks/modernize/use-designated-initializers>` check by avoiding
176+
diagnosing designated initializers for ``std::array`` initializations.
177+
174178
- Improved :doc:`modernize-use-ranges
175179
<clang-tidy/checks/modernize/use-ranges>` check by updating suppress
176180
warnings logic for ``nullptr`` in ``std::find``.

0 commit comments

Comments
 (0)