From: Daniel Jasper Date: Fri, 8 Nov 2013 17:33:27 +0000 (+0000) Subject: clang-format: Don't auto-break short macros in WebKit style. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c2e0329c8b84b16252184db4dd575c9e9fb93efe;p=clang clang-format: Don't auto-break short macros in WebKit style. This fixes llvm.org/PR17842. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@194268 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Format/Format.cpp b/lib/Format/Format.cpp index f2899345fb..a5fc83e84e 100644 --- a/lib/Format/Format.cpp +++ b/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/unittests/Format/FormatTest.cpp b/unittests/Format/FormatTest.cpp index 7e4131bd68..c0c78713db 100644 --- a/unittests/Format/FormatTest.cpp +++ b/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) {