From 2752ff35854b295837b8088e44d5a932be60e107 Mon Sep 17 00:00:00 2001 From: Daniel Jasper Date: Mon, 4 Feb 2013 07:32:14 +0000 Subject: [PATCH] Improve handling of trailing block comments. We can now (even in non-bin-packing modes) format: someFunction(1, /* comment 1 */ 2, /* comment 2 */ 3, /* comment 3 */ aaa); git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174309 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Format/Format.cpp | 3 ++- lib/Format/TokenAnnotator.cpp | 18 ++++++++---------- unittests/Format/FormatTest.cpp | 9 +++++++++ 3 files changed, 19 insertions(+), 11 deletions(-) diff --git a/lib/Format/Format.cpp b/lib/Format/Format.cpp index 2f14fc0ce1..91cbc2efcd 100644 --- a/lib/Format/Format.cpp +++ b/lib/Format/Format.cpp @@ -690,7 +690,8 @@ private: return true; if (State.NextToken->Parent->is(tok::comma) && State.Stack.back().BreakAfterComma && - State.NextToken->Type != TT_LineComment) + (State.NextToken->isNot(tok::comment) || + !State.NextToken->Children[0].MustBreakBefore)) return true; if ((State.NextToken->Type == TT_CtorInitializerColon || (State.NextToken->Parent->ClosesTemplateDeclaration && diff --git a/lib/Format/TokenAnnotator.cpp b/lib/Format/TokenAnnotator.cpp index 0676df6c0e..0cfd9903cb 100644 --- a/lib/Format/TokenAnnotator.cpp +++ b/lib/Format/TokenAnnotator.cpp @@ -662,17 +662,15 @@ void TokenAnnotator::calculateFormattingInformation(AnnotatedToken &Current) { if (Current.FormatTok.MustBreakBefore) { Current.MustBreakBefore = true; + } else if (Current.Type == TT_LineComment) { + Current.MustBreakBefore = Current.FormatTok.NewlinesBefore > 0; + } else if ((Current.Parent->is(tok::comment) && + Current.FormatTok.NewlinesBefore > 0) || + (Current.is(tok::string_literal) && + Current.Parent->is(tok::string_literal))) { + Current.MustBreakBefore = true; } else { - if (Current.Type == TT_LineComment) { - Current.MustBreakBefore = Current.FormatTok.NewlinesBefore > 0; - } else if ((Current.Parent->is(tok::comment) && - Current.FormatTok.NewlinesBefore > 0) || - (Current.is(tok::string_literal) && - Current.Parent->is(tok::string_literal))) { - Current.MustBreakBefore = true; - } else { - Current.MustBreakBefore = false; - } + Current.MustBreakBefore = false; } Current.CanBreakBefore = Current.MustBreakBefore || canBreakBefore(Current); if (Current.MustBreakBefore) diff --git a/unittests/Format/FormatTest.cpp b/unittests/Format/FormatTest.cpp index 28d19d5ac5..17a8dc48ab 100644 --- a/unittests/Format/FormatTest.cpp +++ b/unittests/Format/FormatTest.cpp @@ -1908,6 +1908,15 @@ TEST_F(FormatTest, BlockComments) { " parameter);", format("#define A\n" "/* */someCall(parameter);", getLLVMStyleWithColumns(15))); + + EXPECT_EQ("someFunction(1, /* comment 1 */\n" + " 2, /* comment 2 */\n" + " 3, /* comment 3 */\n" + " aaaa);", + format("someFunction (1, /* comment 1 */\n" + " 2, /* comment 2 */ \n" + " 3, /* comment 3 */\n" + "aaaa );", getGoogleStyle())); } TEST_F(FormatTest, FormatStarDependingOnContext) { -- 2.40.0