[ClangFormat] 'try' of function-try-block doesn't obey BraceWrapping

It should respond to AfterFunction, not AfterControlStatement.

Fixes PR39067

llvm-svn: 343305
This commit is contained in:
Owen Pan 2018-09-28 09:17:00 +00:00
parent 47a8980afa
commit cb5ffbed71
2 changed files with 12 additions and 0 deletions

View File

@ -1266,6 +1266,8 @@ void UnwrappedLineParser::parseStructuralElement() {
break; break;
case tok::kw_try: case tok::kw_try:
// We arrive here when parsing function-try blocks. // We arrive here when parsing function-try blocks.
if (Style.BraceWrapping.AfterFunction)
addUnwrappedLine();
parseTryCatch(); parseTryCatch();
return; return;
case tok::identifier: { case tok::identifier: {

View File

@ -2628,6 +2628,16 @@ TEST_F(FormatTest, MacroCallsWithoutTrailingSemicolon) {
" A(X x)\n" " A(X x)\n"
" try : t(0) {} catch (...) {}\n" " try : t(0) {} catch (...) {}\n"
"};")); "};"));
FormatStyle Style = getLLVMStyle();
Style.BreakBeforeBraces = FormatStyle::BS_Custom;
Style.BraceWrapping.AfterControlStatement = true;
Style.BraceWrapping.AfterFunction = true;
EXPECT_EQ("void f()\n"
"try\n"
"{\n"
"}",
format("void f() try {\n"
"}", Style));
EXPECT_EQ("class SomeClass {\n" EXPECT_EQ("class SomeClass {\n"
"public:\n" "public:\n"
" SomeClass() EXCLUSIVE_LOCK_FUNCTION(mu_);\n" " SomeClass() EXCLUSIVE_LOCK_FUNCTION(mu_);\n"