From fef2ad6bba36158de74127c3443aba70934cbca9 Mon Sep 17 00:00:00 2001 From: Roberto Raggi <roberto.raggi@nokia.com> Date: Tue, 8 Dec 2009 12:04:57 +0100 Subject: [PATCH] Create TypenameArgument symbols. --- src/shared/cplusplus/AST.h | 4 ++-- src/shared/cplusplus/CheckDeclaration.cpp | 8 ++++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/shared/cplusplus/AST.h b/src/shared/cplusplus/AST.h index 47342c2e045..f21d9042fd4 100644 --- a/src/shared/cplusplus/AST.h +++ b/src/shared/cplusplus/AST.h @@ -2083,7 +2083,7 @@ public: ExpressionAST *type_id; public: // annotations - Argument *symbol; + TypenameArgument *symbol; public: virtual TypenameTypeParameterAST *asTypenameTypeParameter() { return this; } @@ -2109,7 +2109,7 @@ public: ExpressionAST *type_id; public: - Argument *symbol; + TypenameArgument *symbol; public: virtual TemplateTypeParameterAST *asTemplateTypeParameter() { return this; } diff --git a/src/shared/cplusplus/CheckDeclaration.cpp b/src/shared/cplusplus/CheckDeclaration.cpp index 3349263e1eb..719a0c82eb4 100644 --- a/src/shared/cplusplus/CheckDeclaration.cpp +++ b/src/shared/cplusplus/CheckDeclaration.cpp @@ -459,7 +459,9 @@ bool CheckDeclaration::visit(TypenameTypeParameterAST *ast) sourceLocation = ast->name->firstToken(); const Name *name = semantic()->check(ast->name, _scope); - Argument *arg = control()->newArgument(sourceLocation, name); // ### new template type + TypenameArgument *arg = control()->newTypenameArgument(sourceLocation, name); + FullySpecifiedType ty = semantic()->check(ast->type_id, _scope); + arg->setType(ty); ast->symbol = arg; _scope->enterSymbol(arg); return false; @@ -472,7 +474,9 @@ bool CheckDeclaration::visit(TemplateTypeParameterAST *ast) sourceLocation = ast->name->firstToken(); const Name *name = semantic()->check(ast->name, _scope); - Argument *arg = control()->newArgument(sourceLocation, name); // ### new template type + TypenameArgument *arg = control()->newTypenameArgument(sourceLocation, name); + FullySpecifiedType ty = semantic()->check(ast->type_id, _scope); + arg->setType(ty); ast->symbol = arg; _scope->enterSymbol(arg); return false; -- GitLab