From: owenca Date: Sun, 18 Sep 2022 20:32:05 +0000 (-0700) Subject: [clang-format] Update removed brace's next token's WhitespaceRange X-Git-Tag: upstream/17.0.6~33094 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=7349084e7afc55fc734922a9facd76316f2977b1;p=platform%2Fupstream%2Fllvm.git [clang-format] Update removed brace's next token's WhitespaceRange Fixes #57803. Differential Revision: https://reviews.llvm.org/D134146 --- diff --git a/clang/lib/Format/Format.cpp b/clang/lib/Format/Format.cpp index 58d5fc1..025e1aa 100644 --- a/clang/lib/Format/Format.cpp +++ b/clang/lib/Format/Format.cpp @@ -1920,10 +1920,13 @@ private: assert(Next || Token == Line->Last); if (!Next && NextLine) Next = NextLine->First; - const auto Start = - Next && Next->NewlinesBefore == 0 && Next->isNot(tok::eof) - ? Token->Tok.getLocation() - : Token->WhitespaceRange.getBegin(); + SourceLocation Start; + if (Next && Next->NewlinesBefore == 0 && Next->isNot(tok::eof)) { + Start = Token->Tok.getLocation(); + Next->WhitespaceRange = Token->WhitespaceRange; + } else { + Start = Token->WhitespaceRange.getBegin(); + } const auto Range = CharSourceRange::getCharRange(Start, Token->Tok.getEndLoc()); cantFail(Result.add(tooling::Replacement(SourceMgr, Range, ""))); diff --git a/clang/unittests/Format/FormatTest.cpp b/clang/unittests/Format/FormatTest.cpp index 828948e..8999e59 100644 --- a/clang/unittests/Format/FormatTest.cpp +++ b/clang/unittests/Format/FormatTest.cpp @@ -26006,6 +26006,17 @@ TEST_F(FormatTest, RemoveBraces) { "}", Style); + verifyFormat("while (0)\n" + " if (a)\n" + " return b;\n" + "return a;", + "while (0) {\n" + " if (a) {\n" + " return b;\n" + "}}\n" + "return a;", + Style); + Style.ColumnLimit = 65; verifyFormat("if (condition) {\n" " ff(Indices,\n"