From: Daniel Jasper Date: Fri, 18 Oct 2013 16:34:40 +0000 (+0000) Subject: Make clang-format slightly more willing to break before trailing annotations. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=53eb05ac6a00b95baf5680d9378ae8819dd09471;p=clang Make clang-format slightly more willing to break before trailing annotations. Specifically, prefer breaking before trailing annotations over breaking before the first parameter. Before: void ffffffffffffffffffffffff( int aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa, int aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa) OVERRIDE; After: void ffffffffffffffffffffffff(int aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa, int aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa) OVERRIDE; git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@192983 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Format/TokenAnnotator.cpp b/lib/Format/TokenAnnotator.cpp index 4d95ecfe4f..9bc109787a 100644 --- a/lib/Format/TokenAnnotator.cpp +++ b/lib/Format/TokenAnnotator.cpp @@ -1157,7 +1157,7 @@ unsigned TokenAnnotator::splitPenalty(const AnnotatedLine &Line, if (Left.is(tok::r_paren) && Line.Type != LT_ObjCProperty && (Right.is(tok::kw_const) || (Right.is(tok::identifier) && Right.Next && Right.Next->isNot(tok::l_paren)))) - return 150; + return 100; // In for-loops, prefer breaking at ',' and ';'. if (Line.First->is(tok::kw_for) && Left.is(tok::equal)) diff --git a/unittests/Format/FormatTest.cpp b/unittests/Format/FormatTest.cpp index cf5c232481..15d05f5575 100644 --- a/unittests/Format/FormatTest.cpp +++ b/unittests/Format/FormatTest.cpp @@ -2840,33 +2840,36 @@ TEST_F(FormatTest, TrailingReturnType) { } TEST_F(FormatTest, BreaksFunctionDeclarationsWithTrailingTokens) { - // Avoid breaking before trailing 'const'. - verifyFormat("void someLongFunction(\n" - " int someLongParameter) const {}", - getLLVMStyleWithColumns(46)); + // Avoid breaking before trailing 'const' or other trailing annotations, if + // they are not function-like. FormatStyle Style = getGoogleStyle(); Style.ColumnLimit = 47; verifyFormat("void\n" "someLongFunction(int someLongParameter) const {\n}", getLLVMStyleWithColumns(47)); - verifyFormat("void someLongFunction(\n" - " int someLongParameter) const {}", - Style); verifyFormat("LoooooongReturnType\n" "someLoooooooongFunction() const {}", getLLVMStyleWithColumns(47)); verifyFormat("LoooooongReturnType someLoooooooongFunction()\n" " const {}", Style); - - // Avoid breaking before other trailing annotations, if they are not - // function-like. - verifyFormat("void SomeFunction(aaaaaaaaaaaaaaaaaaaaaaaaaa,\n" - " aaaaaaaaaaaaaaaaaaaaaaaaaa) OVERRIDE;"); - verifyFormat("void SomeFunction(aaaaaaaaaaaaaaaaaaaaaaaaaa,\n" - " aaaaaaaaaaaaaaaaaaaaaaaaaa) OVERRIDE FINAL;"); - verifyFormat("void SomeFunction(aaaaaaaaaaaaaaaaaaaaaaaaaa,\n" - " aaaaaaaaaaaaaaaaaaaaaaaaaa) override final;"); + verifyFormat("void SomeFunction(aaaaa aaaaaaaaaaaaaaaaaaaa,\n" + " aaaaa aaaaaaaaaaaaaaaaaaaa) OVERRIDE;"); + verifyFormat("void SomeFunction(aaaaa aaaaaaaaaaaaaaaaaaaa,\n" + " aaaaa aaaaaaaaaaaaaaaaaaaa) OVERRIDE FINAL;"); + verifyFormat("void SomeFunction(aaaaa aaaaaaaaaaaaaaaaaaaa,\n" + " aaaaa aaaaaaaaaaaaaaaaaaaa) override final;"); + + // Unless this would lead to the first parameter being broken. + verifyFormat("void someLongFunction(int someLongParameter)\n" + " const {}", + getLLVMStyleWithColumns(46)); + verifyFormat("void someLongFunction(int someLongParameter)\n" + " const {}", + Style); + verifyFormat("void SomeFunction(aaaaaaaaaa aaaaaaaaaaaaaaa,\n" + " aaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)\n" + " LONG_AND_UGLY_ANNOTATION;"); // Breaking before function-like trailing annotations is fine to keep them // close to their arguments.