From 9ece2bb8499251f3e7cdf65e7a65b38aaeead0d8 Mon Sep 17 00:00:00 2001
From: Daniel Jasper <djasper@google.com>
Date: Tue, 12 Feb 2013 16:51:23 +0000
Subject: [PATCH] Fix bug in the adjustment to existing lines.

Before (if only the second line was reformatted):
void f() {}
          void g() {}

After:
void f() {}
void g() {}

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174978 91177308-0d34-0410-b5e6-96231b3b80d8
---
 lib/Format/Format.cpp           | 15 +++++++++------
 unittests/Format/FormatTest.cpp |  3 +++
 2 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/lib/Format/Format.cpp b/lib/Format/Format.cpp
index 347e31470d5..f29308e509c 100644
--- a/lib/Format/Format.cpp
+++ b/lib/Format/Format.cpp
@@ -957,12 +957,15 @@ public:
                 TheLine.Last->FormatTok.Tok.getLocation()) +
             Lex.MeasureTokenLength(TheLine.Last->FormatTok.Tok.getLocation(),
                                    SourceMgr, Lex.getLangOpts()) - 1;
-        unsigned Indent = SourceMgr.getSpellingColumnNumber(
-            TheLine.First.FormatTok.Tok.getLocation()) - 1;
-        unsigned LevelIndent = Indent;
-        if (static_cast<int>(LevelIndent) - Offset >= 0)
-          LevelIndent -= Offset;
-        IndentForLevel[TheLine.Level] = LevelIndent;
+        if (TheLine.First.FormatTok.NewlinesBefore > 0 ||
+            TheLine.First.FormatTok.IsFirst) {
+          unsigned Indent = SourceMgr.getSpellingColumnNumber(
+              TheLine.First.FormatTok.Tok.getLocation()) - 1;
+          unsigned LevelIndent = Indent;
+          if (static_cast<int>(LevelIndent) - Offset >= 0)
+            LevelIndent -= Offset;
+          IndentForLevel[TheLine.Level] = LevelIndent;
+        }
       }
     }
     return Whitespaces.generateReplacements();
diff --git a/unittests/Format/FormatTest.cpp b/unittests/Format/FormatTest.cpp
index e9520b618c3..f1cef2a03d1 100644
--- a/unittests/Format/FormatTest.cpp
+++ b/unittests/Format/FormatTest.cpp
@@ -2660,6 +2660,9 @@ TEST_F(FormatTest, ReformatRegionAdjustsIndent) {
             "  }", format("  {\n"
                           "a;\n"
                           "  }", 4, 2, getLLVMStyle()));
+  EXPECT_EQ("void f() {}\n"
+            "void g() {}", format("void f() {}\n"
+                                  "void g() {}", 13, 0, getLLVMStyle()));
 }
 
 } // end namespace tooling
-- 
GitLab