[clang-format] Update removed brace's next token's WhitespaceRange

Fixes #57803.

Differential Revision: https://reviews.llvm.org/D134146
This commit is contained in:
owenca 2022-09-18 13:32:05 -07:00
parent eaa7b324d5
commit 7349084e7a
2 changed files with 18 additions and 4 deletions

View File

@ -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, "")));

View File

@ -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"