forked from qt-creator/qt-creator
C++ indenter: Don't add continuation indent after function return type.
Task-number: QTCREATORBUG-1816
This commit is contained in:
@@ -932,7 +932,6 @@ void QtStyleCodeFormatter::onEnter(int newState, int *indentDepth, int *savedInd
|
|||||||
case statement_with_condition:
|
case statement_with_condition:
|
||||||
case for_statement:
|
case for_statement:
|
||||||
case switch_statement:
|
case switch_statement:
|
||||||
case declaration_start:
|
|
||||||
case if_statement:
|
case if_statement:
|
||||||
case return_statement:
|
case return_statement:
|
||||||
if (firstToken)
|
if (firstToken)
|
||||||
@@ -940,6 +939,19 @@ void QtStyleCodeFormatter::onEnter(int newState, int *indentDepth, int *savedInd
|
|||||||
*indentDepth = *savedIndentDepth + 2*m_indentSize;
|
*indentDepth = *savedIndentDepth + 2*m_indentSize;
|
||||||
break;
|
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 arglist_open:
|
||||||
case condition_paren_open:
|
case condition_paren_open:
|
||||||
if (!lastToken)
|
if (!lastToken)
|
||||||
|
|||||||
@@ -43,6 +43,7 @@ private Q_SLOTS:
|
|||||||
void gnuStyle();
|
void gnuStyle();
|
||||||
void whitesmithsStyle();
|
void whitesmithsStyle();
|
||||||
void singleLineEnum();
|
void singleLineEnum();
|
||||||
|
void functionReturnType();
|
||||||
};
|
};
|
||||||
|
|
||||||
struct Line {
|
struct Line {
|
||||||
@@ -758,7 +759,6 @@ void tst_CodeFormatter::whitesmithsStyle()
|
|||||||
|
|
||||||
void tst_CodeFormatter::singleLineEnum()
|
void tst_CodeFormatter::singleLineEnum()
|
||||||
{
|
{
|
||||||
enum { a, b};
|
|
||||||
QList<Line> data;
|
QList<Line> data;
|
||||||
data << Line("enum { foo, bar, car = 2 };")
|
data << Line("enum { foo, bar, car = 2 };")
|
||||||
<< Line("void blah() {")
|
<< Line("void blah() {")
|
||||||
@@ -769,6 +769,23 @@ void tst_CodeFormatter::singleLineEnum()
|
|||||||
checkIndent(data);
|
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)
|
QTEST_APPLESS_MAIN(tst_CodeFormatter)
|
||||||
#include "tst_codeformatter.moc"
|
#include "tst_codeformatter.moc"
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user