diff --git a/src/plugins/cpptools/cppcodeformatter.cpp b/src/plugins/cpptools/cppcodeformatter.cpp index 1ad33ca02659050bac123ea6ae537d5b82dd2fe1..967bc9321c0b539dc9915dc10b7ed44c10608e6e 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 ba0eb2dfff8a8f1f19475160cc235db121ff74ea..b132e3c9ba75ae19d4b65965f9a0e5f8672cd644 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<Line> 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"