aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorRoberto Raggi <[email protected]>2010-08-26 13:38:07 +0200
committerRoberto Raggi <[email protected]>2010-08-26 13:38:07 +0200
commitc5d48034bb3615dd399929235344e00f70527168 (patch)
tree3c8e7a8166c419bcef52de8013e4fc077c4b12ae /src
parent5f13608c61e0d4f3e38b15a95c1b1e0480062de4 (diff)
Compare the scope pointers for local scopes.
Diffstat (limited to 'src')
-rw-r--r--src/libs/cplusplus/FindUsages.cpp12
-rw-r--r--src/libs/cplusplus/FindUsages.h1
2 files changed, 12 insertions, 1 deletions
diff --git a/src/libs/cplusplus/FindUsages.cpp b/src/libs/cplusplus/FindUsages.cpp
index 9723dde5161..905d9be4fc7 100644
--- a/src/libs/cplusplus/FindUsages.cpp
+++ b/src/libs/cplusplus/FindUsages.cpp
@@ -203,6 +203,16 @@ bool FindUsages::compareName(const Name *name, const Name *other)
return false;
}
+bool FindUsages::isLocalScope(Scope *scope)
+{
+ if (scope) {
+ if (scope->isBlock() || scope->isTemplate() || scope->isFunction())
+ return true;
+ }
+
+ return false;
+}
+
bool FindUsages::checkCandidates(const QList<LookupItem> &candidates) const
{
for (int i = candidates.size() - 1; i != -1; --i) {
@@ -214,7 +224,7 @@ bool FindUsages::checkCandidates(const QList<LookupItem> &candidates) const
return false;
}
- if (_declSymbol->scope() && (_declSymbol->scope()->isFunction() || _declSymbol->scope()->isBlock())) {
+ if (isLocalScope(_declSymbol->scope()) || isLocalScope(s->scope())) {
if (s->scope() != _declSymbol->scope())
return false;
}
diff --git a/src/libs/cplusplus/FindUsages.h b/src/libs/cplusplus/FindUsages.h
index d25a9f03351..00c2baa8df1 100644
--- a/src/libs/cplusplus/FindUsages.h
+++ b/src/libs/cplusplus/FindUsages.h
@@ -83,6 +83,7 @@ protected:
static bool compareFullyQualifiedName(const QList<const Name *> &path, const QList<const Name *> &other);
static bool compareName(const Name *name, const Name *other);
+ static bool isLocalScope(Scope *scope);
void statement(StatementAST *ast);
void expression(ExpressionAST *ast);