diff options
author | Przemyslaw Gorszkowski <pgorszkowski@gmail.com> | 2013-08-11 22:10:26 +0200 |
---|---|---|
committer | Erik Verbruggen <erik.verbruggen@digia.com> | 2013-08-20 14:13:19 +0200 |
commit | 3256b7b2ef7073264af3197bdcd62f4f9fe92ea1 (patch) | |
tree | 08037f987683a69e8549e16427778f2d25669c21 /src/plugins/cpptools/cppchecksymbols.cpp | |
parent | 9de44134c0bf0af7f04384581fdc3cb268e65a81 (diff) | |
download | qt-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.cpp | 5 |
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()) |