diff options
-rw-r--r-- | clang/lib/Format/TokenAnnotator.cpp | 3 | ||||
-rw-r--r-- | clang/unittests/Format/FormatTestProto.cpp | 12 | ||||
-rw-r--r-- | clang/unittests/Format/FormatTestTextProto.cpp | 12 |
3 files changed, 27 insertions, 0 deletions
diff --git a/clang/lib/Format/TokenAnnotator.cpp b/clang/lib/Format/TokenAnnotator.cpp index f56230ee88c..494b98cd733 100644 --- a/clang/lib/Format/TokenAnnotator.cpp +++ b/clang/lib/Format/TokenAnnotator.cpp @@ -759,6 +759,9 @@ private: Tok->Type = TT_BinaryOperator; break; case tok::kw_operator: + if (Style.Language == FormatStyle::LK_TextProto || + Style.Language == FormatStyle::LK_Proto) + break; while (CurrentToken && !CurrentToken->isOneOf(tok::l_paren, tok::semi, tok::r_paren)) { if (CurrentToken->isOneOf(tok::star, tok::amp)) diff --git a/clang/unittests/Format/FormatTestProto.cpp b/clang/unittests/Format/FormatTestProto.cpp index 1d6b7502e09..6db44c765b4 100644 --- a/clang/unittests/Format/FormatTestProto.cpp +++ b/clang/unittests/Format/FormatTestProto.cpp @@ -478,5 +478,17 @@ TEST_F(FormatTestProto, FormatsRepeatedListInitializersInOptions) { "};"); } +TEST_F(FormatTestProto, AcceptsOperatorAsKeyInOptions) { + verifyFormat("option (MyProto.options) = {\n" + " bbbbbbbbb: <\n" + " ccccccccccccccccccccccc: <\n" + " operator: 1\n" + " operator: 2\n" + " operator { key: value }\n" + " >\n" + " >\n" + "};"); +} + } // end namespace tooling } // end namespace clang diff --git a/clang/unittests/Format/FormatTestTextProto.cpp b/clang/unittests/Format/FormatTestTextProto.cpp index 17cde61d2af..1102055ea37 100644 --- a/clang/unittests/Format/FormatTestTextProto.cpp +++ b/clang/unittests/Format/FormatTestTextProto.cpp @@ -440,5 +440,17 @@ TEST_F(FormatTestTextProto, FormatsRepeatedListInitializers) { Style.Cpp11BracedListStyle = true; verifyFormat("keys: [1]", Style); } + +TEST_F(FormatTestTextProto, AcceptsOperatorAsKey) { + verifyFormat("aaaaaaaaaaa: <\n" + " bbbbbbbbb: <\n" + " ccccccccccccccccccccccc: <\n" + " operator: 1\n" + " operator: 2\n" + " operator { key: value }\n" + " >\n" + " >\n" + ">"); +} } // end namespace tooling } // end namespace clang |