aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorManuel Klimek <klimek@google.com>2013-01-18 14:46:43 +0000
committerManuel Klimek <klimek@google.com>2013-01-18 14:46:43 +0000
commit4c1281283513ff5cd37ee224639e2f3853ec9ea8 (patch)
treec2c126f2e9c45135c28e5ee806e466d0cf8cebb0
parentea8bca7679d8e5129ad4b49758a43843d1d0dbe0 (diff)
Fixes issues around pulling in the next line in simple if statements.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172822 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Format/Format.cpp4
-rw-r--r--unittests/Format/FormatTest.cpp27
2 files changed, 19 insertions, 12 deletions
diff --git a/lib/Format/Format.cpp b/lib/Format/Format.cpp
index 1821937ec3..d234006a25 100644
--- a/lib/Format/Format.cpp
+++ b/lib/Format/Format.cpp
@@ -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;
diff --git a/unittests/Format/FormatTest.cpp b/unittests/Format/FormatTest.cpp
index 6b77868776..1434f32e2f 100644
--- a/unittests/Format/FormatTest.cpp
+++ b/unittests/Format/FormatTest.cpp
@@ -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.
//===----------------------------------------------------------------------===//