C++: Fix code compl. for instantiation of template specialization

It works for full specialization. Instantiate of the partial
specialization has to be implemented(finding appropriate partial
specialization-on going)

Added unit test.

Change-Id: I8ef5ea963e7c665e0d67d390b3a833486773dab0
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
This commit is contained in:
Przemyslaw Gorszkowski
2013-01-12 22:05:41 +01:00
parent 0135609973
commit ffba28d26a
13 changed files with 149 additions and 23 deletions

View File

@@ -2639,10 +2639,14 @@ bool Bind::visit(TemplateIdAST *ast)
}
const Identifier *id = identifier(ast->identifier_token);
const int tokenKindBeforeIdentifier(translationUnit()->tokenKind(ast->identifier_token - 1));
const bool isSpecialization = (tokenKindBeforeIdentifier == T_CLASS ||
tokenKindBeforeIdentifier == T_STRUCT);
if (templateArguments.empty())
_name = control()->templateNameId(id);
_name = control()->templateNameId(id, isSpecialization);
else
_name = control()->templateNameId(id, &templateArguments[0], templateArguments.size());
_name = control()->templateNameId(id, isSpecialization, &templateArguments[0],
templateArguments.size());
ast->name = _name;
return false;