Index: clang/lib/Format/UnwrappedLineParser.cpp =================================================================== --- clang/lib/Format/UnwrappedLineParser.cpp +++ clang/lib/Format/UnwrappedLineParser.cpp @@ -2050,6 +2050,13 @@ nextToken(); if (FormatTok->is(tok::l_paren)) parseParens(); + if (FormatTok->Previous && FormatTok->Previous->is(tok::identifier) && + FormatTok->is(tok::l_brace)) { + do { + nextToken(); + } while (!FormatTok->is(tok::r_brace)); + nextToken(); + } // In case identifiers were removed by clang-tidy, what might follow is // multiple commas in sequence - after the first identifier. Index: clang/unittests/Format/FormatTest.cpp =================================================================== --- clang/unittests/Format/FormatTest.cpp +++ clang/unittests/Format/FormatTest.cpp @@ -2727,6 +2727,20 @@ " throw;\n" " }\n" "};\n"); + verifyFormat("class A {\n" + " int a;\n" + " A() try : a(0), b{1} {\n" + " } catch (...) {\n" + " throw;\n" + " }\n" + "};\n"); + verifyFormat("class A {\n" + " int a;\n" + " A() try : a(0), b{1}, c{2} {\n" + " } catch (...) {\n" + " throw;\n" + " }\n" + "};\n"); // Incomplete try-catch blocks. verifyIncompleteFormat("try {} catch (");