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,
|
||||
const FormatToken &Right) {
|
||||
const FormatToken &Left = *Right.Previous;
|
||||
if (Right.is(tok::comment)) {
|
||||
return Right.Previous->BlockKind != BK_BracedInit &&
|
||||
Right.Previous->Type != TT_CtorInitializerColon &&
|
||||
|
@ -1514,6 +1515,13 @@ bool TokenAnnotator::mustBreakBefore(const AnnotatedLine &Line,
|
|||
Style.Language == FormatStyle::LK_Proto) {
|
||||
// Don't enums onto single lines in protocol buffers.
|
||||
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;
|
||||
}
|
||||
|
|
|
@ -4901,6 +4901,9 @@ TEST_F(FormatTest, LayoutBraceInitializersInReturnStatement) {
|
|||
|
||||
TEST_F(FormatTest, LayoutCxx11ConstructorBraceInitializers) {
|
||||
verifyFormat("vector<int> x{1, 2, 3, 4};");
|
||||
verifyFormat("vector<int> x{\n"
|
||||
" 1, 2, 3, 4,\n"
|
||||
"};");
|
||||
verifyFormat("vector<T> x{{}, {}, {}, {}};");
|
||||
verifyFormat("f({1, 2});");
|
||||
verifyFormat("auto v = Foo{-1};");
|
||||
|
@ -5036,8 +5039,9 @@ TEST_F(FormatTest, FormatsBracedListsInColumnLayout) {
|
|||
getLLVMStyleWithColumns(43));
|
||||
|
||||
// Trailing commas.
|
||||
verifyFormat("vector<int> x = {1, 1, 1, 1,\n"
|
||||
" 1, 1, 1, 1, };",
|
||||
verifyFormat("vector<int> x = {\n"
|
||||
" 1, 1, 1, 1, 1, 1, 1, 1,\n"
|
||||
"};",
|
||||
getLLVMStyleWithColumns(39));
|
||||
verifyFormat("vector<int> x = {1, 1, 1, 1,\n"
|
||||
" 1, 1, 1, 1, //\n"
|
||||
|
@ -6028,10 +6032,12 @@ TEST_F(FormatTest, ObjCDictLiterals) {
|
|||
verifyFormat("@{}");
|
||||
verifyFormat("@{@\"one\" : @1}");
|
||||
verifyFormat("return @{@\"one\" : @1;");
|
||||
verifyFormat("@{@\"one\" : @1, }");
|
||||
verifyFormat("@{@\"one\" : @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("[self setDict:@{}");
|
||||
|
|
Loading…
Reference in New Issue