From 793ef6a694c16b78f4810eb6c82cad4233e4b1c6 Mon Sep 17 00:00:00 2001
From: Christian Kamm <christian.d.kamm@nokia.com>
Date: Tue, 6 Jul 2010 09:44:04 +0200
Subject: [PATCH] C++ indenter: Fix 'else' indentation in GNU style.

---
 src/plugins/cpptools/cppcodeformatter.cpp                | 2 ++
 tests/auto/cplusplus/codeformatter/tst_codeformatter.cpp | 7 +++++++
 2 files changed, 9 insertions(+)

diff --git a/src/plugins/cpptools/cppcodeformatter.cpp b/src/plugins/cpptools/cppcodeformatter.cpp
index 4eb3a3ac84a..97db194e70a 100644
--- a/src/plugins/cpptools/cppcodeformatter.cpp
+++ b/src/plugins/cpptools/cppcodeformatter.cpp
@@ -1006,6 +1006,8 @@ void QtStyleCodeFormatter::onEnter(int newState, int *indentDepth, int *savedInd
         while (isBracelessState(state(outermostBraceless).type))
             ++outermostBraceless;
         *indentDepth = state(outermostBraceless - 1).savedIndentDepth;
+        // this is where the else should go, if one appears - aligned to if_statement
+        *savedIndentDepth = state().savedIndentDepth;
     }   break;
 
     case for_statement_paren_open:
diff --git a/tests/auto/cplusplus/codeformatter/tst_codeformatter.cpp b/tests/auto/cplusplus/codeformatter/tst_codeformatter.cpp
index 8e9b5d3fec8..7c49cc4c236 100644
--- a/tests/auto/cplusplus/codeformatter/tst_codeformatter.cpp
+++ b/tests/auto/cplusplus/codeformatter/tst_codeformatter.cpp
@@ -713,6 +713,13 @@ void tst_CodeFormatter::gnuStyle()
          << Line("            {")
          << Line("                fpp;")
          << Line("            }")
+         << Line("        else if (b)")
+         << Line("            {")
+         << Line("                fpp;")
+         << Line("            }")
+         << Line("        else")
+         << Line("            {")
+         << Line("            }")
          << Line("        if (b) {")
          << Line("            fpp;")
          << Line("        }")
-- 
GitLab