From: Daniel Jasper Date: Fri, 21 Mar 2014 12:58:53 +0000 (+0000) Subject: clang-format: Remove empty lines at the beginning of blocks. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=264449a16459a9e7dec30156ead109a7ac4fb347;p=clang clang-format: Remove empty lines at the beginning of blocks. They very rarely aid readability. Formatting: void f() { if (a) { f(); } } Now leads to: void f() { if (a) { f(); } } git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@204460 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Format/Format.cpp b/lib/Format/Format.cpp index bb2dc47f66..e3e959ef33 100644 --- a/lib/Format/Format.cpp +++ b/lib/Format/Format.cpp @@ -888,6 +888,10 @@ private: if (Newlines == 0 && !RootToken.IsFirst) Newlines = 1; + // Remove empty lines after "{". + if (PreviousLine && PreviousLine->Last->is(tok::l_brace)) + Newlines = 1; + // Insert extra new line before access specifiers. if (PreviousLine && PreviousLine->Last->isOneOf(tok::semi, tok::r_brace) && RootToken.isAccessSpecifier() && RootToken.NewlinesBefore == 1) diff --git a/unittests/Format/FormatTest.cpp b/unittests/Format/FormatTest.cpp index e1b72d9a99..42b9e856e9 100644 --- a/unittests/Format/FormatTest.cpp +++ b/unittests/Format/FormatTest.cpp @@ -174,6 +174,22 @@ TEST_F(FormatTest, RemovesEmptyLines) { "\n" "};")); + // Remove empty lines at the beginning and end of blocks. + EXPECT_EQ("void f() {\n" + " if (a) {\n" + " f();\n" + " }\n" + "}", + format("void f() {\n" + "\n" + " if (a) {\n" + "\n" + " f();\n" + "\n" + " }\n" + "\n" + "}")); + // Don't remove empty lines in more complex control statements. EXPECT_EQ("void f() {\n" " if (a) {\n"