This revision was landed with ongoing or failed builds. This revision was automatically updated to reflect the committed changes. Closed by commit rG2c6ecc9db624: [clang-format] Add an option to insert a newline at EOF if missing (authored by owenpan).
Changed prior to commit: https://reviews.llvm.org/D141035?vs=486484&id=486693#toc Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D141035/new/ https://reviews.llvm.org/D141035 Files: clang/docs/ClangFormatStyleOptions.rst clang/docs/ReleaseNotes.rst clang/include/clang/Format/Format.h clang/lib/Format/Format.cpp clang/lib/Format/TokenAnnotator.cpp clang/unittests/Format/ConfigParseTest.cpp clang/unittests/Format/FormatTest.cpp
Index: clang/unittests/Format/FormatTest.cpp =================================================================== --- clang/unittests/Format/FormatTest.cpp +++ clang/unittests/Format/FormatTest.cpp @@ -25171,6 +25171,14 @@ EXPECT_EQ(Code, format(Code, Style)); } +TEST_F(FormatTest, InsertNewlineAtEOF) { + FormatStyle Style = getLLVMStyle(); + Style.InsertNewlineAtEOF = true; + + verifyFormat("int i;\n", Style); + verifyFormat("int i;\n", "int i;", Style); +} + } // namespace } // namespace format } // namespace clang Index: clang/unittests/Format/ConfigParseTest.cpp =================================================================== --- clang/unittests/Format/ConfigParseTest.cpp +++ clang/unittests/Format/ConfigParseTest.cpp @@ -167,6 +167,7 @@ CHECK_PARSE_BOOL(IndentRequiresClause); CHECK_PARSE_BOOL(IndentWrappedFunctionNames); CHECK_PARSE_BOOL(InsertBraces); + CHECK_PARSE_BOOL(InsertNewlineAtEOF); CHECK_PARSE_BOOL(KeepEmptyLinesAtTheStartOfBlocks); CHECK_PARSE_BOOL(ObjCSpaceAfterProperty); CHECK_PARSE_BOOL(ObjCSpaceBeforeProtocolList); Index: clang/lib/Format/TokenAnnotator.cpp =================================================================== --- clang/lib/Format/TokenAnnotator.cpp +++ clang/lib/Format/TokenAnnotator.cpp @@ -1289,6 +1289,10 @@ Tok->setType(TT_TrailingReturnArrow); } break; + case tok::eof: + if (Style.InsertNewlineAtEOF && Tok->NewlinesBefore == 0) + Tok->NewlinesBefore = 1; + break; default: break; } Index: clang/lib/Format/Format.cpp =================================================================== --- clang/lib/Format/Format.cpp +++ clang/lib/Format/Format.cpp @@ -899,6 +899,7 @@ IO.mapOptional("IndentWrappedFunctionNames", Style.IndentWrappedFunctionNames); IO.mapOptional("InsertBraces", Style.InsertBraces); + IO.mapOptional("InsertNewlineAtEOF", Style.InsertNewlineAtEOF); IO.mapOptional("InsertTrailingCommas", Style.InsertTrailingCommas); IO.mapOptional("IntegerLiteralSeparator", Style.IntegerLiteralSeparator); IO.mapOptional("JavaImportGroups", Style.JavaImportGroups); @@ -1355,6 +1356,7 @@ LLVMStyle.IndentWidth = 2; LLVMStyle.IndentWrappedFunctionNames = false; LLVMStyle.InsertBraces = false; + LLVMStyle.InsertNewlineAtEOF = false; LLVMStyle.InsertTrailingCommas = FormatStyle::TCS_None; LLVMStyle.IntegerLiteralSeparator = {/*Binary=*/0, /*Decimal=*/0, /*Hex=*/0}; LLVMStyle.JavaScriptQuotes = FormatStyle::JSQS_Leave; Index: clang/include/clang/Format/Format.h =================================================================== --- clang/include/clang/Format/Format.h +++ clang/include/clang/Format/Format.h @@ -2450,6 +2450,10 @@ /// \version 15 bool InsertBraces; + /// Insert a newline at end of file if missing. + /// \version 16 + bool InsertNewlineAtEOF; + /// The style of inserting trailing commas into container literals. enum TrailingCommaStyle : int8_t { /// Do not insert trailing commas. @@ -4151,6 +4155,7 @@ IndentWidth == R.IndentWidth && IndentWrappedFunctionNames == R.IndentWrappedFunctionNames && InsertBraces == R.InsertBraces && + InsertNewlineAtEOF == R.InsertNewlineAtEOF && IntegerLiteralSeparator.Binary == R.IntegerLiteralSeparator.Binary && IntegerLiteralSeparator.Decimal == R.IntegerLiteralSeparator.Decimal && Index: clang/docs/ReleaseNotes.rst =================================================================== --- clang/docs/ReleaseNotes.rst +++ clang/docs/ReleaseNotes.rst @@ -876,6 +876,7 @@ in C++, C#, Java, and JavaScript. - Add ``BreakAfterAttributes`` option for breaking after a group of C++11 attributes before a function declaration/definition name. +- Add ``InsertNewlineAtEOF`` option for inserting a newline at EOF if missing. clang-extdef-mapping -------------------- Index: clang/docs/ClangFormatStyleOptions.rst =================================================================== --- clang/docs/ClangFormatStyleOptions.rst +++ clang/docs/ClangFormatStyleOptions.rst @@ -3162,6 +3162,9 @@ --i; --i; while (i); } while (i); +**InsertNewlineAtEOF** (``Boolean``) :versionbadge:`clang-format 16` + Insert a newline at end of file if missing. + **InsertTrailingCommas** (``TrailingCommaStyle``) :versionbadge:`clang-format 11` If set to ``TCS_Wrapped`` will insert trailing commas in container literals (arrays and objects) that wrap across multiple lines.
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits