Skip to content

Commit ea16a3b

Browse files
authored
[clang-format] Don't sort qualifiers across preprocessor directives (#81958)
Fixes #80579.
1 parent 3da0166 commit ea16a3b

File tree

2 files changed

+15
-0
lines changed

2 files changed

+15
-0
lines changed

clang/lib/Format/QualifierAlignmentFixer.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -561,6 +561,8 @@ void LeftRightQualifierAlignmentFixer::fixQualifierAlignment(
561561

562562
for (const auto *Tok = First; Tok && Tok != Last && Tok->Next;
563563
Tok = Tok->Next) {
564+
if (Tok->MustBreakBefore)
565+
break;
564566
if (Tok->is(tok::comment))
565567
continue;
566568
if (RightAlign) {

clang/unittests/Format/QualifierFixerTest.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1177,6 +1177,19 @@ TEST_F(QualifierFixerTest, DontPushQualifierThroughNonSpecifiedTypes) {
11771177
verifyFormat("const inline static Foo;", Style);
11781178
}
11791179

1180+
TEST_F(QualifierFixerTest, QualifiersBrokenUpByPPDirectives) {
1181+
auto Style = getLLVMStyle();
1182+
Style.QualifierAlignment = FormatStyle::QAS_Custom;
1183+
Style.QualifierOrder = {"constexpr", "inline", "type"};
1184+
1185+
verifyFormat("inline\n"
1186+
"#if FOO\n"
1187+
" constexpr\n"
1188+
"#endif\n"
1189+
" int i = 0;",
1190+
Style);
1191+
}
1192+
11801193
TEST_F(QualifierFixerTest, UnsignedQualifier) {
11811194

11821195
FormatStyle Style = getLLVMStyle();

0 commit comments

Comments
 (0)