aboutsummaryrefslogtreecommitdiff
path: root/lib/Format/Format.cpp
diff options
context:
space:
mode:
authorManuel Klimek <klimek@google.com>2013-03-01 13:29:19 +0000
committerManuel Klimek <klimek@google.com>2013-03-01 13:29:19 +0000
commitbc30c71d20f05bc39b5dd73f06ee4dede9c55710 (patch)
treea673a3ff9ab97300ccd948938a8d2215f5b550e0 /lib/Format/Format.cpp
parentaf31fd7021e685280da9155e5017f1053b05fdf8 (diff)
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
Diffstat (limited to 'lib/Format/Format.cpp')
-rw-r--r--lib/Format/Format.cpp17
1 files changed, 11 insertions, 6 deletions
diff --git a/lib/Format/Format.cpp b/lib/Format/Format.cpp
index d2b12f6814..01813ef6c8 100644
--- a/lib/Format/Format.cpp
+++ b/lib/Format/Format.cpp
@@ -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() {