From: Daniel Jasper Date: Tue, 26 Feb 2013 13:10:34 +0000 (+0000) Subject: Only keep empty lines in unwrapped lines if they preceed a line comment. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=1ef81d57fbcc26080c98e140e7c82db6d2aeba87;p=clang 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 --- 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" + "};")); } //===----------------------------------------------------------------------===//