From f1a40d304b105b9116f78de58ae398a4403e215c Mon Sep 17 00:00:00 2001
From: Roberto Raggi <qtc-committer@nokia.com>
Date: Tue, 3 Feb 2009 12:50:53 +0100
Subject: [PATCH] Fixes: Member completion when the symbol's type is ClassTy.

For example,

struct {
  int a, b
} foo;

int main() {
  foo.  <-
}
---
 src/plugins/cpptools/cppcodecompletion.cpp | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/plugins/cpptools/cppcodecompletion.cpp b/src/plugins/cpptools/cppcodecompletion.cpp
index b6bac92bf9b..1f5bb7e1f4e 100644
--- a/src/plugins/cpptools/cppcodecompletion.cpp
+++ b/src/plugins/cpptools/cppcodecompletion.cpp
@@ -598,7 +598,9 @@ bool CppCodeCompletion::completeMember(const QList<TypeOfExpression::Result> &re
         if (ReferenceType *refTy = ty->asReferenceType())
             ty = refTy->elementType();
 
-        if (NamedType *namedTy = ty->asNamedType()) {
+        if (Class *classTy = ty->asClass()) {
+            classObjectCandidates.append(classTy);
+        } else if (NamedType *namedTy = ty->asNamedType()) {
             // ### This code is pretty slow.
             const QList<Symbol *> candidates = context.resolve(namedTy->name());
             foreach (Symbol *candidate, candidates) {
@@ -697,6 +699,8 @@ bool CppCodeCompletion::completeMember(const QList<TypeOfExpression::Result> &re
                 ++m_startPosition;
                 namedTy = ptrTy->elementType()->asNamedType();
             }
+        } else if (Class *classTy = ty->asClass()) {
+            classObjectCandidates.append(classTy);
         } else {
             namedTy = ty->asNamedType();
             if (! namedTy) {
-- 
GitLab