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

Nico Weber thakis at chromium.org
Wed Jan 23 14:10:10 PST 2013


On Wed, Jan 23, 2013 at 8:58 AM, Daniel Jasper <djasper at google.com> wrote:

> Author: djasper
> Date: Wed Jan 23 10:58:21 2013
> New Revision: 173273
>
> URL: http://llvm.org/viewvc/llvm-project?rev=173273&view=rev
> Log:
> Don't try to align builder-type continuations on assignments.
>
> Before:
> int aaaa = aaaaa().aaaaa() // force break
>            .aaaaa();
> After:
> int aaaa = aaaaa().aaaaa() // force break
>     .aaaaa();
>

Since this pattern is explicitly detected already, should this try to align
on the '.'?


>
> The other indent is just wrong and confusing.
>
> 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=173273&r1=173272&r2=173273&view=diff
>
> ==============================================================================
> --- cfe/trunk/lib/Format/Format.cpp (original)
> +++ cfe/trunk/lib/Format/Format.cpp Wed Jan 23 10:58:21 2013
> @@ -421,9 +421,9 @@
>
>    struct ParenState {
>      ParenState(unsigned Indent, unsigned LastSpace)
> -        : Indent(Indent), LastSpace(LastSpace), FirstLessLess(0),
> -          BreakBeforeClosingBrace(false), BreakAfterComma(false),
> -          HasMultiParameterLine(false) {}
> +        : Indent(Indent), LastSpace(LastSpace), AssignmentColumn(0),
> +          FirstLessLess(0), BreakBeforeClosingBrace(false),
> +          BreakAfterComma(false), HasMultiParameterLine(false) {}
>
>      /// \brief The position to which a specific parenthesis level needs
> to be
>      /// indented.
> @@ -436,6 +436,9 @@
>      ///                             OtherParameter));
>      unsigned LastSpace;
>
> +    /// \brief This is the column of the first token after an assignment.
> +    unsigned AssignmentColumn;
> +
>      /// \brief The position the first "<<" operator encountered on each
> level.
>      ///
>      /// Used to align "<<" operators. 0 if no such operator has been
> encountered
> @@ -457,6 +460,8 @@
>          return Indent < Other.Indent;
>        if (LastSpace != Other.LastSpace)
>          return LastSpace < Other.LastSpace;
> +      if (AssignmentColumn != Other.AssignmentColumn)
> +        return AssignmentColumn < Other.AssignmentColumn;
>        if (FirstLessLess != Other.FirstLessLess)
>          return FirstLessLess < Other.FirstLessLess;
>        if (BreakBeforeClosingBrace != Other.BreakBeforeClosingBrace)
> @@ -547,6 +552,9 @@
>          State.Column = State.ForLoopVariablePos;
>        } else if (State.NextToken->Parent->ClosesTemplateDeclaration) {
>          State.Column = State.Stack[ParenLevel].Indent - 4;
> +      } else if (Previous.Type == TT_BinaryOperator &&
> +                 State.Stack.back().AssignmentColumn != 0) {
> +        State.Column = State.Stack.back().AssignmentColumn;
>        } else {
>          State.Column = State.Stack[ParenLevel].Indent;
>        }
> @@ -587,7 +595,7 @@
>        if (RootToken.isNot(tok::kw_for) && ParenLevel == 0 &&
>            (getPrecedence(Previous) == prec::Assignment ||
>             Previous.is(tok::kw_return)))
> -        State.Stack[ParenLevel].Indent = State.Column + Spaces;
> +        State.Stack.back().AssignmentColumn = State.Column + Spaces;
>        if (Previous.is(tok::l_paren) || Previous.is(tok::l_brace) ||
>            State.NextToken->Parent->Type == TT_TemplateOpener)
>          State.Stack[ParenLevel].Indent = State.Column + Spaces;
>
> Modified: cfe/trunk/unittests/Format/FormatTest.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/Format/FormatTest.cpp?rev=173273&r1=173272&r2=173273&view=diff
>
> ==============================================================================
> --- cfe/trunk/unittests/Format/FormatTest.cpp (original)
> +++ cfe/trunk/unittests/Format/FormatTest.cpp Wed Jan 23 10:58:21 2013
> @@ -1006,10 +1006,10 @@
>  TEST_F(FormatTest, FormatsBuilderPattern) {
>    verifyFormat(
>        "return llvm::StringSwitch<Reference::Kind>(name)\n"
> -      "       .StartsWith(\".eh_frame_hdr\", ORDER_EH_FRAMEHDR)\n"
> -      "       .StartsWith(\".eh_frame\",
> ORDER_EH_FRAME).StartsWith(\".init\", ORDER_INIT)\n"
> -      "       .StartsWith(\".fini\", ORDER_FINI).StartsWith(\".hash\",
> ORDER_HASH)\n"
> -      "       .Default(ORDER_TEXT);\n");
> +      "    .StartsWith(\".eh_frame_hdr\", ORDER_EH_FRAMEHDR)\n"
> +      "    .StartsWith(\".eh_frame\",
> ORDER_EH_FRAME).StartsWith(\".init\", ORDER_INIT)\n"
> +      "    .StartsWith(\".fini\", ORDER_FINI).StartsWith(\".hash\",
> ORDER_HASH)\n"
> +      "    .Default(ORDER_TEXT);\n");
>  }
>
>  TEST_F(FormatTest, DoesNotBreakTrailingAnnotation) {
> @@ -1042,6 +1042,10 @@
>    verifyFormat(
>        "CharSourceRange LineRange = CharSourceRange::getTokenRange(\n"
>        "    Line.Tokens.front().Tok.getLo(),
> Line.Tokens.back().Tok.getLoc());");
> +
> +  verifyFormat(
> +      "aaaaaaaaaaaaaaaaaaaaaaaaaa aaaa = aaaaaaaaaaaaaa(0).aaaa()\n"
> +      "    .aaaaaaaaaaaa(aaaaaaaaaaaaaaaaaaa::aaaaaaaaaaaaaaaaaaaaa);");
>  }
>
>  TEST_F(FormatTest, AlignsAfterAssignments) {
>
>
> _______________________________________________
> 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/20130123/61ca20ae/attachment.html>


More information about the cfe-commits mailing list