forked from OSchip/llvm-project
clang-format: [proto] Improve formatting of text-proto options.
Initial patch and tests by Kaushik Sridharan, thank you! llvm-svn: 214084
This commit is contained in:
parent
3baf5b390d
commit
a382cbe4eb
|
@ -150,7 +150,8 @@ bool ContinuationIndenter::mustBreak(const LineState &State) {
|
|||
Previous.Type != TT_InlineASMColon &&
|
||||
Previous.Type != TT_ConditionalExpr && nextIsMultilineString(State))
|
||||
return true;
|
||||
if (((Previous.Type == TT_DictLiteral && Previous.is(tok::l_brace)) ||
|
||||
if (Style.Language != FormatStyle::LK_Proto &&
|
||||
((Previous.Type == TT_DictLiteral && Previous.is(tok::l_brace)) ||
|
||||
Previous.Type == TT_ArrayInitializerLSquare) &&
|
||||
Style.ColumnLimit > 0 &&
|
||||
getLengthToMatchingParen(Previous) + State.Column > getColumnLimit(State))
|
||||
|
|
|
@ -311,8 +311,7 @@ private:
|
|||
if (CurrentToken->isOneOf(tok::r_paren, tok::r_square))
|
||||
return false;
|
||||
updateParameterCount(Left, CurrentToken);
|
||||
if (CurrentToken->is(tok::colon) &&
|
||||
Style.Language != FormatStyle::LK_Proto) {
|
||||
if (CurrentToken->is(tok::colon)) {
|
||||
if (CurrentToken->getPreviousNonComment()->is(tok::identifier))
|
||||
CurrentToken->getPreviousNonComment()->Type = TT_SelectorName;
|
||||
Left->Type = TT_DictLiteral;
|
||||
|
@ -1683,6 +1682,9 @@ bool TokenAnnotator::mustBreakBefore(const AnnotatedLine &Line,
|
|||
} else if (isAllmanBrace(Left) || isAllmanBrace(Right)) {
|
||||
return Style.BreakBeforeBraces == FormatStyle::BS_Allman ||
|
||||
Style.BreakBeforeBraces == FormatStyle::BS_GNU;
|
||||
} else if (Style.Language == FormatStyle::LK_Proto &&
|
||||
Left.isNot(tok::l_brace) && Right.Type == TT_SelectorName) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// If the last token before a '}' is a comma or a comment, the intention is to
|
||||
|
|
|
@ -98,8 +98,27 @@ TEST_F(FormatTestProto, MessageFieldAttributes) {
|
|||
}
|
||||
|
||||
TEST_F(FormatTestProto, FormatsOptions) {
|
||||
verifyFormat("option java_package = \"my.test.package\";");
|
||||
verifyFormat("option (my_custom_option) = \"abc\";");
|
||||
verifyFormat("option (MyProto.options) = {\n"
|
||||
" field_a: OK\n"
|
||||
" field_b: \"OK\"\n"
|
||||
" field_c: \"OK\"\n"
|
||||
" msg_field: {field_d: 123}\n"
|
||||
"};");
|
||||
|
||||
verifyFormat("option (MyProto.options) = {\n"
|
||||
" field_a: OK\n"
|
||||
" field_b: \"OK\"\n"
|
||||
" field_c: \"OK\"\n"
|
||||
" msg_field: {field_d: 123\n"
|
||||
" field_e: OK}\n"
|
||||
"};");
|
||||
|
||||
verifyFormat("option (MyProto.options) = {\n"
|
||||
" field_a: OK // Comment\n"
|
||||
" field_b: \"OK\"\n"
|
||||
" field_c: \"OK\"\n"
|
||||
" msg_field: {field_d: 123}\n"
|
||||
"};");
|
||||
}
|
||||
|
||||
TEST_F(FormatTestProto, FormatsService) {
|
||||
|
|
Loading…
Reference in New Issue