diff --git a/clang/lib/Format/UnwrappedLineFormatter.cpp b/clang/lib/Format/UnwrappedLineFormatter.cpp index f229742b19d97..33be74dfe1b9f 100644 --- a/clang/lib/Format/UnwrappedLineFormatter.cpp +++ b/clang/lib/Format/UnwrappedLineFormatter.cpp @@ -1418,12 +1418,19 @@ unsigned UnwrappedLineFormatter::format( return Penalty; } -static auto newlinesBeforeLine(const AnnotatedLine &Line, - const AnnotatedLine *PreviousLine, - const AnnotatedLine *PrevPrevLine, - const SmallVectorImpl &Lines, - const FormatStyle &Style) { - const auto &RootToken = *Line.First; +void UnwrappedLineFormatter::formatFirstToken( + const AnnotatedLine &Line, const AnnotatedLine *PreviousLine, + const AnnotatedLine *PrevPrevLine, + const SmallVectorImpl &Lines, unsigned Indent, + unsigned NewlineIndent) { + FormatToken &RootToken = *Line.First; + if (RootToken.is(tok::eof)) { + unsigned Newlines = std::min(RootToken.NewlinesBefore, 1u); + unsigned TokenIndent = Newlines ? NewlineIndent : 0; + Whitespaces->replaceWhitespace(RootToken, Newlines, TokenIndent, + TokenIndent); + return; + } unsigned Newlines = std::min(RootToken.NewlinesBefore, Style.MaxEmptyLinesToKeep + 1); // Remove empty lines before "}" where applicable. @@ -1503,29 +1510,6 @@ static auto newlinesBeforeLine(const AnnotatedLine &Line, } } - return Newlines; -} - -void UnwrappedLineFormatter::formatFirstToken( - const AnnotatedLine &Line, const AnnotatedLine *PreviousLine, - const AnnotatedLine *PrevPrevLine, - const SmallVectorImpl &Lines, unsigned Indent, - unsigned NewlineIndent) { - FormatToken &RootToken = *Line.First; - if (RootToken.is(tok::eof)) { - unsigned Newlines = - std::min(RootToken.NewlinesBefore, - Style.KeepEmptyLinesAtEOF ? Style.MaxEmptyLinesToKeep + 1 : 1); - unsigned TokenIndent = Newlines ? NewlineIndent : 0; - Whitespaces->replaceWhitespace(RootToken, Newlines, TokenIndent, - TokenIndent); - return; - } - - const auto Newlines = - RootToken.Finalized - ? RootToken.NewlinesBefore - : newlinesBeforeLine(Line, PreviousLine, PrevPrevLine, Lines, Style); if (Newlines) Indent = NewlineIndent; diff --git a/clang/unittests/Format/FormatTest.cpp b/clang/unittests/Format/FormatTest.cpp index adc1eda41a91a..9a0194be7044f 100644 --- a/clang/unittests/Format/FormatTest.cpp +++ b/clang/unittests/Format/FormatTest.cpp @@ -12856,22 +12856,6 @@ TEST_F(FormatTest, FormatsAfterAccessModifiers) { " void f() {}\n" "};\n", Style); - verifyFormat("struct foo {\n" - "#ifdef FOO\n" - "#else\n" - "private:\n" - "\n" - "#endif\n" - "};", - "struct foo {\n" - "#ifdef FOO\n" - "#else\n" - "private:\n" - "\n" - "\n" - "#endif\n" - "};", - Style); Style.EmptyLineAfterAccessModifier = FormatStyle::ELAAMS_Always; verifyFormat("struct foo {\n"