forked from OSchip/llvm-project
[clang-format] Fix raw string prefix penalty
Summary: We weren't penalizing cases where the raw string prefix goes over the column limit. Subscribers: klimek, cfe-commits Differential Revision: https://reviews.llvm.org/D44563 llvm-svn: 327708
This commit is contained in:
parent
23578e7d3c
commit
ce00978b10
|
@ -1454,7 +1454,13 @@ unsigned ContinuationIndenter::reformatRawStringLiteral(
|
|||
unsigned RawLastLineEndColumn = getLastLineEndColumn(
|
||||
*NewCode, FirstStartColumn, Style.TabWidth, Encoding);
|
||||
State.Column = RawLastLineEndColumn + NewSuffixSize;
|
||||
return Fixes.second;
|
||||
// Since we're updating the column to after the raw string literal here, we
|
||||
// have to manually add the penalty for the prefix R"delim( over the column
|
||||
// limit.
|
||||
unsigned PrefixExcessCharacters =
|
||||
StartColumn + NewPrefixSize > Style.ColumnLimit ?
|
||||
StartColumn + NewPrefixSize - Style.ColumnLimit : 0;
|
||||
return Fixes.second + PrefixExcessCharacters * Style.PenaltyExcessCharacter;
|
||||
}
|
||||
|
||||
unsigned ContinuationIndenter::addMultilineToken(const FormatToken &Current,
|
||||
|
|
|
@ -794,6 +794,34 @@ TEST_F(FormatTestRawStrings, UpdatesToCanonicalDelimiters) {
|
|||
format(R"test(a = R"pb(key:")proto")pb";)test", Style));
|
||||
}
|
||||
|
||||
TEST_F(FormatTestRawStrings, PenalizesPrefixExcessChars) {
|
||||
FormatStyle Style = getRawStringPbStyleWithColumns(60);
|
||||
|
||||
// The '(' in R"pb is at column 60, no break.
|
||||
expect_eq(R"test(
|
||||
xxxxxxxaaaaax wwwwwww = _Verxrrrrrrrr(PARSE_TEXT_PROTO(R"pb(
|
||||
Category: aaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
)pb"));
|
||||
)test",
|
||||
format(R"test(
|
||||
xxxxxxxaaaaax wwwwwww = _Verxrrrrrrrr(PARSE_TEXT_PROTO(R"pb(
|
||||
Category: aaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
)pb"));
|
||||
)test", Style));
|
||||
// The '(' in R"pb is at column 61, break.
|
||||
expect_eq(R"test(
|
||||
xxxxxxxaaaaax wwwwwww =
|
||||
_Verxrrrrrrrrr(PARSE_TEXT_PROTO(R"pb(
|
||||
Category: aaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
)pb"));
|
||||
)test",
|
||||
format(R"test(
|
||||
xxxxxxxaaaaax wwwwwww = _Verxrrrrrrrrr(PARSE_TEXT_PROTO(R"pb(
|
||||
Category: aaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
)pb"));
|
||||
)test", Style));
|
||||
}
|
||||
|
||||
} // end namespace
|
||||
} // end namespace format
|
||||
} // end namespace clang
|
||||
|
|
Loading…
Reference in New Issue