forked from OSchip/llvm-project
clang-format: Let a trailing comma in braced lists enforce linebreaks.
Before: vector<int> x{1, 2, 3, 4, }; After: vector<int> x{ 1, 2, 3, 4, }; This fixes llvm.org/PR18519. llvm-svn: 204458
This commit is contained in:
parent
28df0a356e
commit
a125d53a7b
|
@ -1478,6 +1478,7 @@ bool TokenAnnotator::spaceRequiredBefore(const AnnotatedLine &Line,
|
||||||
|
|
||||||
bool TokenAnnotator::mustBreakBefore(const AnnotatedLine &Line,
|
bool TokenAnnotator::mustBreakBefore(const AnnotatedLine &Line,
|
||||||
const FormatToken &Right) {
|
const FormatToken &Right) {
|
||||||
|
const FormatToken &Left = *Right.Previous;
|
||||||
if (Right.is(tok::comment)) {
|
if (Right.is(tok::comment)) {
|
||||||
return Right.Previous->BlockKind != BK_BracedInit &&
|
return Right.Previous->BlockKind != BK_BracedInit &&
|
||||||
Right.Previous->Type != TT_CtorInitializerColon &&
|
Right.Previous->Type != TT_CtorInitializerColon &&
|
||||||
|
@ -1514,6 +1515,13 @@ bool TokenAnnotator::mustBreakBefore(const AnnotatedLine &Line,
|
||||||
Style.Language == FormatStyle::LK_Proto) {
|
Style.Language == FormatStyle::LK_Proto) {
|
||||||
// Don't enums onto single lines in protocol buffers.
|
// Don't enums onto single lines in protocol buffers.
|
||||||
return true;
|
return true;
|
||||||
|
} else if ((Left.is(tok::l_brace) && Left.MatchingParen &&
|
||||||
|
Left.MatchingParen->Previous &&
|
||||||
|
Left.MatchingParen->Previous->is(tok::comma)) ||
|
||||||
|
(Right.is(tok::r_brace) && Left.is(tok::comma))) {
|
||||||
|
// If the last token before a '}' is a comma, the intention is to insert a
|
||||||
|
// line break after it in order to make shuffling around entries easier.
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -4901,6 +4901,9 @@ TEST_F(FormatTest, LayoutBraceInitializersInReturnStatement) {
|
||||||
|
|
||||||
TEST_F(FormatTest, LayoutCxx11ConstructorBraceInitializers) {
|
TEST_F(FormatTest, LayoutCxx11ConstructorBraceInitializers) {
|
||||||
verifyFormat("vector<int> x{1, 2, 3, 4};");
|
verifyFormat("vector<int> x{1, 2, 3, 4};");
|
||||||
|
verifyFormat("vector<int> x{\n"
|
||||||
|
" 1, 2, 3, 4,\n"
|
||||||
|
"};");
|
||||||
verifyFormat("vector<T> x{{}, {}, {}, {}};");
|
verifyFormat("vector<T> x{{}, {}, {}, {}};");
|
||||||
verifyFormat("f({1, 2});");
|
verifyFormat("f({1, 2});");
|
||||||
verifyFormat("auto v = Foo{-1};");
|
verifyFormat("auto v = Foo{-1};");
|
||||||
|
@ -5036,8 +5039,9 @@ TEST_F(FormatTest, FormatsBracedListsInColumnLayout) {
|
||||||
getLLVMStyleWithColumns(43));
|
getLLVMStyleWithColumns(43));
|
||||||
|
|
||||||
// Trailing commas.
|
// Trailing commas.
|
||||||
verifyFormat("vector<int> x = {1, 1, 1, 1,\n"
|
verifyFormat("vector<int> x = {\n"
|
||||||
" 1, 1, 1, 1, };",
|
" 1, 1, 1, 1, 1, 1, 1, 1,\n"
|
||||||
|
"};",
|
||||||
getLLVMStyleWithColumns(39));
|
getLLVMStyleWithColumns(39));
|
||||||
verifyFormat("vector<int> x = {1, 1, 1, 1,\n"
|
verifyFormat("vector<int> x = {1, 1, 1, 1,\n"
|
||||||
" 1, 1, 1, 1, //\n"
|
" 1, 1, 1, 1, //\n"
|
||||||
|
@ -6028,10 +6032,12 @@ TEST_F(FormatTest, ObjCDictLiterals) {
|
||||||
verifyFormat("@{}");
|
verifyFormat("@{}");
|
||||||
verifyFormat("@{@\"one\" : @1}");
|
verifyFormat("@{@\"one\" : @1}");
|
||||||
verifyFormat("return @{@\"one\" : @1;");
|
verifyFormat("return @{@\"one\" : @1;");
|
||||||
verifyFormat("@{@\"one\" : @1, }");
|
verifyFormat("@{@\"one\" : @1}");
|
||||||
|
|
||||||
verifyFormat("@{@\"one\" : @{@2 : @1}}");
|
verifyFormat("@{@\"one\" : @{@2 : @1}}");
|
||||||
verifyFormat("@{@\"one\" : @{@2 : @1}, }");
|
verifyFormat("@{\n"
|
||||||
|
" @\"one\" : @{@2 : @1},\n"
|
||||||
|
"}");
|
||||||
|
|
||||||
verifyFormat("@{1 > 2 ? @\"one\" : @\"two\" : 1 > 2 ? @1 : @2}");
|
verifyFormat("@{1 > 2 ? @\"one\" : @\"two\" : 1 > 2 ? @1 : @2}");
|
||||||
verifyFormat("[self setDict:@{}");
|
verifyFormat("[self setDict:@{}");
|
||||||
|
|
Loading…
Reference in New Issue