Fixes issues around pulling in the next line in simple if statements.

llvm-svn: 172822
This commit is contained in:
Manuel Klimek 2013-01-18 14:46:43 +00:00
parent 40ac112c91
commit da08761bb2
2 changed files with 19 additions and 12 deletions

View File

@ -1749,6 +1749,10 @@ private:
unsigned Limit) {
if (!Style.AllowShortIfStatementsOnASingleLine)
return;
if ((I + 1)->InPPDirective != I->InPPDirective ||
((I + 1)->InPPDirective &&
(I + 1)->First.FormatTok.HasUnescapedNewline))
return;
AnnotatedLine &Line = *I;
if (Line.Last->isNot(tok::r_paren))
return;

View File

@ -1542,20 +1542,23 @@ TEST_F(FormatTest, MergeHandlingInTheFaceOfPreprocessorDirectives) {
AllowsMergedIf.AllowShortIfStatementsOnASingleLine = true;
verifyFormat("void f() { f(); }\n#error E", AllowsMergedIf);
verifyFormat("if (true) return 42;\n#error E", AllowsMergedIf);
// FIXME:
// verifyFormat("if (true)\n#error E\n return 42;", AllowsMergedIf);
verifyFormat("if (true)\n#error E\n return 42;", AllowsMergedIf);
EXPECT_EQ("if (true) return 42;",
format("if (true)\nreturn 42;", AllowsMergedIf));
FormatStyle ShortMergedIf = AllowsMergedIf;
ShortMergedIf.ColumnLimit = 25;
verifyFormat("#define A \\\n"
" if (true) return 42;", ShortMergedIf);
verifyFormat("#define A \\\n"
" f(); \\\n"
" if (true)\n"
"#define B", ShortMergedIf);
verifyFormat("#define A \\\n"
" f(); \\\n"
" if (true)\n"
"g();", ShortMergedIf);
}
// FIXME: This breaks the order of the unwrapped lines:
// TEST_F(FormatTest, OrderUnwrappedLines) {
// verifyFormat("{\n"
// " bool a; //\n"
// "#error {\n"
// " int a;\n"
// "}");
// }
//===----------------------------------------------------------------------===//
// Objective-C tests.
//===----------------------------------------------------------------------===//