Fix bug in the adjustment to existing lines.
authorDaniel Jasper <djasper@google.com>
Tue, 12 Feb 2013 16:51:23 +0000 (16:51 +0000)
committerDaniel Jasper <djasper@google.com>
Tue, 12 Feb 2013 16:51:23 +0000 (16:51 +0000)
Before (if only the second line was reformatted):
void f() {}
          void g() {}

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

llvm-svn: 174978

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

index 347e314..f29308e 100644 (file)
@@ -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();
index e9520b6..f1cef2a 100644 (file)
@@ -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