From 17e0886c69a3d2c317f8e146d9a7b02f3cfc0498 Mon Sep 17 00:00:00 2001 From: Christian Kamm <christian.d.kamm@nokia.com> Date: Fri, 24 Sep 2010 15:58:23 +0200 Subject: [PATCH] C++ indenter: Fix error recovery in function definitions. Task-number: QTCREATORBUG-1517 --- src/plugins/cpptools/cppcodeformatter.cpp | 4 ++-- .../cplusplus/codeformatter/tst_codeformatter.cpp | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/plugins/cpptools/cppcodeformatter.cpp b/src/plugins/cpptools/cppcodeformatter.cpp index a81a57f339a..744465f3980 100644 --- a/src/plugins/cpptools/cppcodeformatter.cpp +++ b/src/plugins/cpptools/cppcodeformatter.cpp @@ -160,7 +160,7 @@ void CodeFormatter::recalculateStateAfter(const QTextBlock &block) if (tryExpression(true)) break; switch (kind) { - case T_RBRACE: + case T_RBRACE: leave(true); continue; case T_SEMICOLON: leave(true); break; case T_EQUAL: enter(initializer); break; case T_LBRACE: enter(defun_open); break; @@ -251,7 +251,7 @@ void CodeFormatter::recalculateStateAfter(const QTextBlock &block) if (tryStatement()) break; switch (kind) { - case T_RBRACE: leave(); continue; // always nested in declaration_start + case T_RBRACE: leave(); leave(); break; // always nested in declaration_start } break; case switch_statement: diff --git a/tests/auto/cplusplus/codeformatter/tst_codeformatter.cpp b/tests/auto/cplusplus/codeformatter/tst_codeformatter.cpp index bebe2383c29..155a28810a4 100644 --- a/tests/auto/cplusplus/codeformatter/tst_codeformatter.cpp +++ b/tests/auto/cplusplus/codeformatter/tst_codeformatter.cpp @@ -49,6 +49,7 @@ private Q_SLOTS: void nestedInitializer(); void forStatement(); void templateSingleline(); + void macrosNoSemicolon2(); }; struct Line { @@ -952,6 +953,19 @@ void tst_CodeFormatter::templateSingleline() 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) #include "tst_codeformatter.moc" -- GitLab