aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Jasper <djasper@google.com>2013-03-01 18:11:39 +0000
committerDaniel Jasper <djasper@google.com>2013-03-01 18:11:39 +0000
commit516fb31d0536040334032e2af6b62cd6a5479d1c (patch)
tree63522ac85d3162dbef52c43d530912adb1113695
parent8a5d7cd100ebfb8c6b353ee4ad5b14ab4105d32d (diff)
Remove whitespace at end of file.
This fixes the rest of llvm.org/PR15062. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176361 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Format/Format.cpp10
-rw-r--r--lib/Format/UnwrappedLineParser.cpp11
-rw-r--r--unittests/Format/FormatTest.cpp4
3 files changed, 21 insertions, 4 deletions
diff --git a/lib/Format/Format.cpp b/lib/Format/Format.cpp
index bb7e0fa7e5..a3c5e503b9 100644
--- a/lib/Format/Format.cpp
+++ b/lib/Format/Format.cpp
@@ -1132,7 +1132,15 @@ public:
IndentForLevel.resize(TheLine.Level + 1);
bool WasMoved =
PreviousLineWasTouched && TheLine.First.FormatTok.NewlinesBefore == 0;
- if (TheLine.Type != LT_Invalid && (WasMoved || touchesRanges(TheLine))) {
+ if (TheLine.First.is(tok::eof)) {
+ if (PreviousLineWasTouched) {
+ unsigned NewLines =
+ std::min(TheLine.First.FormatTok.NewlinesBefore, 1u);
+ Whitespaces.replaceWhitespace(TheLine.First, NewLines, /*Indent*/ 0,
+ /*WhitespaceStartColumn*/ 0, Style);
+ }
+ } else if (TheLine.Type != LT_Invalid &&
+ (WasMoved || touchesRanges(TheLine))) {
unsigned LevelIndent = getIndent(IndentForLevel, TheLine.Level);
unsigned Indent = LevelIndent;
if (static_cast<int>(Indent) + Offset >= 0)
diff --git a/lib/Format/UnwrappedLineParser.cpp b/lib/Format/UnwrappedLineParser.cpp
index 28522a3e32..cdd77759fd 100644
--- a/lib/Format/UnwrappedLineParser.cpp
+++ b/lib/Format/UnwrappedLineParser.cpp
@@ -138,6 +138,11 @@ bool UnwrappedLineParser::parse() {
I != E; ++I) {
Callback.consumeUnwrappedLine(*I);
}
+
+ // Create line with eof token.
+ pushToken(FormatTok);
+ Callback.consumeUnwrappedLine(*Line);
+
return Error;
}
@@ -776,14 +781,14 @@ void UnwrappedLineParser::addUnwrappedLine() {
CurrentLines->push_back(*Line);
Line->Tokens.clear();
if (CurrentLines == &Lines && !PreprocessorDirectives.empty()) {
- for (std::vector<UnwrappedLine>::iterator I = PreprocessorDirectives
- .begin(), E = PreprocessorDirectives.end();
+ for (std::vector<UnwrappedLine>::iterator
+ I = PreprocessorDirectives.begin(),
+ E = PreprocessorDirectives.end();
I != E; ++I) {
CurrentLines->push_back(*I);
}
PreprocessorDirectives.clear();
}
-
}
bool UnwrappedLineParser::eof() const {
diff --git a/unittests/Format/FormatTest.cpp b/unittests/Format/FormatTest.cpp
index 64de86a926..8cedfcedfd 100644
--- a/unittests/Format/FormatTest.cpp
+++ b/unittests/Format/FormatTest.cpp
@@ -166,6 +166,10 @@ TEST_F(FormatTest, OnlyGeneratesNecessaryReplacements) {
TEST_F(FormatTest, RemovesTrailingWhitespaceOfFormattedLine) {
EXPECT_EQ("int a;\nint b;", format("int a; \nint b;", 0, 0, getLLVMStyle()));
+ EXPECT_EQ("int a;", format("int a; "));
+ EXPECT_EQ("int a;\n", format("int a; \n \n \n "));
+ EXPECT_EQ("int a;\nint b; ",
+ format("int a; \nint b; ", 0, 0, getLLVMStyle()));
}
TEST_F(FormatTest, ReformatsMovedLines) {