diff --git a/src/plugins/cpptools/cppcodeformatter.cpp b/src/plugins/cpptools/cppcodeformatter.cpp index 1ad33ca0265..967bc9321c0 100644 --- a/src/plugins/cpptools/cppcodeformatter.cpp +++ b/src/plugins/cpptools/cppcodeformatter.cpp @@ -207,6 +207,8 @@ void CodeFormatter::recalculateStateAfter(const QTextBlock &block) // oops, the expression was a function declaration argument list, hand lbrace/colon to declaration_start leave(); continue; + } else { + turnInto(substatement_open); } break; default: tryExpression(); break; diff --git a/tests/auto/cplusplus/codeformatter/tst_codeformatter.cpp b/tests/auto/cplusplus/codeformatter/tst_codeformatter.cpp index ba0eb2dfff8..b132e3c9ba7 100644 --- a/tests/auto/cplusplus/codeformatter/tst_codeformatter.cpp +++ b/tests/auto/cplusplus/codeformatter/tst_codeformatter.cpp @@ -126,6 +126,7 @@ private Q_SLOTS: void blockBraces1(); void functionDefaultArgument(); void attributeInAccessSpecifier(); + void braceReturn(); }; struct Line { @@ -2097,6 +2098,19 @@ void tst_CodeFormatter::attributeInAccessSpecifier() checkIndent(data); } +void tst_CodeFormatter::braceReturn() +{ + QList data; + data << Line("class X {") + << Line(" void the_answer() {") + << Line(" return {42};") + << Line(" }") + << Line(" int x;") + << Line("};") + ; + checkIndent(data); +} + QTEST_MAIN(tst_CodeFormatter) #include "tst_codeformatter.moc"