diff options
Diffstat (limited to 'lib/Format/BreakableToken.cpp')
| -rw-r--r-- | lib/Format/BreakableToken.cpp | 18 | 
1 files changed, 12 insertions, 6 deletions
| diff --git a/lib/Format/BreakableToken.cpp b/lib/Format/BreakableToken.cpp index 26f1371b4092..66e935abdf55 100644 --- a/lib/Format/BreakableToken.cpp +++ b/lib/Format/BreakableToken.cpp @@ -106,7 +106,7 @@ getStringSplit(StringRef Text, unsigned UsedColumns, unsigned ColumnLimit,            Text.substr(0, Advance), UsedColumns + Chars, TabWidth, Encoding);      } -    if (Chars > MaxSplit || Text.size() == Advance) +    if (Chars > MaxSplit || Text.size() <= Advance)        break;      if (IsBlank(Text[0])) @@ -277,6 +277,8 @@ BreakableBlockComment::BreakableBlockComment(      // If the last line is empty, the closing "*/" will have a star.      if (i + 1 == e && Lines[i].empty())        break; +    if (!Lines[i].empty() && i + 1 != e && Decoration.startswith(Lines[i])) +      continue;      while (!Lines[i].startswith(Decoration))        Decoration = Decoration.substr(0, Decoration.size() - 1);    } @@ -297,14 +299,18 @@ BreakableBlockComment::BreakableBlockComment(        }        continue;      } +      // The first line already excludes the star.      // For all other lines, adjust the line to exclude the star and      // (optionally) the first whitespace. -    StartOfLineColumn[i] += Decoration.size(); -    Lines[i] = Lines[i].substr(Decoration.size()); -    LeadingWhitespace[i] += Decoration.size(); -    IndentAtLineBreak = -        std::min<int>(IndentAtLineBreak, std::max(0, StartOfLineColumn[i])); +    unsigned DecorationSize = +        Decoration.startswith(Lines[i]) ? Lines[i].size() : Decoration.size(); +    StartOfLineColumn[i] += DecorationSize; +    Lines[i] = Lines[i].substr(DecorationSize); +    LeadingWhitespace[i] += DecorationSize; +    if (!Decoration.startswith(Lines[i])) +      IndentAtLineBreak = +          std::min<int>(IndentAtLineBreak, std::max(0, StartOfLineColumn[i]));    }    IndentAtLineBreak = std::max<unsigned>(IndentAtLineBreak, Decoration.size());    DEBUG({ | 
