From: Daniel Jasper Date: Thu, 11 Jul 2013 21:02:56 +0000 (+0000) Subject: clang-format: Break before trailing annotations. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=20a0f8cff96505abb65233a2eaf3af3cd8536cd2;p=clang clang-format: Break before trailing annotations. (if they are not function-like). Before: SomeFunction(aaaaaaaaaaaaaaaaaaaaaa, aaaaaaaaaaaaaaaaaaaaaaaa) OVERRIDE; After: SomeFunction(aaaaaaaaaaaaaaaaaaaaaa, aaaaaaaaaaaaaaaaaaaaaaaa) OVERRIDE; git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186117 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Format/TokenAnnotator.cpp b/lib/Format/TokenAnnotator.cpp index 14206445fa..259378157e 100644 --- a/lib/Format/TokenAnnotator.cpp +++ b/lib/Format/TokenAnnotator.cpp @@ -1052,8 +1052,10 @@ unsigned TokenAnnotator::splitPenalty(const AnnotatedLine &Line, return 150; } - // Breaking before a trailing 'const' is bad. - if (Left.is(tok::r_paren) && Right.is(tok::kw_const)) + // Breaking before a trailing 'const' or not-function-like annotation is bad. + if (Left.is(tok::r_paren) && + (Right.is(tok::kw_const) || (Right.is(tok::identifier) && Right.Next && + Right.Next->isNot(tok::l_paren)))) return 150; // In for-loops, prefer breaking at ',' and ';'. diff --git a/unittests/Format/FormatTest.cpp b/unittests/Format/FormatTest.cpp index c99d2ae7d3..ae4d9f5c0d 100644 --- a/unittests/Format/FormatTest.cpp +++ b/unittests/Format/FormatTest.cpp @@ -2482,6 +2482,7 @@ TEST_F(FormatTest, TrailingReturnType) { } TEST_F(FormatTest, BreaksFunctionDeclarationsWithTrailingTokens) { + // Avoid breaking before trailing 'const'. verifyFormat("void someLongFunction(\n" " int someLongParameter) const {}", getLLVMStyleWithColumns(46)); @@ -2500,6 +2501,13 @@ TEST_F(FormatTest, BreaksFunctionDeclarationsWithTrailingTokens) { " const {}", Style); + // Avoid breaking before other trailing annotations, if they are not + // function-like. + verifyFormat("void SomeFunction(aaaaaaaaaaaaaaaaaaaaaaaaaa,\n" + " aaaaaaaaaaaaaaaaaaaaaaaaaa) OVERRIDE;"); + + // Breaking before function-like trailing annotations is fine to keep them + // close to their arguments. verifyFormat("void aaaaaaaaaaaa(int aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)\n" " LOCKS_EXCLUDED(aaaaaaaaaaaaa);"); verifyFormat("void aaaaaaaaaaaa(int aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa) const\n"