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"