Author: Owen Pan Date: 2025-02-25T19:44:54-08:00 New Revision: 8fc8a84e23471fe56214e68706addc712b5a2949
URL: https://github.com/llvm/llvm-project/commit/8fc8a84e23471fe56214e68706addc712b5a2949 DIFF: https://github.com/llvm/llvm-project/commit/8fc8a84e23471fe56214e68706addc712b5a2949.diff LOG: [clang-format] Allow breaking before kw___attribute (#128623) Fixes #74784 Added: Modified: clang/lib/Format/TokenAnnotator.cpp clang/unittests/Format/FormatTest.cpp Removed: ################################################################################ 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" _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits