summaryrefslogtreecommitdiff
path: root/src/libs/cplusplus/ResolveExpression.cpp
diff options
context:
space:
mode:
authorPrzemyslaw Gorszkowski <pgorszkowski@gmail.com>2012-12-28 22:28:56 +0100
committerhjk <qthjk@ovi.com>2012-12-29 00:45:08 +0100
commitf5b0fcfb5ddecf2eefd659b6f25e6c3152c5ec12 (patch)
treecaa8ff898f79e57911b4e2eff380c530937dbc61 /src/libs/cplusplus/ResolveExpression.cpp
parent4e8b5c6dfcca3fc139049136b42459e7840efed7 (diff)
downloadqt-creator-f5b0fcfb5ddecf2eefd659b6f25e6c3152c5ec12.tar.gz
C++: fix code completion when pointer's type is a typedef
Task-number: QTCREATORBUG-8488 Change-Id: I6f11173452df3e1611fba1c04da17e7428f34e9e Reviewed-by: hjk <qthjk@ovi.com>
Diffstat (limited to 'src/libs/cplusplus/ResolveExpression.cpp')
-rw-r--r--src/libs/cplusplus/ResolveExpression.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/libs/cplusplus/ResolveExpression.cpp b/src/libs/cplusplus/ResolveExpression.cpp
index a6c3c10141..c44a974e9f 100644
--- a/src/libs/cplusplus/ResolveExpression.cpp
+++ b/src/libs/cplusplus/ResolveExpression.cpp
@@ -908,6 +908,7 @@ ClassOrNamespace *ResolveExpression::baseExpression(const QList<LookupItem> &bas
foreach (const LookupItem &r, baseResults) {
FullySpecifiedType ty = r.type().simplified();
+ FullySpecifiedType originalType = ty;
Scope *scope = r.scope();
#ifdef DEBUG_LOOKUP
@@ -922,8 +923,11 @@ ClassOrNamespace *ResolveExpression::baseExpression(const QList<LookupItem> &bas
#endif // DEBUG_LOOKUP
if (accessOp == T_ARROW) {
- if (PointerType *ptrTy = ty->asPointerType()) {
- if (ClassOrNamespace *binding = findClass(ptrTy->elementType(), scope))
+ if (PointerType *ptrTy = originalType->asPointerType()) {
+ FullySpecifiedType type = ptrTy->elementType();
+ if (! ty->isPointerType())
+ type = ty;
+ if (ClassOrNamespace *binding = findClass(type, scope))
return binding;
} else if (ClassOrNamespace *binding = findClass(ty, scope)) {