diff options
author | Daniel Jasper <djasper@google.com> | 2013-02-26 13:10:34 +0000 |
---|---|---|
committer | Daniel Jasper <djasper@google.com> | 2013-02-26 13:10:34 +0000 |
commit | 1ef81d57fbcc26080c98e140e7c82db6d2aeba87 (patch) | |
tree | 2b2e4a53bd27b567282ce6f5b8a5ac77ccbb1daf | |
parent | 0fb382bfbfbfee73763a213b2257042ed342c4b0 (diff) |
Only keep empty lines in unwrapped lines if they preceed a line comment.
Empty lines followed by line comments are often used to highlight the
comment. Empty lines somewhere else are usually left over from manual or
automatic formatting and should probably be removed.
Before (clang-format would keep):
S s = {
a,
b
};
After:
S s = { a, b };
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176086 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Format/Format.cpp | 8 | ||||
-rw-r--r-- | lib/Format/TokenAnnotator.cpp | 2 | ||||
-rw-r--r-- | unittests/Format/FormatTest.cpp | 22 |
3 files changed, 19 insertions, 13 deletions
diff --git a/lib/Format/Format.cpp b/lib/Format/Format.cpp index 7687aa347b..8bc414cd02 100644 --- a/lib/Format/Format.cpp +++ b/lib/Format/Format.cpp @@ -518,9 +518,11 @@ private: State.Stack.back().BreakBeforeParameter = false; if (!DryRun) { - unsigned NewLines = - std::max(1u, std::min(Current.FormatTok.NewlinesBefore, - Style.MaxEmptyLinesToKeep + 1)); + unsigned NewLines = 1; + if (Current.Type == TT_LineComment) + NewLines = + std::max(NewLines, std::min(Current.FormatTok.NewlinesBefore, + Style.MaxEmptyLinesToKeep + 1)); if (!Line.InPPDirective) Whitespaces.replaceWhitespace(Current, NewLines, State.Column, WhitespaceStartColumn, Style); diff --git a/lib/Format/TokenAnnotator.cpp b/lib/Format/TokenAnnotator.cpp index 86daa8d60e..08290b905a 100644 --- a/lib/Format/TokenAnnotator.cpp +++ b/lib/Format/TokenAnnotator.cpp @@ -842,8 +842,6 @@ void TokenAnnotator::calculateFormattingInformation(AnnotatedLine &Line) { Current->Parent->is(tok::string_literal) && Current->Children[0].is(tok::string_literal)) { Current->MustBreakBefore = true; - } else if (Current->FormatTok.NewlinesBefore > 1) { - Current->MustBreakBefore = true; } else { Current->MustBreakBefore = false; } diff --git a/unittests/Format/FormatTest.cpp b/unittests/Format/FormatTest.cpp index a902466c4c..53f3773d5c 100644 --- a/unittests/Format/FormatTest.cpp +++ b/unittests/Format/FormatTest.cpp @@ -588,17 +588,23 @@ TEST_F(FormatTest, CommentsInStaticInitializers) { EXPECT_EQ("S s = {\n" " // Some comment\n" - " a\n" + " a,\n" "\n" " // Comment after empty line\n" " b\n" - "}", format("S s = {\n" - " // Some comment\n" - " a\n" - " \n" - " // Comment after empty line\n" - " b\n" - "}")); + "}", + format("S s = {\n" + " // Some comment\n" + " a,\n" + " \n" + " // Comment after empty line\n" + " b\n" + "}")); + EXPECT_EQ("S s = { a, b };", format("S s = {\n" + " a,\n" + "\n" + " b\n" + "};")); } //===----------------------------------------------------------------------===// |