summaryrefslogtreecommitdiff
path: root/src/plugins/cpptools/cppfindreferences.cpp
diff options
context:
space:
mode:
authorRoberto Raggi <roberto.raggi@nokia.com>2009-10-06 16:27:39 +0200
committercon <qtc-committer@nokia.com>2009-10-06 18:48:39 +0200
commit390ed9e313cc5563db3f6d3eacf5d02359ddba6d (patch)
tree80bbacf300d4950e650215ff0e9904f80fc5ace5 /src/plugins/cpptools/cppfindreferences.cpp
parentcb5d390e69e42ae30110c9df63513d47bc48ef03 (diff)
downloadqt-creator-390ed9e313cc5563db3f6d3eacf5d02359ddba6d.tar.gz
Return the class declaration as canonical symbol for ctors, dtors, and class names.
(cherry picked from commit 3c51e5b24b381364934531094203e3e315a945f7)
Diffstat (limited to 'src/plugins/cpptools/cppfindreferences.cpp')
-rw-r--r--src/plugins/cpptools/cppfindreferences.cpp26
1 files changed, 14 insertions, 12 deletions
diff --git a/src/plugins/cpptools/cppfindreferences.cpp b/src/plugins/cpptools/cppfindreferences.cpp
index 95e1b8273d..f7ebace4fa 100644
--- a/src/plugins/cpptools/cppfindreferences.cpp
+++ b/src/plugins/cpptools/cppfindreferences.cpp
@@ -303,14 +303,22 @@ protected:
}
}
- if (ast->unqualified_name) {
- SimpleNameAST *simple_name = ast->unqualified_name->asSimpleName();
+ if (NameAST *unqualified_name = ast->unqualified_name) {
+ unsigned identifier_token = 0;
+
+ if (SimpleNameAST *simple_name = unqualified_name->asSimpleName())
+ identifier_token = simple_name->identifier_token;
+
+ else if (DestructorNameAST *dtor_name = unqualified_name->asDestructorName())
+ identifier_token = dtor_name->identifier_token;
TemplateIdAST *template_id = 0;
- if (! simple_name) {
- template_id = ast->unqualified_name->asTemplateId();
+ if (! identifier_token) {
+ template_id = unqualified_name->asTemplateId();
if (template_id) {
+ identifier_token = template_id->identifier_token;
+
for (TemplateArgumentListAST *template_arguments = template_id->template_arguments;
template_arguments; template_arguments = template_arguments->next) {
accept(template_arguments->template_argument);
@@ -318,14 +326,8 @@ protected:
}
}
- if (simple_name || template_id) {
- const unsigned identifier_token = simple_name
- ? simple_name->identifier_token
- : template_id->identifier_token;
-
- if (identifier(identifier_token) == _id)
- checkExpression(ast->firstToken(), identifier_token);
- }
+ if (identifier_token && identifier(identifier_token) == _id)
+ checkExpression(ast->firstToken(), identifier_token);
}
return false;