Skip to content

Commit 3bd8b02

Browse files
authored
[clang-format] Handle leading C++11 attribute in QualifierAlignment (#123690)
Fixes #123573.
1 parent 2841cdb commit 3bd8b02

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

clang/lib/Format/QualifierAlignmentFixer.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -386,7 +386,8 @@ const FormatToken *LeftRightQualifierAlignmentFixer::analyzeLeft(
386386
// For left qualifiers preceeded by nothing, a template declaration, or *,&,&&
387387
// we only perform sorting.
388388
if (!TypeToken || TypeToken->isPointerOrReference() ||
389-
TypeToken->ClosesRequiresClause || TypeToken->ClosesTemplateDeclaration) {
389+
TypeToken->ClosesRequiresClause || TypeToken->ClosesTemplateDeclaration ||
390+
TypeToken->is(tok::r_square)) {
390391

391392
// Don't sort past a non-configured qualifier token.
392393
const FormatToken *FirstQual = Tok;

clang/unittests/Format/QualifierFixerTest.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1279,6 +1279,18 @@ TEST_F(QualifierFixerTest, WithConstraints) {
12791279
Style);
12801280
}
12811281

1282+
TEST_F(QualifierFixerTest, WithCpp11Attribute) {
1283+
FormatStyle Style = getLLVMStyle();
1284+
Style.QualifierAlignment = FormatStyle::QAS_Custom;
1285+
Style.QualifierOrder = {"static", "constexpr", "inline", "type"};
1286+
1287+
verifyFormat("[[nodiscard]] static constexpr inline int func() noexcept {}",
1288+
"[[nodiscard]] inline constexpr static int func() noexcept {}",
1289+
Style);
1290+
verifyFormat("[[maybe_unused]] static constexpr int A",
1291+
"[[maybe_unused]] constexpr static int A", Style);
1292+
}
1293+
12821294
TEST_F(QualifierFixerTest, DisableRegions) {
12831295
FormatStyle Style = getLLVMStyle();
12841296
Style.QualifierAlignment = FormatStyle::QAS_Custom;

0 commit comments

Comments
 (0)