Skip to content

Commit f83c0a6

Browse files
committed
Omit placeholder if there is no designator
1 parent 7054558 commit f83c0a6

File tree

1 file changed

+14
-8
lines changed

1 file changed

+14
-8
lines changed

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

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -153,15 +153,21 @@ void UseDesignatedInitializersCheck::check(
153153
continue;
154154
if (IgnoreMacros && InitExpr->getBeginLoc().isMacroID())
155155
continue;
156-
DiagnosticBuilder Diag =
157-
diag(InitExpr->getBeginLoc(),
158-
"use designated init expression to initialize field '%0'");
159-
Diag << InitExpr->getSourceRange();
160156
const auto Designator = Designators[InitExpr->getBeginLoc()];
161-
if (!Designator->empty() && Designator->front() == '.') {
162-
Diag << Designator->substr(1); // Strip leading dot
163-
Diag << FixItHint::CreateInsertion(InitExpr->getBeginLoc(),
164-
(*Designator + "=").str());
157+
if (!Designator || Designator->empty()) {
158+
// There should always be a designator. If there's unexpectedly none, we
159+
// at least report a generic diagnostic.
160+
diag(InitExpr->getBeginLoc(), "use designated init expression")
161+
<< InitExpr->getSourceRange();
162+
} else {
163+
diag(InitExpr->getBeginLoc(),
164+
"use designated init expression to initialize field '%0'")
165+
<< InitExpr->getSourceRange()
166+
<< (Designator->front() == '.'
167+
? Designator->substr(1) // Strip leading dot
168+
: *Designator)
169+
<< FixItHint::CreateInsertion(InitExpr->getBeginLoc(),
170+
(*Designator + "=").str());
165171
}
166172
}
167173
}

0 commit comments

Comments
 (0)