diff options
author | Przemyslaw Gorszkowski <pgorszkowski@gmail.com> | 2012-12-28 22:28:56 +0100 |
---|---|---|
committer | hjk <qthjk@ovi.com> | 2012-12-29 00:45:08 +0100 |
commit | f5b0fcfb5ddecf2eefd659b6f25e6c3152c5ec12 (patch) | |
tree | caa8ff898f79e57911b4e2eff380c530937dbc61 /src/libs/cplusplus/ResolveExpression.cpp | |
parent | 4e8b5c6dfcca3fc139049136b42459e7840efed7 (diff) | |
download | qt-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.cpp | 8 |
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)) { |