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