diff options
author | Erik Verbruggen <[email protected]> | 2012-02-16 10:54:44 +0100 |
---|---|---|
committer | Erik Verbruggen <[email protected]> | 2012-02-23 08:39:34 +0100 |
commit | 368d5926cab83e8e64f01483f3005ac4d8c4d2d6 (patch) | |
tree | 53b5f94e6babbc242584fdd42a4473312a36e9ac /src/plugins/cpptools/cppchecksymbols.cpp | |
parent | c9999a9382ecf5ca2571b4b032e50673c3080f42 (diff) |
C++: handle destructor names with template parameters.
Change-Id: I74b4fd5e043db935abc18345b303d294b71e8fc2
Reviewed-by: Tobias Hunger <[email protected]>
Reviewed-by: Erik Verbruggen <[email protected]>
Diffstat (limited to 'src/plugins/cpptools/cppchecksymbols.cpp')
-rw-r--r-- | src/plugins/cpptools/cppchecksymbols.cpp | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/src/plugins/cpptools/cppchecksymbols.cpp b/src/plugins/cpptools/cppchecksymbols.cpp index fc83c054e0b..a2d1d6dcf07 100644 --- a/src/plugins/cpptools/cppchecksymbols.cpp +++ b/src/plugins/cpptools/cppchecksymbols.cpp @@ -829,6 +829,8 @@ void CheckSymbols::addUse(NameAST *ast, UseKind kind) if (QualifiedNameAST *q = ast->asQualifiedName()) ast = q->unqualified_name; + if (DestructorNameAST *dtor = ast->asDestructorName()) + ast = dtor->unqualified_name; if (! ast) return; // nothing to do @@ -837,10 +839,7 @@ void CheckSymbols::addUse(NameAST *ast, UseKind kind) unsigned startToken = ast->firstToken(); - if (DestructorNameAST *dtor = ast->asDestructorName()) - startToken = dtor->identifier_token; - - else if (TemplateIdAST *templ = ast->asTemplateId()) + if (TemplateIdAST *templ = ast->asTemplateId()) startToken = templ->identifier_token; addUse(startToken, kind); @@ -888,7 +887,8 @@ void CheckSymbols::addType(ClassOrNamespace *b, NameAST *ast) unsigned startToken = ast->firstToken(); if (DestructorNameAST *dtor = ast->asDestructorName()) - startToken = dtor->identifier_token; + if (dtor->unqualified_name) + startToken = dtor->unqualified_name->firstToken(); const Token &tok = tokenAt(startToken); if (tok.generated()) @@ -919,7 +919,8 @@ void CheckSymbols::addTypeOrStatic(const QList<LookupItem> &candidates, NameAST { unsigned startToken = ast->firstToken(); if (DestructorNameAST *dtor = ast->asDestructorName()) - startToken = dtor->identifier_token; + if (dtor->unqualified_name) + startToken = dtor->unqualified_name->firstToken(); const Token &tok = tokenAt(startToken); if (tok.generated()) @@ -956,7 +957,8 @@ void CheckSymbols::addClassMember(const QList<LookupItem> &candidates, NameAST * { unsigned startToken = ast->firstToken(); if (DestructorNameAST *dtor = ast->asDestructorName()) - startToken = dtor->identifier_token; + if (dtor->unqualified_name) + startToken = dtor->unqualified_name->firstToken(); const Token &tok = tokenAt(startToken); if (tok.generated()) @@ -1014,7 +1016,8 @@ void CheckSymbols::addVirtualMethod(const QList<LookupItem> &candidates, NameAST { unsigned startToken = ast->firstToken(); if (DestructorNameAST *dtor = ast->asDestructorName()) - startToken = dtor->identifier_token; + if (dtor->unqualified_name) + startToken = dtor->unqualified_name->firstToken(); const Token &tok = tokenAt(startToken); if (tok.generated()) |