Author: krasimir Date: Tue Feb 27 11:07:47 2018 New Revision: 326227 URL: http://llvm.org/viewvc/llvm-project?rev=326227&view=rev Log: [clang-format] Format operator key in protos
Summary: This fixes a glitch where ``operator: value`` in a text proto would mess up the underlying formatting since it gets parsed as a kw_operator instead of an identifier. Subscribers: klimek, cfe-commits Differential Revision: https://reviews.llvm.org/D43830 Modified: cfe/trunk/lib/Format/TokenAnnotator.cpp cfe/trunk/unittests/Format/FormatTestProto.cpp cfe/trunk/unittests/Format/FormatTestTextProto.cpp Modified: cfe/trunk/lib/Format/TokenAnnotator.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Format/TokenAnnotator.cpp?rev=326227&r1=326226&r2=326227&view=diff ============================================================================== --- cfe/trunk/lib/Format/TokenAnnotator.cpp (original) +++ cfe/trunk/lib/Format/TokenAnnotator.cpp Tue Feb 27 11:07:47 2018 @@ -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)) Modified: cfe/trunk/unittests/Format/FormatTestProto.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/Format/FormatTestProto.cpp?rev=326227&r1=326226&r2=326227&view=diff ============================================================================== --- cfe/trunk/unittests/Format/FormatTestProto.cpp (original) +++ cfe/trunk/unittests/Format/FormatTestProto.cpp Tue Feb 27 11:07:47 2018 @@ -478,5 +478,17 @@ TEST_F(FormatTestProto, FormatsRepeatedL "};"); } +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 Modified: cfe/trunk/unittests/Format/FormatTestTextProto.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/Format/FormatTestTextProto.cpp?rev=326227&r1=326226&r2=326227&view=diff ============================================================================== --- cfe/trunk/unittests/Format/FormatTestTextProto.cpp (original) +++ cfe/trunk/unittests/Format/FormatTestTextProto.cpp Tue Feb 27 11:07:47 2018 @@ -440,5 +440,17 @@ TEST_F(FormatTestTextProto, FormatsRepea 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 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits