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