summaryrefslogtreecommitdiff
path: root/src/shared/cplusplus
diff options
context:
space:
mode:
authorcon <qtc-committer@nokia.com>2009-10-29 18:54:17 +0100
committercon <qtc-committer@nokia.com>2009-10-29 18:54:17 +0100
commitbe3fafc31167e9ae3b16d8d2361488fc7097191e (patch)
treec1e28382252aba983b7e354d75101b63edc1fa40 /src/shared/cplusplus
parentc1413ffa8a4bbd7d762b2ec3982c55ccf5c9e30f (diff)
parent2be0845c7492ad991f23ce5c90c322df788b62b5 (diff)
downloadqt-creator-be3fafc31167e9ae3b16d8d2361488fc7097191e.tar.gz
Merge commit '2be0845c7492ad991f23ce5c90c322df788b62b5'
Conflicts: src/plugins/projectexplorer/projectexplorer.h src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp src/plugins/qt4projectmanager/qt4runconfiguration.cpp src/plugins/qt4projectmanager/qtversionmanager.cpp
Diffstat (limited to 'src/shared/cplusplus')
-rw-r--r--src/shared/cplusplus/CheckDeclaration.cpp23
1 files changed, 22 insertions, 1 deletions
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;
}