forked from OSchip/llvm-project
Fix assertion in BreakableBlockComment (http://llvm.org/PR21916).
Reviewers: djasper Reviewed By: djasper Subscribers: klimek, cfe-commits Differential Revision: http://reviews.llvm.org/D6894 llvm-svn: 225628
This commit is contained in:
parent
9761e96b01
commit
00691cf3bb
|
@ -303,7 +303,8 @@ BreakableBlockComment::BreakableBlockComment(
|
|||
StartOfLineColumn[i] += Decoration.size();
|
||||
Lines[i] = Lines[i].substr(Decoration.size());
|
||||
LeadingWhitespace[i] += Decoration.size();
|
||||
IndentAtLineBreak = std::min<int>(IndentAtLineBreak, StartOfLineColumn[i]);
|
||||
IndentAtLineBreak =
|
||||
std::min<int>(IndentAtLineBreak, std::max(0, StartOfLineColumn[i]));
|
||||
}
|
||||
IndentAtLineBreak = std::max<unsigned>(IndentAtLineBreak, Decoration.size());
|
||||
DEBUG({
|
||||
|
|
|
@ -212,6 +212,11 @@ private:
|
|||
// StartOfLineColumn[i] is the target column at which Line[i] should be.
|
||||
// Note that this excludes a leading "* " or "*" in case all lines have
|
||||
// a "*" prefix.
|
||||
// The first line's target column is always positive. The remaining lines'
|
||||
// target columns are relative to the first line to allow correct indentation
|
||||
// of comments in \c WhitespaceManager. Thus they can be negative as well (in
|
||||
// case the first line needs to be unindented more than there's actual
|
||||
// whitespace in another line).
|
||||
SmallVector<int, 16> StartOfLineColumn;
|
||||
|
||||
// The column at which the text of a broken line should start.
|
||||
|
|
|
@ -2816,6 +2816,17 @@ TEST_F(FormatTest, NoEscapedNewlineHandlingInBlockComments) {
|
|||
EXPECT_EQ("/* \\ \\ \\\n*/", format("\\\n/* \\ \\ \\\n*/"));
|
||||
}
|
||||
|
||||
TEST_F(FormatTest, DontCrashOnBlockComments) {
|
||||
EXPECT_EQ(
|
||||
"int xxxxxxxxx; /* "
|
||||
"yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy\n"
|
||||
"zzzzzz\n"
|
||||
"0*/",
|
||||
format("int xxxxxxxxx; /* "
|
||||
"yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy zzzzzz\n"
|
||||
"0*/"));
|
||||
}
|
||||
|
||||
TEST_F(FormatTest, CalculateSpaceOnConsecutiveLinesInMacro) {
|
||||
verifyFormat("#define A \\\n"
|
||||
" int v( \\\n"
|
||||
|
|
Loading…
Reference in New Issue