From f4163b8ba01cd1a4f5d91c83a3863939b7809375 Mon Sep 17 00:00:00 2001 From: Erik Verbruggen Date: Sun, 14 Feb 2010 16:05:25 +0100 Subject: Added Objective-C @try block parsing. --- src/shared/cplusplus/CheckStatement.cpp | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) (limited to 'src/shared/cplusplus/CheckStatement.cpp') diff --git a/src/shared/cplusplus/CheckStatement.cpp b/src/shared/cplusplus/CheckStatement.cpp index 26e4e7c835..dac65892ec 100644 --- a/src/shared/cplusplus/CheckStatement.cpp +++ b/src/shared/cplusplus/CheckStatement.cpp @@ -379,3 +379,35 @@ bool CheckStatement::visit(QtMemberDeclarationAST *ast) _exprType = FullySpecifiedType(); return false; } + +bool CheckStatement::visit(ObjCTryBlockStatementAST *ast) +{ + semantic()->check(ast->statement, _scope); + for (ObjCCatchClauseListAST *it = ast->catch_clause_list; it; it = it->next) { + semantic()->check(it->value, _scope); + } + _exprType = FullySpecifiedType(); + return false; +} + +bool CheckStatement::visit(ObjCCatchClauseAST *ast) +{ + Block *block = control()->newBlock(ast->at_token); + block->setStartOffset(tokenAt(ast->firstToken()).offset); + block->setEndOffset(tokenAt(ast->lastToken()).offset); + ast->symbol = block; + _scope->enterSymbol(block); + Scope *previousScope = switchScope(block->members()); + semantic()->check(ast->exception_declaration, _scope); + semantic()->check(ast->statement, _scope); + (void) switchScope(previousScope); + _exprType = FullySpecifiedType(); + return false; +} + +bool CheckStatement::visit(ObjCFinallyClauseAST *ast) +{ + semantic()->check(ast->statement, _scope); + _exprType = FullySpecifiedType(); + return false; +} -- cgit v1.2.1