From dc58172b781226c181a1c0771fca59d17145754c Mon Sep 17 00:00:00 2001
From: Christian Kamm <christian.d.kamm@nokia.com>
Date: Fri, 24 Sep 2010 15:40:45 +0200
Subject: [PATCH] C++ indenter: Add some small error recovery.

---
 src/plugins/cpptools/cppcodeformatter.cpp | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/src/plugins/cpptools/cppcodeformatter.cpp b/src/plugins/cpptools/cppcodeformatter.cpp
index 30f589e6026..a81a57f339a 100644
--- a/src/plugins/cpptools/cppcodeformatter.cpp
+++ b/src/plugins/cpptools/cppcodeformatter.cpp
@@ -178,6 +178,7 @@ void CodeFormatter::recalculateStateAfter(const QTextBlock &block)
             if (tryExpression())
                 break;
             switch (kind) {
+            case T_RBRACE:      leave(true); continue;
             case T_SEMICOLON:   leave(); continue;
             case T_LBRACE:
             case T_COLON:
@@ -193,6 +194,8 @@ void CodeFormatter::recalculateStateAfter(const QTextBlock &block)
             if (tryExpression())
                 break;
             switch (kind) {
+            case T_SEMICOLON:   leave(true); break;
+            case T_RBRACE:      leave(true); continue;
             case T_RPAREN:      leave(); break;
             } break;
 
@@ -256,6 +259,7 @@ void CodeFormatter::recalculateStateAfter(const QTextBlock &block)
         case if_statement:
             switch (kind) {
             case T_LPAREN:      enter(condition_open); break;
+            default:            leave(true); continue;
             } break;
 
         case maybe_else:
@@ -286,6 +290,7 @@ void CodeFormatter::recalculateStateAfter(const QTextBlock &block)
 
         case return_statement:
             switch (kind) {
+            case T_RBRACE:      leave(true); continue;
             case T_SEMICOLON:   leave(true); break;
             } break;
 
@@ -296,11 +301,13 @@ void CodeFormatter::recalculateStateAfter(const QTextBlock &block)
             switch (kind) {
             case T_LBRACE:      turnInto(substatement_open); break;
             case T_SEMICOLON:   leave(true); break;
+            case T_RBRACE:      leave(true); continue;
             } break;
 
         case for_statement:
             switch (kind) {
             case T_LPAREN:      enter(for_statement_paren_open); break;
+            default:            leave(true); continue;
             } break;
 
         case for_statement_paren_open:
-- 
GitLab