forked from qt-creator/qt-creator
C++: fix dereferencing of nested type and operator '*'
Fixed case:
template<class T>
struct List
{
struct iterator
{
T &operator*() { return t; }
T t;
};
iterator begin() { return iterator(); }
};
struct Foo { int bar; };
void func()
{
List<Foo> list;
(*list.begin()).; // code completion doesn't work
}
Task-number: QTCREATORBUG-13799
Change-Id: Ia3f5c1631c2f6a25d7fb1186b4ef506354ed22be
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
This commit is contained in:
committed by
Orgad Shaneh
parent
25989cbf94
commit
209078e57e
@@ -612,7 +612,7 @@ bool ResolveExpression::visit(UnaryExpressionAST *ast)
|
||||
added = true;
|
||||
} else if (namedTy != 0) {
|
||||
const Name *starOp = control()->operatorNameId(OperatorNameId::StarOp);
|
||||
if (ClassOrNamespace *b = _context.lookupType(namedTy->name(), p.scope())) {
|
||||
if (ClassOrNamespace *b = _context.lookupType(namedTy->name(), p.scope(), p.binding())) {
|
||||
foreach (const LookupItem &r, b->find(starOp)) {
|
||||
Symbol *overload = r.declaration();
|
||||
if (Function *funTy = overload->type()->asFunctionType()) {
|
||||
|
||||
Reference in New Issue
Block a user