C++ indenter: Fix indent of block statements in substatement blocks.

Task-number: QTCREATORBUG-1919
This commit is contained in:
Christian Kamm
2010-07-28 12:37:54 +02:00
parent 63f7abb03c
commit 27026af2e3
2 changed files with 19 additions and 0 deletions

View File

@@ -1227,6 +1227,7 @@ void QtStyleCodeFormatter::adjustIndent(const QList<CPlusPlus::Token> &tokens, i
*indentDepth += m_indentSize; *indentDepth += m_indentSize;
} else if (topState.type != defun_open } else if (topState.type != defun_open
&& topState.type != block_open && topState.type != block_open
&& topState.type != substatement_open
&& !topWasMaybeElse) { && !topWasMaybeElse) {
*indentDepth = topState.savedIndentDepth; *indentDepth = topState.savedIndentDepth;
} }

View File

@@ -45,6 +45,7 @@ private Q_SLOTS:
void singleLineEnum(); void singleLineEnum();
void functionReturnType(); void functionReturnType();
void streamOp(); void streamOp();
void blockStmtInIf();
}; };
struct Line { struct Line {
@@ -817,6 +818,23 @@ void tst_CodeFormatter::streamOp()
checkIndent(data); checkIndent(data);
} }
void tst_CodeFormatter::blockStmtInIf()
{
QList<Line> data;
data
<< Line("void foo () {")
<< Line(" if (a) {")
<< Line(" {")
<< Line(" foo;")
<< Line(" }")
<< Line(" } else {")
<< Line(" {")
<< Line(" foo;")
<< Line(" }")
;
checkIndent(data);
}
QTEST_APPLESS_MAIN(tst_CodeFormatter) QTEST_APPLESS_MAIN(tst_CodeFormatter)
#include "tst_codeformatter.moc" #include "tst_codeformatter.moc"