diff --git a/clang/lib/Format/UnwrappedLineParser.cpp b/clang/lib/Format/UnwrappedLineParser.cpp --- a/clang/lib/Format/UnwrappedLineParser.cpp +++ b/clang/lib/Format/UnwrappedLineParser.cpp @@ -836,6 +836,11 @@ Length -= OpeningBrace->TokenText.size() + 1; } + if (const auto *FirstToken = Line.First; FirstToken->is(tok::r_brace)) { + assert(!OpeningBrace || OpeningBrace->is(TT_ControlStatementLBrace)); + Length -= FirstToken->TokenText.size() + 1; + } + Index = 0; for (auto &Token : Tokens) { const auto &SavedToken = SavedTokens[Index++]; diff --git a/clang/unittests/Format/BracesRemoverTest.cpp b/clang/unittests/Format/BracesRemoverTest.cpp --- a/clang/unittests/Format/BracesRemoverTest.cpp +++ b/clang/unittests/Format/BracesRemoverTest.cpp @@ -828,6 +828,17 @@ "}", Style); + verifyFormat("if (foo)\n" + " f();\n" + "else if (bar || baz)\n" + " g();", + "if (foo) {\n" + " f();\n" + "} else if (bar || baz) {\n" + " g();\n" + "}", + Style); + Style.ColumnLimit = 0; verifyFormat("if (a)\n" " b234567890223456789032345678904234567890 = "