[clang-format] Fix a bug in AlignConsecutiveAssignments
authorowenca <owenpiano@gmail.com>
Tue, 3 May 2022 19:04:50 +0000 (12:04 -0700)
committerowenca <owenpiano@gmail.com>
Wed, 4 May 2022 19:04:43 +0000 (12:04 -0700)
Fixes #55113.

Differential Revision: https://reviews.llvm.org/D124868

clang/lib/Format/WhitespaceManager.cpp
clang/unittests/Format/FormatTest.cpp

index 2dcc4fd..cf4ef63 100644 (file)
@@ -369,6 +369,8 @@ AlignTokenSequence(const FormatStyle &Style, unsigned Start, unsigned End,
           if (Changes[i].Tok->MatchingParen &&
               Changes[i].Tok->MatchingParen->is(TT_LambdaLBrace))
             return false;
+          if (Changes[ScopeStart].NewlinesBefore > 0)
+            return false;
           return Style.BinPackArguments;
         }
 
index 37f3269..78a3c21 100644 (file)
@@ -18010,11 +18010,21 @@ TEST_F(FormatTest, AlignWithLineBreaks) {
                Style);
   // clang-format on
 
-  Style = getLLVMStyleWithColumns(120);
+  Style = getLLVMStyleWithColumns(20);
   Style.AlignConsecutiveAssignments.Enabled = true;
-  Style.ContinuationIndentWidth = 4;
   Style.IndentWidth = 4;
 
+  verifyFormat("void foo() {\n"
+               "    int i1 = 1;\n"
+               "    int j  = 0;\n"
+               "    int k  = bar(\n"
+               "        argument1,\n"
+               "        argument2);\n"
+               "}",
+               Style);
+
+  Style.ColumnLimit = 120;
+
   // clang-format off
   verifyFormat("void SomeFunc() {\n"
                "    newWatcher.maxAgeUsec = ToLegacyTimestamp(GetMaxAge(FromLegacyTimestamp<milliseconds>(monitorFrequencyUsec),\n"