Skip to content

Commit 204dcaf

Browse files
authored
[clang-format] Fix a bug in BCIS_AfterColon and ColumnLimit: 0 (#127964)
Fixes #127622
1 parent 89e80ab commit 204dcaf

File tree

2 files changed

+33
-25
lines changed

2 files changed

+33
-25
lines changed

clang/lib/Format/ContinuationIndenter.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -473,9 +473,8 @@ bool ContinuationIndenter::mustBreak(const LineState &State) {
473473
(State.Column + State.Line->Last->TotalLength - Previous.TotalLength >
474474
getColumnLimit(State) ||
475475
CurrentState.BreakBeforeParameter) &&
476-
(!Current.isTrailingComment() || Current.NewlinesBefore > 0) &&
477-
(Style.BreakConstructorInitializers != FormatStyle::BCIS_BeforeColon ||
478-
Style.ColumnLimit > 0 || Current.NewlinesBefore > 0)) {
476+
((!Current.isTrailingComment() && Style.ColumnLimit > 0) ||
477+
Current.NewlinesBefore > 0)) {
479478
return true;
480479
}
481480

clang/unittests/Format/FormatTest.cpp

Lines changed: 31 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -8292,31 +8292,40 @@ TEST_F(FormatTest, BreakConstructorInitializersAfterColon) {
82928292
Style);
82938293

82948294
Style.ColumnLimit = 0;
8295-
verifyFormat("SomeClass::Constructor() :\n"
8296-
" a(a) {}",
8297-
Style);
8298-
verifyFormat("SomeClass::Constructor() noexcept :\n"
8299-
" a(a) {}",
8300-
Style);
8301-
verifyFormat("SomeClass::Constructor() :\n"
8302-
" a(a), b(b), c(c) {}",
8303-
Style);
8304-
verifyFormat("SomeClass::Constructor() :\n"
8305-
" a(a) {\n"
8306-
" foo();\n"
8307-
" bar();\n"
8308-
"}",
8295+
verifyNoChange("SomeClass::Constructor() :\n"
8296+
" a(a) {}",
8297+
Style);
8298+
verifyNoChange("SomeClass::Constructor() noexcept :\n"
8299+
" a(a) {}",
8300+
Style);
8301+
verifyNoChange("SomeClass::Constructor() :\n"
8302+
" a(a), b(b), c(c) {}",
8303+
Style);
8304+
verifyNoChange("SomeClass::Constructor() :\n"
8305+
" a(a) {\n"
8306+
" foo();\n"
8307+
" bar();\n"
8308+
"}",
8309+
Style);
8310+
verifyFormat("struct Foo {\n"
8311+
" int x;\n"
8312+
" Foo() : x(0) {}\n"
8313+
"};",
8314+
"struct Foo {\n"
8315+
" int x;\n"
8316+
" Foo():x(0) {}\n"
8317+
"};",
83098318
Style);
83108319

83118320
Style.AllowShortFunctionsOnASingleLine = FormatStyle::SFS_None;
8312-
verifyFormat("SomeClass::Constructor() :\n"
8313-
" a(a), b(b), c(c) {\n"
8314-
"}",
8315-
Style);
8316-
verifyFormat("SomeClass::Constructor() :\n"
8317-
" a(a) {\n"
8318-
"}",
8319-
Style);
8321+
verifyNoChange("SomeClass::Constructor() :\n"
8322+
" a(a), b(b), c(c) {\n"
8323+
"}",
8324+
Style);
8325+
verifyNoChange("SomeClass::Constructor() :\n"
8326+
" a(a) {\n"
8327+
"}",
8328+
Style);
83208329

83218330
Style.ColumnLimit = 80;
83228331
Style.AllowShortFunctionsOnASingleLine = FormatStyle::SFS_All;

0 commit comments

Comments
 (0)