[llvm-branch-commits] [clang] release/21.x: [clang-format] Fix a bug in breaking before FunctionDeclarationName (#153924) (PR #154030)
Tobias Hieta via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Sun Aug 17 22:57:44 PDT 2025
https://github.com/tru updated https://github.com/llvm/llvm-project/pull/154030
>From fcb91597e2e9e041afc5bb4e710e80e465b7d998 Mon Sep 17 00:00:00 2001
From: owenca <owenpiano at gmail.com>
Date: Sun, 17 Aug 2025 12:54:48 -0700
Subject: [PATCH] [clang-format] Fix a bug in breaking before
FunctionDeclarationName (#153924)
Fixes #153891
(cherry picked from commit a21d17f1d7173cdbc25f141595a0be9056760f77)
---
clang/lib/Format/ContinuationIndenter.cpp | 11 +++++++++--
clang/unittests/Format/FormatTest.cpp | 10 +++++++++-
2 files changed, 18 insertions(+), 3 deletions(-)
diff --git a/clang/lib/Format/ContinuationIndenter.cpp b/clang/lib/Format/ContinuationIndenter.cpp
index 4010f7fbd25be..099994695dec5 100644
--- a/clang/lib/Format/ContinuationIndenter.cpp
+++ b/clang/lib/Format/ContinuationIndenter.cpp
@@ -628,9 +628,16 @@ bool ContinuationIndenter::mustBreak(const LineState &State) {
// name.
!Style.isJavaScript() && Previous.isNot(tok::kw_template) &&
CurrentState.BreakBeforeParameter) {
- for (const auto *Tok = &Previous; Tok; Tok = Tok->Previous)
- if (Tok->FirstAfterPPLine || Tok->is(TT_LineComment))
+ for (const auto *Tok = &Previous; Tok; Tok = Tok->Previous) {
+ if (Tok->is(TT_LineComment))
return false;
+ if (Tok->is(TT_TemplateCloser)) {
+ Tok = Tok->MatchingParen;
+ assert(Tok);
+ }
+ if (Tok->FirstAfterPPLine)
+ return false;
+ }
return true;
}
diff --git a/clang/unittests/Format/FormatTest.cpp b/clang/unittests/Format/FormatTest.cpp
index 126e1c92df334..95682f2d8cfd4 100644
--- a/clang/unittests/Format/FormatTest.cpp
+++ b/clang/unittests/Format/FormatTest.cpp
@@ -8596,7 +8596,7 @@ TEST_F(FormatTest, BreaksFunctionDeclarations) {
verifyFormat("extern \"C\" //\n"
" void f();");
- FormatStyle Style = getLLVMStyle();
+ auto Style = getLLVMStyle();
Style.PointerAlignment = FormatStyle::PAS_Left;
verifyFormat("void aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(\n"
" aaaaaaaaaaaaaaaaaaaaaaaaa* const aaaaaaaaaaaa) {}",
@@ -8604,6 +8604,14 @@ TEST_F(FormatTest, BreaksFunctionDeclarations) {
verifyFormat("void aaaaaaa(aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa*\n"
" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa) {}",
Style);
+
+ Style = getLLVMStyleWithColumns(45);
+ Style.PenaltyReturnTypeOnItsOwnLine = 400;
+ verifyFormat("template <bool abool, // a comment\n"
+ " bool anotherbool>\n"
+ "static inline std::pair<size_t, MyCustomType>\n"
+ "myfunc(const char *buf, const char *&err);",
+ Style);
}
TEST_F(FormatTest, DontBreakBeforeQualifiedOperator) {
More information about the llvm-branch-commits
mailing list