summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--clang/lib/Format/Format.cpp4
-rw-r--r--clang/unittests/Format/FormatTest.cpp9
2 files changed, 12 insertions, 1 deletions
diff --git a/clang/lib/Format/Format.cpp b/clang/lib/Format/Format.cpp
index f2899345fbd..a5fc83e84e4 100644
--- a/clang/lib/Format/Format.cpp
+++ b/clang/lib/Format/Format.cpp
@@ -391,7 +391,8 @@ public:
if (Indent > Style.ColumnLimit)
return 0;
- unsigned Limit = Style.ColumnLimit - Indent;
+ unsigned Limit =
+ Style.ColumnLimit == 0 ? UINT_MAX : Style.ColumnLimit - Indent;
// If we already exceed the column limit, we set 'Limit' to 0. The different
// tryMerge..() functions can then decide whether to still do merging.
Limit = TheLine->Last->TotalLength > Limit
@@ -757,6 +758,7 @@ private:
assert(!B.First->Previous);
A.Last->Next = B.First;
B.First->Previous = A.Last;
+ B.First->CanBreakBefore = true;
unsigned LengthA = A.Last->TotalLength + B.First->SpacesRequiredBefore;
for (FormatToken *Tok = B.First; Tok; Tok = Tok->Next) {
Tok->TotalLength += LengthA;
diff --git a/clang/unittests/Format/FormatTest.cpp b/clang/unittests/Format/FormatTest.cpp
index 7e4131bd686..c0c78713db2 100644
--- a/clang/unittests/Format/FormatTest.cpp
+++ b/clang/unittests/Format/FormatTest.cpp
@@ -7081,6 +7081,15 @@ TEST_F(FormatTest, FormatsWithWebKitStyle) {
" i++;\n"
"}",
format("if (aaaaaaaaaaaaaaa || bbbbbbbbbbbbbbb) { i++; }", Style));
+
+ // Don't automatically break all macro definitions (llvm.org/PR17842).
+ verifyFormat("#define aNumber 10", Style);
+ // However, generally keep the line breaks that the user authored.
+ EXPECT_EQ("#define aNumber \\\n"
+ " 10",
+ format("#define aNumber \\\n"
+ " 10",
+ Style));
}
TEST_F(FormatTest, FormatsProtocolBufferDefinitions) {
OpenPOWER on IntegriCloud