forked from OSchip/llvm-project
clang-format: Slightly row back on r257257.
r257257 change the way clang-format enforces line breaks after a templated type has been line-wrapped. This was to fix an incorrect line break if BinPackParameters is set to false. However, it also leads to an unwanted line break in a different case. Thus, for now, only do this when BinPackParameters is false. This isn't ideal yet, but helps us until we have a better solution. With BinPackParameters: Before: void fffffffffff(aaaaaaaaaaaaaaaaaaaaaaaaaaa<aaaaaaaaaaaaaaaaaaaaaaa, aaaaaaaaaa> aaaaaaaaaa); After: void fffffffffff( aaaaaaaaaaaaaaaaaaaaaaaaaaa<aaaaaaaaaaaaaaaaaaaaaaa, aaaaaaaaaa> aaaaaaaaaa); llvm-svn: 257325
This commit is contained in:
parent
2802456097
commit
06ca0fc69d
|
@ -151,7 +151,11 @@ bool ContinuationIndenter::mustBreak(const LineState &State) {
|
|||
return true;
|
||||
if ((startsNextParameter(Current, Style) || Previous.is(tok::semi) ||
|
||||
(Previous.is(TT_TemplateCloser) && Current.is(TT_StartOfName) &&
|
||||
Previous.NestingLevel == 1) ||
|
||||
// FIXME: This is a temporary workaround for the case where clang-format
|
||||
// sets BreakBeforeParameter to avoid bin packing and this creates a
|
||||
// completely unnecessary line break after a template type that isn't
|
||||
// line-wrapped.
|
||||
(Previous.NestingLevel == 1 || Style.BinPackParameters)) ||
|
||||
(Style.BreakBeforeTernaryOperators && Current.is(TT_ConditionalExpr) &&
|
||||
Previous.isNot(tok::question)) ||
|
||||
(!Style.BreakBeforeTernaryOperators &&
|
||||
|
|
|
@ -4062,10 +4062,23 @@ TEST_F(FormatTest, FormatsDeclarationsOnePerLine) {
|
|||
" int aaaaaaaaaaaaaaaaaaaa,\n"
|
||||
" int aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa) {}",
|
||||
NoBinPacking);
|
||||
|
||||
NoBinPacking.AllowAllParametersOfDeclarationOnNextLine = false;
|
||||
verifyFormat("void aaaaaaaaaaaaaaaaaa(aaaaaaaaaaaaaaaaaaaaaaaaaaaa,\n"
|
||||
" vector<int> bbbbbbbbbbbbbbb);",
|
||||
NoBinPacking);
|
||||
// FIXME: This behavior difference is probably not wanted. However, currently
|
||||
// we cannot distinguish BreakBeforeParameter being set because of the wrapped
|
||||
// template arguments from BreakBeforeParameter being set because of the
|
||||
// one-per-line formatting.
|
||||
verifyFormat(
|
||||
"void fffffffffff(aaaaaaaaaaaaaaaaaaaaaaaaaaa<aaaaaaaaaaaaaaaaaaaaaaa,\n"
|
||||
" aaaaaaaaaa> aaaaaaaaaa);",
|
||||
NoBinPacking);
|
||||
verifyFormat(
|
||||
"void fffffffffff(\n"
|
||||
" aaaaaaaaaaaaaaaaaaaaaaaaaaa<aaaaaaaaaaaaaaaaaaaaaaa, aaaaaaaaaa>\n"
|
||||
" aaaaaaaaaa);");
|
||||
}
|
||||
|
||||
TEST_F(FormatTest, FormatsOneParameterPerLineIfNecessary) {
|
||||
|
|
Loading…
Reference in New Issue