forked from qt-creator/qt-creator
C++ indenter: Fix error recovery in function definitions.
Task-number: QTCREATORBUG-1517
This commit is contained in:
@@ -160,7 +160,7 @@ void CodeFormatter::recalculateStateAfter(const QTextBlock &block)
|
|||||||
if (tryExpression(true))
|
if (tryExpression(true))
|
||||||
break;
|
break;
|
||||||
switch (kind) {
|
switch (kind) {
|
||||||
case T_RBRACE:
|
case T_RBRACE: leave(true); continue;
|
||||||
case T_SEMICOLON: leave(true); break;
|
case T_SEMICOLON: leave(true); break;
|
||||||
case T_EQUAL: enter(initializer); break;
|
case T_EQUAL: enter(initializer); break;
|
||||||
case T_LBRACE: enter(defun_open); break;
|
case T_LBRACE: enter(defun_open); break;
|
||||||
@@ -251,7 +251,7 @@ void CodeFormatter::recalculateStateAfter(const QTextBlock &block)
|
|||||||
if (tryStatement())
|
if (tryStatement())
|
||||||
break;
|
break;
|
||||||
switch (kind) {
|
switch (kind) {
|
||||||
case T_RBRACE: leave(); continue; // always nested in declaration_start
|
case T_RBRACE: leave(); leave(); break; // always nested in declaration_start
|
||||||
} break;
|
} break;
|
||||||
|
|
||||||
case switch_statement:
|
case switch_statement:
|
||||||
|
|||||||
@@ -49,6 +49,7 @@ private Q_SLOTS:
|
|||||||
void nestedInitializer();
|
void nestedInitializer();
|
||||||
void forStatement();
|
void forStatement();
|
||||||
void templateSingleline();
|
void templateSingleline();
|
||||||
|
void macrosNoSemicolon2();
|
||||||
};
|
};
|
||||||
|
|
||||||
struct Line {
|
struct Line {
|
||||||
@@ -952,6 +953,19 @@ void tst_CodeFormatter::templateSingleline()
|
|||||||
checkIndent(data);
|
checkIndent(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void tst_CodeFormatter::macrosNoSemicolon2()
|
||||||
|
{
|
||||||
|
QList<Line> data;
|
||||||
|
data
|
||||||
|
<< Line("FOO(ABC)")
|
||||||
|
<< Line("{")
|
||||||
|
<< Line(" BAR(FOO)")
|
||||||
|
<< Line("}")
|
||||||
|
<< Line("int i;")
|
||||||
|
;
|
||||||
|
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