r182455 - Improve handling of trailing 'const'.

Nico Weber thakis at chromium.org
Wed May 22 09:35:27 PDT 2013


What about override and final? What about ')' followed by an identifier
(say `void f() OVERRIDE`)?


On Wed, May 22, 2013 at 1:28 AM, Daniel Jasper <djasper at google.com> wrote:

> Author: djasper
> Date: Wed May 22 03:28:26 2013
> New Revision: 182455
>
> URL: http://llvm.org/viewvc/llvm-project?rev=182455&view=rev
> Log:
> Improve handling of trailing 'const'.
>
> Reduce the preference for breaking before a trailing 'const' according
> to review comments on r182362.
>
> Modified:
>     cfe/trunk/lib/Format/TokenAnnotator.cpp
>     cfe/trunk/unittests/Format/FormatTest.cpp
>
> Modified: cfe/trunk/lib/Format/TokenAnnotator.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Format/TokenAnnotator.cpp?rev=182455&r1=182454&r2=182455&view=diff
>
> ==============================================================================
> --- cfe/trunk/lib/Format/TokenAnnotator.cpp (original)
> +++ cfe/trunk/lib/Format/TokenAnnotator.cpp Wed May 22 03:28:26 2013
> @@ -959,6 +959,10 @@ unsigned TokenAnnotator::splitPenalty(co
>      return 150;
>    }
>
> +  // Breaking before a trailing 'const' is bad.
> +  if (Left.is(tok::r_paren) && Right.is(tok::kw_const))
> +    return 150;
> +
>    // In for-loops, prefer breaking at ',' and ';'.
>    if (Line.First.is(tok::kw_for) && Left.is(tok::equal))
>      return 4;
> @@ -1165,6 +1169,11 @@ bool TokenAnnotator::canBreakBefore(cons
>      // change the "binding" behavior of a comment.
>      return false;
>
> +  // We only break before r_brace if there was a corresponding break
> before
> +  // the l_brace, which is tracked by BreakBeforeClosingBrace.
> +  if (Right.isOneOf(tok::r_brace, tok::r_paren, tok::greater))
> +    return false;
> +
>    // Allow breaking after a trailing 'const', e.g. after a method
> declaration,
>    // unless it is follow by ';', '{' or '='.
>    if (Left.is(tok::kw_const) && Left.Parent != NULL &&
> @@ -1174,10 +1183,6 @@ bool TokenAnnotator::canBreakBefore(cons
>    if (Right.is(tok::kw___attribute))
>      return true;
>
> -  // We only break before r_brace if there was a corresponding break
> before
> -  // the l_brace, which is tracked by BreakBeforeClosingBrace.
> -  if (Right.isOneOf(tok::r_brace, tok::r_paren, tok::greater))
> -    return false;
>    if (Left.is(tok::identifier) && Right.is(tok::string_literal))
>      return true;
>    return (Left.isBinaryOperator() && Left.isNot(tok::lessless)) ||
>
> Modified: cfe/trunk/unittests/Format/FormatTest.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/Format/FormatTest.cpp?rev=182455&r1=182454&r2=182455&view=diff
>
> ==============================================================================
> --- cfe/trunk/unittests/Format/FormatTest.cpp (original)
> +++ cfe/trunk/unittests/Format/FormatTest.cpp Wed May 22 03:28:26 2013
> @@ -1929,9 +1929,23 @@ TEST_F(FormatTest, BreaksFunctionDeclara
>  }
>
>  TEST_F(FormatTest, BreaksFunctionDeclarationsWithTrailingTokens) {
> -  verifyFormat("void someLongFunction(int someLongParameter)\n"
> -               "    const;",
> -               getLLVMStyleWithColumns(45));
> +  verifyFormat("void someLongFunction(\n"
> +               "    int someLongParameter) const {}",
> +               getLLVMStyleWithColumns(46));
> +  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);
>
>    verifyFormat("void aaaaaaaaaaaa(int
> aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)\n"
>                 "    LOCKS_EXCLUDED(aaaaaaaaaaaaa);");
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20130522/ef6c795a/attachment.html>


More information about the cfe-commits mailing list