[cfe-commits] r172333 - in /cfe/trunk: lib/Format/Format.cpp unittests/Format/FormatTest.cpp

Nico Weber thakis at chromium.org
Sat Jan 12 14:51:41 PST 2013


On Sat, Jan 12, 2013 at 2:48 PM, Nico Weber <nicolasweber at gmx.de> wrote:
> Author: nico
> Date: Sat Jan 12 16:48:47 2013
> New Revision: 172333
>
> URL: http://llvm.org/viewvc/llvm-project?rev=172333&view=rev
> Log:
> Formatter: Prefer breaking before ObjC selector names over breaking at their ':'
>
> Before:
>   if ((self = [super initWithContentRect:contentRect styleMask:
>                   styleMask backing:NSBackingStoreBuffered defer:YES])) {
>
> Now:
>   if ((self = [super initWithContentRect:contentRect styleMask:styleMask
>                   backing:NSBackingStoreBuffered defer:YES])) {
>
>
>
> Modified:
>     cfe/trunk/lib/Format/Format.cpp
>     cfe/trunk/unittests/Format/FormatTest.cpp
>
> Modified: cfe/trunk/lib/Format/Format.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Format/Format.cpp?rev=172333&r1=172332&r2=172333&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Format/Format.cpp (original)
> +++ cfe/trunk/lib/Format/Format.cpp Sat Jan 12 16:48:47 2013
> @@ -170,7 +170,7 @@
>
>  /// \brief Checks whether the (remaining) \c UnwrappedLine starting with
>  /// \p RootToken fits into \p Limit columns.
> -bool fitsIntoLimit(const AnnotatedToken &RootToken, unsigned Limit) {
> +static bool fitsIntoLimit(const AnnotatedToken &RootToken, unsigned Limit) {
>    unsigned Columns = RootToken.FormatTok.TokenLength;
>    bool FitsOnALine = true;
>    const AnnotatedToken *Tok = &RootToken;
> @@ -188,6 +188,15 @@
>    return FitsOnALine;
>  }
>
> +/// \brief Returns if a token is an Objective-C selector name.
> +///
> +/// For example, "bar" is a selector name in [foo bar:(4 + 5)]
> +static bool isObjCSelectorName(const AnnotatedToken &Tok) {
> +  return Tok.is(tok::identifier) && !Tok.Children.empty() &&
> +         Tok.Children[0].is(tok::colon) &&
> +         Tok.Children[0].Type == TT_ObjCMethodExpr;
> +}
> +
>  class UnwrappedLineFormatter {
>  public:
>    UnwrappedLineFormatter(const FormatStyle &Style, SourceManager &SourceMgr,
> @@ -479,6 +488,14 @@
>      if (Left.is(tok::semi) || Left.is(tok::comma) ||
>          Left.ClosesTemplateDeclaration)
>        return 0;
> +
> +    // In Objective-C method expressions, prefer breaking before "param:" over
> +    // breaking after it.
> +    if (isObjCSelectorName(Right))
> +      return 0;
> +    if (Right.is(tok::colon) && Right.Type == TT_ObjCMethodExpr)
> +      return 20;
> +
>      if (Left.is(tok::l_paren))
>        return 20;
>
> @@ -1188,6 +1205,8 @@
>        return false;
>      if (Left.is(tok::colon) && Left.Type == TT_ObjCMethodExpr)
>        return true;
> +    if (isObjCSelectorName(Right))
> +      return true;
>      if (Left.ClosesTemplateDeclaration)
>        return true;
>      if (Left.Type == TT_PointerOrReference || Left.Type == TT_TemplateCloser ||
>
> Modified: cfe/trunk/unittests/Format/FormatTest.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/Format/FormatTest.cpp?rev=172333&r1=172332&r2=172333&view=diff
> ==============================================================================
> --- cfe/trunk/unittests/Format/FormatTest.cpp (original)
> +++ cfe/trunk/unittests/Format/FormatTest.cpp Sat Jan 12 16:48:47 2013
> @@ -1537,12 +1537,18 @@
>    verifyFormat("throw [self errorFor:a];");
>    verifyFormat("@throw [self errorFor:a];");
>
> -  // The formatting of this isn't ideal yet. It tests that the formatter doesn't
> -  // break after "backing" but before ":", which would be at 80 columns.
> +  // This tests that the formatter doesn't break after "backing" but before ":",
> +  // which would be at 80 columns.
>    verifyFormat(
>        "void f() {\n"
> -      "  if ((self = [super initWithContentRect:contentRect styleMask:\n"
> -      "                  styleMask backing:NSBackingStoreBuffered defer:YES]))");
> +      "  if ((self = [super initWithContentRect:contentRect styleMask:styleMask\n"
> +      "                  backing:NSBackingStoreBuffered defer:YES]))");
> +
> +  verifyFormat("[foo setasdfasdffffffffffffadfasdfasdf:\n"
> +               "    [bar dowith:asdfdsfasdfasdfasfasfasfsafasdfsfad]];");

Whoops! Removed these two lines in r172334.

> +
> +  verifyFormat("[foo checkThatBreakingAfterColonWorksOk:\n"
> +               "    [bar ifItDoes:reduceOverallLineLengthLikeInThisCase]];");
>
>  }
>
> @@ -1582,6 +1588,7 @@
>    verifyFormat("@'c'");
>    verifyFormat("@true");
>    verifyFormat("NSNumber *smallestInt = @(-INT_MAX - 1);");
> +  // FIXME: Array and dictionary literals need more work.
>    verifyFormat("@[");
>    verifyFormat("@{");
>
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits



More information about the cfe-commits mailing list