зеркало из https://github.com/microsoft/clang-1.git
Implements breaking string literals at slashes.
We now break at a slash if we do not find a space to break on. Also fixes a bug where we would go over the limit when breaking the second line. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176350 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
af31fd7021
Коммит
bc30c71d20
|
@ -720,10 +720,10 @@ private:
|
|||
while (StartColumn + TailLength > getColumnLimit()) {
|
||||
StringRef Text = StringRef(Current.FormatTok.Tok.getLiteralData() +
|
||||
TailOffset, TailLength);
|
||||
if (StartColumn + 1 > getColumnLimit())
|
||||
if (StartColumn + OffsetFromStart + 1 > getColumnLimit())
|
||||
break;
|
||||
StringRef::size_type SplitPoint =
|
||||
getSplitPoint(Text, getColumnLimit() - StartColumn - 1);
|
||||
StringRef::size_type SplitPoint = getSplitPoint(
|
||||
Text, getColumnLimit() - StartColumn - OffsetFromStart - 1);
|
||||
if (SplitPoint == StringRef::npos)
|
||||
break;
|
||||
assert(SplitPoint != 0);
|
||||
|
@ -751,10 +751,15 @@ private:
|
|||
StringRef::size_type
|
||||
getSplitPoint(StringRef Text, StringRef::size_type Offset) {
|
||||
StringRef::size_type SpaceOffset = Text.rfind(' ', Offset);
|
||||
if (SpaceOffset == StringRef::npos && Offset > 0) {
|
||||
if (SpaceOffset != StringRef::npos)
|
||||
return SpaceOffset;
|
||||
StringRef::size_type SlashOffset = Text.rfind('/', Offset);
|
||||
if (SlashOffset != StringRef::npos)
|
||||
return SlashOffset;
|
||||
if (Offset > 1)
|
||||
// Do not split at 0.
|
||||
return Offset - 1;
|
||||
}
|
||||
return SpaceOffset;
|
||||
return StringRef::npos;
|
||||
}
|
||||
|
||||
unsigned getColumnLimit() {
|
||||
|
|
|
@ -3045,9 +3045,15 @@ TEST_F(FormatTest, BreakStringLiterals) {
|
|||
|
||||
EXPECT_EQ(
|
||||
"\"splitmea\"\n"
|
||||
"\"trandompo\"\n"
|
||||
"\"int\"",
|
||||
"\"trandomp\"\n"
|
||||
"\"oint\"",
|
||||
format("\"splitmeatrandompoint\"", getLLVMStyleWithColumns(10)));
|
||||
|
||||
EXPECT_EQ(
|
||||
"\"split/\"\n"
|
||||
"\"pathat/\"\n"
|
||||
"\"slashes\"",
|
||||
format("\"split/pathat/slashes\"", getLLVMStyleWithColumns(10)));
|
||||
}
|
||||
|
||||
} // end namespace tooling
|
||||
|
|
Загрузка…
Ссылка в новой задаче