Skip to content

Commit 5f11d64

Browse files
authored
[clang-format] Fix a bug in AlignConsecutiveDeclarations (#135516)
Fix #109768
1 parent 0a27c4e commit 5f11d64

File tree

2 files changed

+13
-8
lines changed

2 files changed

+13
-8
lines changed

clang/lib/Format/WhitespaceManager.cpp

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1012,13 +1012,8 @@ void WhitespaceManager::alignConsecutiveDeclarations() {
10121012
AlignTokens(
10131013
Style,
10141014
[&](Change const &C) {
1015-
if (Style.AlignConsecutiveDeclarations.AlignFunctionPointers) {
1016-
for (const auto *Prev = C.Tok->Previous; Prev; Prev = Prev->Previous)
1017-
if (Prev->is(tok::equal))
1018-
return false;
1019-
if (C.Tok->is(TT_FunctionTypeLParen))
1020-
return true;
1021-
}
1015+
if (C.Tok->is(TT_FunctionTypeLParen))
1016+
return Style.AlignConsecutiveDeclarations.AlignFunctionPointers;
10221017
if (C.Tok->is(TT_FunctionDeclarationName))
10231018
return Style.AlignConsecutiveDeclarations.AlignFunctionDeclarations;
10241019
if (C.Tok->isNot(TT_StartOfName))

clang/unittests/Format/FormatTest.cpp

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20207,6 +20207,16 @@ TEST_F(FormatTest, AlignConsecutiveDeclarations) {
2020720207
"double b();",
2020820208
AlignmentLeft);
2020920209

20210+
auto Style = AlignmentLeft;
20211+
Style.AlignConsecutiveDeclarations.AlignFunctionPointers = true;
20212+
Style.BinPackParameters = FormatStyle::BPPS_OnePerLine;
20213+
verifyFormat("int function_name(const wchar_t* title,\n"
20214+
" int x = 0,\n"
20215+
" long extraStyle = 0,\n"
20216+
" bool readOnly = false,\n"
20217+
" FancyClassType* module = nullptr);",
20218+
Style);
20219+
2021020220
// PAS_Middle
2021120221
FormatStyle AlignmentMiddle = Alignment;
2021220222
AlignmentMiddle.PointerAlignment = FormatStyle::PAS_Middle;
@@ -20438,7 +20448,7 @@ TEST_F(FormatTest, AlignConsecutiveDeclarations) {
2043820448
Alignment);
2043920449

2044020450
// See PR37175
20441-
FormatStyle Style = getMozillaStyle();
20451+
Style = getMozillaStyle();
2044220452
Style.AlignConsecutiveDeclarations.Enabled = true;
2044320453
verifyFormat("DECOR1 /**/ int8_t /**/ DECOR2 /**/\n"
2044420454
"foo(int a);",

0 commit comments

Comments
 (0)