summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Jasper <djasper@google.com>2013-02-12 16:51:23 +0000
committerDaniel Jasper <djasper@google.com>2013-02-12 16:51:23 +0000
commit2204562acdc8eb94c2a2b7088e2fc0dc7a0f70e3 (patch)
tree51d2be968005bdcfe1cd22010e85f969becbc162
parent5e76aa971418b5aa6736ebcdf1644c74687f126b (diff)
downloadbcm5719-llvm-2204562acdc8eb94c2a2b7088e2fc0dc7a0f70e3.tar.gz
bcm5719-llvm-2204562acdc8eb94c2a2b7088e2fc0dc7a0f70e3.zip
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() {} llvm-svn: 174978
-rw-r--r--clang/lib/Format/Format.cpp15
-rw-r--r--clang/unittests/Format/FormatTest.cpp3
2 files changed, 12 insertions, 6 deletions
diff --git a/clang/lib/Format/Format.cpp b/clang/lib/Format/Format.cpp
index 347e31470d5..f29308e509c 100644
--- a/clang/lib/Format/Format.cpp
+++ b/clang/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/clang/unittests/Format/FormatTest.cpp b/clang/unittests/Format/FormatTest.cpp
index e9520b618c3..f1cef2a03d1 100644
--- a/clang/unittests/Format/FormatTest.cpp
+++ b/clang/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
OpenPOWER on IntegriCloud