[clang] [clang-format] Allow breaking before kw___attribute (PR #128623)
Owen Pan via cfe-commits
cfe-commits at lists.llvm.org
Mon Feb 24 20:11:45 PST 2025
https://github.com/owenca created https://github.com/llvm/llvm-project/pull/128623
Fixes 74784
>From aca2c4f54baaf05831d151c6fa3f20a6cc28a514 Mon Sep 17 00:00:00 2001
From: Owen Pan <owenpiano at gmail.com>
Date: Mon, 24 Feb 2025 20:09:22 -0800
Subject: [PATCH] [clang-format] Allow breaking before kw___attribute
Fixes 74784
---
clang/lib/Format/TokenAnnotator.cpp | 5 ++---
clang/unittests/Format/FormatTest.cpp | 3 +++
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/clang/lib/Format/TokenAnnotator.cpp b/clang/lib/Format/TokenAnnotator.cpp
index d29c299768a68..2ffaee93b70ea 100644
--- a/clang/lib/Format/TokenAnnotator.cpp
+++ b/clang/lib/Format/TokenAnnotator.cpp
@@ -6202,6 +6202,8 @@ bool TokenAnnotator::canBreakBefore(const AnnotatedLine &Line,
TT_ClassHeadName, tok::kw_operator)) {
return true;
}
+ if (Right.isAttribute())
+ return true;
if (Left.is(TT_PointerOrReference))
return false;
if (Right.isTrailingComment()) {
@@ -6346,9 +6348,6 @@ bool TokenAnnotator::canBreakBefore(const AnnotatedLine &Line,
tok::less, tok::coloncolon);
}
- if (Right.isAttribute())
- return true;
-
if (Right.is(tok::l_square) && Right.is(TT_AttributeSquare))
return Left.isNot(TT_AttributeSquare);
diff --git a/clang/unittests/Format/FormatTest.cpp b/clang/unittests/Format/FormatTest.cpp
index fe0e47080a577..39266d17f824f 100644
--- a/clang/unittests/Format/FormatTest.cpp
+++ b/clang/unittests/Format/FormatTest.cpp
@@ -12613,6 +12613,9 @@ TEST_F(FormatTest, UnderstandsAttributes) {
verifyFormat("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa __attribute__((unused))\n"
"aaaaaaaaaaaaaaaaaaaaaaa(int i);");
verifyFormat("__attribute__((nodebug)) ::qualified_type f();");
+ verifyFormat(
+ "RenderWidgetHostViewCocoa *\n"
+ " __attribute__((objc_precise_lifetime)) keepSelfAlive = self;");
FormatStyle AfterType = getLLVMStyle();
AfterType.BreakAfterReturnType = FormatStyle::RTBS_All;
verifyFormat("__attribute__((nodebug)) void\n"
More information about the cfe-commits
mailing list