From 09a0c488560f8bd69767cedd714432142bcffd10 Mon Sep 17 00:00:00 2001 From: Eric Liu Date: Fri, 9 Sep 2016 17:50:49 +0000 Subject: [PATCH] Also cleanup comments around redundant colons/commas in format::cleanup. Reviewers: djasper Subscribers: klimek, cfe-commits Differential Revision: https://reviews.llvm.org/D24400 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@281064 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Format/Format.cpp | 2 ++ unittests/Format/CleanupTest.cpp | 21 ++++++++------------- 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/lib/Format/Format.cpp b/lib/Format/Format.cpp index 7ada8a50c4..371abf5cb8 100644 --- a/lib/Format/Format.cpp +++ b/lib/Format/Format.cpp @@ -1132,6 +1132,8 @@ private: break; if (Left->is(LK) && Right->is(RK)) { deleteToken(DeleteLeft ? Left : Right); + for (auto *Tok = Left->Next; Tok && Tok != Right; Tok = Tok->Next) + deleteToken(Tok); // If the right token is deleted, we should keep the left token // unchanged and pair it with the new right token. if (!DeleteLeft) diff --git a/unittests/Format/CleanupTest.cpp b/unittests/Format/CleanupTest.cpp index cb1c742fec..c2b1ef2558 100644 --- a/unittests/Format/CleanupTest.cpp +++ b/unittests/Format/CleanupTest.cpp @@ -188,39 +188,34 @@ TEST_F(CleanupTest, RedundantCommaNotInAffectedRanges) { EXPECT_EQ(Expected, Result); } -// FIXME: delete comments too. -TEST_F(CleanupTest, CtorInitializationCommentAroundCommas) { - // Remove redundant commas around comment. - std::string Code = "class A {\nA() : x({1}), /* comment */, {} };"; - std::string Expected = "class A {\nA() : x({1}) /* comment */ {} };"; +TEST_F(CleanupTest, RemoveCommentsAroundDeleteCode) { + std::string Code = + "class A {\nA() : x({1}), /* comment */, /* comment */ {} };"; + std::string Expected = "class A {\nA() : x({1}) {} };"; std::vector Ranges; Ranges.push_back(tooling::Range(25, 0)); Ranges.push_back(tooling::Range(40, 0)); std::string Result = cleanup(Code, Ranges); EXPECT_EQ(Expected, Result); - // Remove trailing comma and ignore comment. - Code = "class A {\nA() : x({1}), // comment\n{} };"; - Expected = "class A {\nA() : x({1}) // comment\n{} };"; + Code = "class A {\nA() : x({1}), // comment\n {} };"; + Expected = "class A {\nA() : x({1})\n {} };"; Ranges = std::vector(1, tooling::Range(25, 0)); Result = cleanup(Code, Ranges); EXPECT_EQ(Expected, Result); - // Remove trailing comma and ignore comment. Code = "class A {\nA() : x({1}), // comment\n , y(1),{} };"; - Expected = "class A {\nA() : x({1}), // comment\n y(1){} };"; + Expected = "class A {\nA() : x({1}), y(1){} };"; Ranges = std::vector(1, tooling::Range(38, 0)); Result = cleanup(Code, Ranges); EXPECT_EQ(Expected, Result); - // Remove trailing comma and ignore comment. Code = "class A {\nA() : x({1}), \n/* comment */, y(1),{} };"; - Expected = "class A {\nA() : x({1}), \n/* comment */ y(1){} };"; + Expected = "class A {\nA() : x({1}), \n y(1){} };"; Ranges = std::vector(1, tooling::Range(40, 0)); Result = cleanup(Code, Ranges); EXPECT_EQ(Expected, Result); - // Remove trailing comma and ignore comment. Code = "class A {\nA() : , // comment\n y(1),{} };"; Expected = "class A {\nA() : // comment\n y(1){} };"; Ranges = std::vector(1, tooling::Range(17, 0)); -- 2.40.0