From da08761bb2cf2e2ee330770571d9b7e650343d26 Mon Sep 17 00:00:00 2001 From: Manuel Klimek Date: Fri, 18 Jan 2013 14:46:43 +0000 Subject: [PATCH] Fixes issues around pulling in the next line in simple if statements. llvm-svn: 172822 --- clang/lib/Format/Format.cpp | 4 ++++ clang/unittests/Format/FormatTest.cpp | 27 +++++++++++++++------------ 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/clang/lib/Format/Format.cpp b/clang/lib/Format/Format.cpp index 1821937ec3e9..d234006a25a5 100644 --- a/clang/lib/Format/Format.cpp +++ b/clang/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/clang/unittests/Format/FormatTest.cpp b/clang/unittests/Format/FormatTest.cpp index 6b77868776a7..1434f32e2f39 100644 --- a/clang/unittests/Format/FormatTest.cpp +++ b/clang/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. //===----------------------------------------------------------------------===// -- GitLab