diff options
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 fc83c054e0..a2d1d6dcf0 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()) |