aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs/cplusplus/ResolveExpression.cpp
diff options
context:
space:
mode:
authorRoberto Raggi <[email protected]>2010-05-14 09:57:59 +0200
committerRoberto Raggi <[email protected]>2010-05-14 13:55:24 +0200
commit9ed1f667a81f4cefe71ac832a92763df1fce468d (patch)
tree526589a7d85a1a7af3fb693c63ff5d376eab4722 /src/libs/cplusplus/ResolveExpression.cpp
parent517e04ff606e28a5eac527b666a3b81976f904ac (diff)
Resolve ambiguous C++-like initilized declarations.
Diffstat (limited to 'src/libs/cplusplus/ResolveExpression.cpp')
-rw-r--r--src/libs/cplusplus/ResolveExpression.cpp6
1 files 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;
}