From 2228ac5cb881b6a301343511113a1a9b2db0e651 Mon Sep 17 00:00:00 2001 From: Krasimir Georgiev Date: Fri, 10 May 2019 09:15:11 +0000 Subject: [PATCH] Revert "Revert "[clang-format] Keep protobuf "package" statement on one line"" Summary: Top-level "package" and "import" statements should generally be kept on one line, for all languages. ---- This reverts commit rL356912. The regression from rL356835 was fixed via rC358275. Reviewers: krasimir, sammccall, MyDeveloperDay, xinz, dchai, klimek Reviewed By: krasimir, xinz, dchai Subscribers: cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D60661 llvm-svn: 360411 --- clang/lib/Format/TokenAnnotator.cpp | 6 +++--- clang/unittests/Format/FormatTestProto.cpp | 10 ++++++++++ 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/clang/lib/Format/TokenAnnotator.cpp b/clang/lib/Format/TokenAnnotator.cpp index ddaacaab77751..4e255700d4dc0 100644 --- a/clang/lib/Format/TokenAnnotator.cpp +++ b/clang/lib/Format/TokenAnnotator.cpp @@ -1119,10 +1119,10 @@ class AnnotatingParser { return LT_ImportStatement; } - // In .proto files, top-level options are very similar to import statements - // and should not be line-wrapped. + // In .proto files, top-level options and package statements are very + // similar to import statements and should not be line-wrapped. if (Style.Language == FormatStyle::LK_Proto && Line.Level == 0 && - CurrentToken->is(Keywords.kw_option)) { + CurrentToken->isOneOf(Keywords.kw_option, Keywords.kw_package)) { next(); if (CurrentToken && CurrentToken->is(tok::identifier)) { while (CurrentToken) diff --git a/clang/unittests/Format/FormatTestProto.cpp b/clang/unittests/Format/FormatTestProto.cpp index ac042316bc291..4258c169e884e 100644 --- a/clang/unittests/Format/FormatTestProto.cpp +++ b/clang/unittests/Format/FormatTestProto.cpp @@ -397,6 +397,16 @@ TEST_F(FormatTestProto, FormatsOptions) { "};"); } +TEST_F(FormatTestProto, DoesntWrapPackageStatements) { + verifyFormat( + "package" + " some.really.long.package.that.exceeds.the.column.limit00000000;"); +} + +TEST_F(FormatTestProto, TrailingCommentAfterPackage) { + verifyFormat("package foo.pkg; // comment\n"); +} + TEST_F(FormatTestProto, FormatsService) { verifyFormat("service SearchService {\n" " rpc Search(SearchRequest) returns (SearchResponse) {\n"