[clang-format] Don't change breaking before CtorInitializerColon (#119522)

Don't change breaking before CtorInitializerColon with `ColumnLimit: 0`.

Fixes #119519.
This commit is contained in:
Owen Pan
2024-12-18 12:42:26 -08:00
committed by GitHub
parent 9b3d85f0f4
commit f03bf8c45f
3 changed files with 10 additions and 7 deletions

View File

@@ -461,9 +461,8 @@ bool ContinuationIndenter::mustBreak(const LineState &State) {
getColumnLimit(State) ||
CurrentState.BreakBeforeParameter) &&
(!Current.isTrailingComment() || Current.NewlinesBefore > 0) &&
(Style.AllowShortFunctionsOnASingleLine != FormatStyle::SFS_All ||
Style.BreakConstructorInitializers != FormatStyle::BCIS_BeforeColon ||
Style.ColumnLimit != 0)) {
(Style.BreakConstructorInitializers != FormatStyle::BCIS_BeforeColon ||
Style.ColumnLimit > 0 || Current.NewlinesBefore > 0)) {
return true;
}

View File

@@ -492,7 +492,8 @@ private:
ProbablyFunctionType && CurrentToken->Next &&
(CurrentToken->Next->is(tok::l_paren) ||
(CurrentToken->Next->is(tok::l_square) &&
Line.MustBeDeclaration))) {
(Line.MustBeDeclaration ||
PrevNonComment->isTypeName(LangOpts))))) {
OpeningParen.setType(OpeningParen.Next->is(tok::caret)
? TT_ObjCBlockLParen
: TT_FunctionTypeLParen);

View File

@@ -14503,10 +14503,13 @@ TEST_F(FormatTest, PullTrivialFunctionDefinitionsIntoSingleLine) {
FormatStyle DoNotMergeNoColumnLimit = NoColumnLimit;
DoNotMergeNoColumnLimit.AllowShortFunctionsOnASingleLine =
FormatStyle::SFS_None;
verifyFormat("A()\n"
" : b(0) {\n"
verifyFormat("A() : b(0) {\n"
"}",
"A():b(0){}", DoNotMergeNoColumnLimit);
DoNotMergeNoColumnLimit);
verifyNoChange("A()\n"
" : b(0) {\n"
"}",
DoNotMergeNoColumnLimit);
verifyFormat("A()\n"
" : b(0) {\n"
"}",