]> granicus.if.org Git - clang/commitdiff
Only align after assignments on the top level.
authorDaniel Jasper <djasper@google.com>
Wed, 9 Jan 2013 10:40:23 +0000 (10:40 +0000)
committerDaniel Jasper <djasper@google.com>
Wed, 9 Jan 2013 10:40:23 +0000 (10:40 +0000)
This fixes llvm.org/PR14870 and we no longer mess up:
template <typename T1, typename T2 = char, typename T3 = char,
          typename T4 = char>
void f();

It removes the nice aligment for assignments inside other expressions,
but I am not sure those are actually practically relevant. If so, we can
fix those later.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171966 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Format/Format.cpp
unittests/Format/FormatTest.cpp

index 53dc97abece98c4c1a1f6880f0832754ebc13573..1854d70d90a52caa598028a15c2412dc63344a32 100644 (file)
@@ -333,7 +333,9 @@ private:
       if (!DryRun)
         replaceWhitespace(Current, 0, Spaces);
 
-      if (RootToken.isNot(tok::kw_for) &&
+      // FIXME: Do we need to do this for assignments nested in other
+      // expressions?
+      if (RootToken.isNot(tok::kw_for) && ParenLevel == 0 &&
           (getPrecedence(Previous) == prec::Assignment ||
            Previous.is(tok::kw_return)))
         State.Indent[ParenLevel] = State.Column + Spaces;
index 495fc7fee176fbb46ccc29912fa7a22e2141a5a6..d4e5a51bc31d03c95b895a6ec4294cd6d08122ec 100644 (file)
@@ -816,8 +816,9 @@ TEST_F(FormatTest, UnderstandsEquals) {
       "}");
 
   verifyFormat(
+      // FIXME: Does an expression like this ever make sense? If yes, fix.
       "if (int aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa = 100000000 +\n"
-      "                                                           10000000) {\n"
+      "    10000000) {\n"
       "}");
 }
 
@@ -872,7 +873,10 @@ TEST_F(FormatTest, WrapsTemplateDeclarations) {
   verifyFormat("template <typename T>\n"
                "void aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(\n"
                "    int aaaaaaaaaaaaaaaaa);");
-
+  verifyFormat(
+      "template <typename T1, typename T2 = char, typename T3 = char,\n"
+      "          typename T4 = char>\n"
+      "void f();");
 }
 
 TEST_F(FormatTest, UnderstandsTemplateParameters) {