diff --git a/shared/cplusplus/AST.cpp b/shared/cplusplus/AST.cpp index d30e6c14a13ccba18aa3c074e38787607fe15492..5921c4ae44900ee98dea1fcce79945f0f9de98c7 100644 --- a/shared/cplusplus/AST.cpp +++ b/shared/cplusplus/AST.cpp @@ -2437,8 +2437,18 @@ unsigned TemplateIdAST::firstToken() const unsigned TemplateIdAST::lastToken() const { - assert(0 && "review me"); - return greater_token + 1; + if (greater_token) + return greater_token + 1; + + for (TemplateArgumentListAST *it = template_arguments; it; it = it->next) { + if (! it->next && it->template_argument) + return it->template_argument->lastToken(); + } + + if (less_token) + return less_token + 1; + + return identifier_token + 1; } void TemplateTypeParameterAST::accept0(ASTVisitor *visitor)