From 76d3b8f5363ee7a0b3cb3d212be9f2107988b84c Mon Sep 17 00:00:00 2001
From: Roberto Raggi <roberto.raggi@nokia.com>
Date: Fri, 13 Aug 2010 11:38:48 +0200
Subject: [PATCH] Process compound statements.

---
 src/shared/cplusplus/Bind.cpp | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/src/shared/cplusplus/Bind.cpp b/src/shared/cplusplus/Bind.cpp
index 3e440efa81a..e57a62bfafd 100644
--- a/src/shared/cplusplus/Bind.cpp
+++ b/src/shared/cplusplus/Bind.cpp
@@ -1036,12 +1036,14 @@ bool Bind::visit(CaseStatementAST *ast)
 
 bool Bind::visit(CompoundStatementAST *ast)
 {
-    // unsigned lbrace_token = ast->lbrace_token;
+    Block *block = control()->newBlock(ast->firstToken());
+    ast->symbol = block;
+    _scope->addMember(block);
+    Scope *previousScope = switchScope(block);
     for (StatementListAST *it = ast->statement_list; it; it = it->next) {
         this->statement(it->value);
     }
-    // unsigned rbrace_token = ast->rbrace_token;
-    // Block *symbol = ast->symbol;
+    (void) switchScope(previousScope);
     return false;
 }
 
@@ -1708,10 +1710,13 @@ bool Bind::visit(FunctionDefinitionAST *ast)
 
     this->ctorInitializer(ast->ctor_initializer, fun);
 
-    if (! _skipFunctionBodies) {
+    if (! _skipFunctionBodies && ast->function_body) {
         Scope *previousScope = switchScope(fun);
         this->statement(ast->function_body);
         (void) switchScope(previousScope);
+
+        if (CompoundStatementAST *c = ast->function_body->asCompoundStatement())
+            fun->setBlock(c->symbol);
     }
 
     // Function *symbol = ast->symbol;
-- 
GitLab