Remove errors were if statements were incorrectly put on a single line.

Before: if (a)  // This comment confused clang-format f();
After:  if (a)  // No more confusion
          f();
llvm-svn: 172600
This commit is contained in:
Daniel Jasper 2013-01-16 07:02:34 +00:00
parent 6a9355f8d7
commit c36492b598
2 changed files with 18 additions and 1 deletions
clang
lib/Format
unittests/Format

View File

@ -1480,6 +1480,11 @@ private:
unsigned Length = 0;
if (!fitsIntoLimit(I->First, Limit, &Length))
return false;
// We can never merge stuff if there are trailing line comments.
if (I->Last->Type == TT_LineComment)
return true;
if (Limit == Length)
return true; // Couldn't fit a space.
Limit -= Length + 1; // One space.
@ -1516,6 +1521,8 @@ private:
if (!Style.AllowShortIfStatementsOnASingleLine)
return;
AnnotatedLine &Line = *I;
if (Line.Last->isNot(tok::r_paren))
return;
if (!fitsIntoLimit((I + 1)->First, Limit))
return;
if ((I + 1)->First.is(tok::kw_if) || (I + 1)->First.Type == TT_LineComment)

View File

@ -146,6 +146,16 @@ TEST_F(FormatTest, FormatIfWithoutCompountStatement) {
verifyFormat("if (a)\n return;", getGoogleStyleWithColumns(13));
verifyFormat("if (aaaaaaaaa)\n"
" return;", getGoogleStyleWithColumns(14));
verifyGoogleFormat("if (a) // Can't merge this\n"
" f();\n");
verifyGoogleFormat("if (a) /* still don't merge */\n"
" f();");
verifyGoogleFormat("if (a) { // Never merge this\n"
" f();\n"
"}");
verifyGoogleFormat("if (a) { /* Never merge this */\n"
" f();\n"
"}");
}
TEST_F(FormatTest, ParseIfElse) {