Commit 486b23b8 authored by Christian Kamm's avatar Christian Kamm
Browse files

C++ indenter: Don't add continuation indent after function return type.

Task-number: QTCREATORBUG-1816
parent 6078b36c
......@@ -932,7 +932,6 @@ void QtStyleCodeFormatter::onEnter(int newState, int *indentDepth, int *savedInd
case statement_with_condition:
case for_statement:
case switch_statement:
case declaration_start:
case if_statement:
case return_statement:
if (firstToken)
......@@ -940,6 +939,19 @@ void QtStyleCodeFormatter::onEnter(int newState, int *indentDepth, int *savedInd
*indentDepth = *savedIndentDepth + 2*m_indentSize;
break;
case declaration_start:
if (firstToken)
*savedIndentDepth = tokenPosition;
// continuation indent in function bodies only, to not indent
// after the return type in "void\nfoo() {}"
for (int i = 0; state(i).type != topmost_intro; ++i) {
if (state(i).type == defun_open) {
*indentDepth = *savedIndentDepth + 2*m_indentSize;
break;
}
}
break;
case arglist_open:
case condition_paren_open:
if (!lastToken)
......
......@@ -43,6 +43,7 @@ private Q_SLOTS:
void gnuStyle();
void whitesmithsStyle();
void singleLineEnum();
void functionReturnType();
};
struct Line {
......@@ -758,7 +759,6 @@ void tst_CodeFormatter::whitesmithsStyle()
void tst_CodeFormatter::singleLineEnum()
{
enum { a, b};
QList<Line> data;
data << Line("enum { foo, bar, car = 2 };")
<< Line("void blah() {")
......@@ -769,6 +769,23 @@ void tst_CodeFormatter::singleLineEnum()
checkIndent(data);
}
void tst_CodeFormatter::functionReturnType()
{
QList<Line> data;
data
<< Line("void")
<< Line("foo(int) {}")
<< Line("")
<< Line("const QList<int> &")
<< Line("A::foo() {}")
<< Line("")
<< Line("template <class T>")
<< Line("const QList<QMap<T, T> > &")
<< Line("A::B::foo() {}")
;
checkIndent(data);
}
QTEST_APPLESS_MAIN(tst_CodeFormatter)
#include "tst_codeformatter.moc"
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment