From 9ed1f667a81f4cefe71ac832a92763df1fce468d Mon Sep 17 00:00:00 2001
From: Roberto Raggi <roberto.raggi@nokia.com>
Date: Fri, 14 May 2010 09:57:59 +0200
Subject: [PATCH] Resolve ambiguous C++-like initilized declarations.

---
 src/libs/cplusplus/ResolveExpression.cpp | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/libs/cplusplus/ResolveExpression.cpp b/src/libs/cplusplus/ResolveExpression.cpp
index dd6f996fa1e..b3103a07c75 100644
--- a/src/libs/cplusplus/ResolveExpression.cpp
+++ b/src/libs/cplusplus/ResolveExpression.cpp
@@ -570,9 +570,8 @@ bool ResolveExpression::visit(MemberAccessAST *ast)
 
 ClassOrNamespace *ResolveExpression::findClass(const FullySpecifiedType &originalTy, Scope *scope) const
 {
-    ClassOrNamespace *binding = 0;
-
     FullySpecifiedType ty = originalTy.simplified();
+    ClassOrNamespace *binding = 0;
 
     if (Class *klass = ty->asClassType())
         binding = _context.classOrNamespace(klass);
@@ -580,6 +579,9 @@ ClassOrNamespace *ResolveExpression::findClass(const FullySpecifiedType &origina
     else if (NamedType *namedTy = ty->asNamedType())
         binding = _context.classOrNamespace(namedTy->name(), scope);
 
+    else if (Function *funTy = ty->asFunctionType())
+        return findClass(funTy->returnType(), scope);
+
     return binding;
 }
 
-- 
GitLab