From 6d544bc2cad7dec084aa80c9e14a22ba3122166f Mon Sep 17 00:00:00 2001 From: Erik Verbruggen <erik.verbruggen@me.com> Date: Mon, 27 May 2013 11:54:50 +0200 Subject: [PATCH] C++: handle braced return statements in indenter. Task-number: QTCREATORBUG-9314 Change-Id: I59c026cce02b85eeb54f4d10d5c9fb0c59bfe28a Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com> --- src/plugins/cpptools/cppcodeformatter.cpp | 2 ++ .../cplusplus/codeformatter/tst_codeformatter.cpp | 14 ++++++++++++++ 2 files changed, 16 insertions(+) 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<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" -- GitLab