diff options
Diffstat (limited to 'src/libs/cplusplus/ResolveExpression.cpp')
-rw-r--r-- | src/libs/cplusplus/ResolveExpression.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/libs/cplusplus/ResolveExpression.cpp b/src/libs/cplusplus/ResolveExpression.cpp index 81b2066634..99db8cef9d 100644 --- a/src/libs/cplusplus/ResolveExpression.cpp +++ b/src/libs/cplusplus/ResolveExpression.cpp @@ -1085,7 +1085,12 @@ ClassOrNamespace *ResolveExpression::baseExpression(const QList<LookupItem> &bas qDebug() << "- after typedef resolving:" << oo(ty); if (accessOp == T_ARROW) { - if (PointerType *ptrTy = ty->asPointerType()) { + PointerType *ptrTy = ty->asPointerType(); + if (!ptrTy) { + if (Function * const func = ty->asFunctionType()) + ptrTy = func->returnType()->asPointerType(); + } + if (ptrTy) { FullySpecifiedType type = ptrTy->elementType(); if (ClassOrNamespace *binding = findClassForTemplateParameterInExpressionScope(r.binding(), |