From b921489a577ef29f9687fa2cea5d2f0d67740db1 Mon Sep 17 00:00:00 2001 From: Roberto Raggi Date: Wed, 28 Oct 2009 16:06:26 +0100 Subject: [PATCH] Process exception declarations. --- src/shared/cplusplus/CheckDeclaration.cpp | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/src/shared/cplusplus/CheckDeclaration.cpp b/src/shared/cplusplus/CheckDeclaration.cpp index 7e7d01d907..1e7afdd166 100644 --- a/src/shared/cplusplus/CheckDeclaration.cpp +++ b/src/shared/cplusplus/CheckDeclaration.cpp @@ -263,8 +263,29 @@ bool CheckDeclaration::visit(AsmDefinitionAST *) return false; } -bool CheckDeclaration::visit(ExceptionDeclarationAST *) +bool CheckDeclaration::visit(ExceptionDeclarationAST *ast) { + FullySpecifiedType ty = semantic()->check(ast->type_specifier, _scope); + FullySpecifiedType qualTy = ty.qualifiedType(); + + Name *name = 0; + FullySpecifiedType declTy = semantic()->check(ast->declarator, qualTy, + _scope, &name); + + unsigned location = locationOfDeclaratorId(ast->declarator); + if (! location) { + if (ast->declarator) + location = ast->declarator->firstToken(); + else + location = ast->firstToken(); + } + + Declaration *symbol = control()->newDeclaration(location, name); + symbol->setStartOffset(tokenAt(ast->firstToken()).offset); + symbol->setEndOffset(tokenAt(ast->lastToken()).offset); + symbol->setType(declTy); + _scope->enterSymbol(symbol); + return false; } -- 2.11.0