summaryrefslogtreecommitdiff
path: root/src/plugins/cpptools/cppchecksymbols.cpp
diff options
context:
space:
mode:
authorPrzemyslaw Gorszkowski <pgorszkowski@gmail.com>2013-08-11 22:10:26 +0200
committerErik Verbruggen <erik.verbruggen@digia.com>2013-08-20 14:13:19 +0200
commit3256b7b2ef7073264af3197bdcd62f4f9fe92ea1 (patch)
tree08037f987683a69e8549e16427778f2d25669c21 /src/plugins/cpptools/cppchecksymbols.cpp
parent9de44134c0bf0af7f04384581fdc3cb268e65a81 (diff)
downloadqt-creator-3256b7b2ef7073264af3197bdcd62f4f9fe92ea1.tar.gz
C++: fix matching type with using from other namespace
example code: struct S { int s; }; namespace std { template <typename T> struct shared_ptr { T* operator->(); }; } namespace NS { using std::shared_ptr; } int main() { NS::shared_ptr<S> p;// for this shared_ptr return 0; } Fixes: * find usages * follow symbol * highlighting * marking Task-number: QTCREATORBUG-7978 Change-Id: I28994c960b87ddd400e1d7b860fca6c6683bbb5a Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
Diffstat (limited to 'src/plugins/cpptools/cppchecksymbols.cpp')
-rw-r--r--src/plugins/cpptools/cppchecksymbols.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/plugins/cpptools/cppchecksymbols.cpp b/src/plugins/cpptools/cppchecksymbols.cpp
index a9cf95b66e..8c7625e1e0 100644
--- a/src/plugins/cpptools/cppchecksymbols.cpp
+++ b/src/plugins/cpptools/cppchecksymbols.cpp
@@ -852,7 +852,10 @@ bool CheckSymbols::visit(QualifiedNameAST *ast)
addUse(ast->unqualified_name, CppHighlightingSupport::FunctionUse);
}
} else {
- maybeAddTypeOrStatic(binding->find(ast->unqualified_name->name), ast->unqualified_name);
+ QList<LookupItem> items = binding->find(ast->unqualified_name->name);
+ if (items.empty())
+ items = _context.lookup(ast->name, enclosingScope());
+ maybeAddTypeOrStatic(items, ast->unqualified_name);
}
if (TemplateIdAST *template_id = ast->unqualified_name->asTemplateId())