diff options
author | Roberto Raggi <roberto.raggi@nokia.com> | 2009-02-17 11:50:56 +0100 |
---|---|---|
committer | Roberto Raggi <roberto.raggi@nokia.com> | 2009-02-17 11:50:56 +0100 |
commit | c020250556d3ae210acb174901754452922356bd (patch) | |
tree | 9688b3ecb61869d959a954c1eef75c3d6d210387 /src/plugins/cpptools/cppcodecompletion.cpp | |
parent | 738c50726deab938d9504df17d5fbd771c316b38 (diff) | |
download | qt-creator-c020250556d3ae210acb174901754452922356bd.tar.gz |
Fixes: Constructor completion.
Diffstat (limited to 'src/plugins/cpptools/cppcodecompletion.cpp')
-rw-r--r-- | src/plugins/cpptools/cppcodecompletion.cpp | 42 |
1 files changed, 26 insertions, 16 deletions
diff --git a/src/plugins/cpptools/cppcodecompletion.cpp b/src/plugins/cpptools/cppcodecompletion.cpp index 9815b6f2c1..dacce4a180 100644 --- a/src/plugins/cpptools/cppcodecompletion.cpp +++ b/src/plugins/cpptools/cppcodecompletion.cpp @@ -563,32 +563,42 @@ int CppCodeCompletion::startCompletion(TextEditor::ITextEditable *editor) return -1; } -bool CppCodeCompletion::completeConstructorOrFunction(FullySpecifiedType exprTy, - const QList<TypeOfExpression::Result> &resolvedTypes) +bool CppCodeCompletion::completeConstructorOrFunction(FullySpecifiedType, + const QList<TypeOfExpression::Result> &results) { ConvertToCompletionItem toCompletionItem(this); Overview o; o.setShowReturnTypes(true); o.setShowArgumentNames(true); - if (Class *klass = exprTy->asClassType()) { - for (unsigned i = 0; i < klass->memberCount(); ++i) { - Symbol *member = klass->memberAt(i); - if (! member->type()->isFunctionType()) - continue; - else if (! member->identity()) - continue; - else if (! member->identity()->isEqualTo(klass->identity())) - continue; - if (TextEditor::CompletionItem item = toCompletionItem(member)) { - item.m_text = o(member->type(), member->name()); - m_completions.append(item); + foreach (const TypeOfExpression::Result &result, results) { + FullySpecifiedType exprTy = result.first; + + if (Class *klass = exprTy->asClassType()) { + for (unsigned i = 0; i < klass->memberCount(); ++i) { + Symbol *member = klass->memberAt(i); + if (! member->type()->isFunctionType()) + continue; + else if (! member->identity()) + continue; + else if (! member->identity()->isEqualTo(klass->identity())) + continue; + if (TextEditor::CompletionItem item = toCompletionItem(member)) { + item.m_text = o(member->type(), member->name()); + m_completions.append(item); + } } + + break; } - } else { + } + + if (m_completions.isEmpty()) { QSet<QString> signatures; - foreach (TypeOfExpression::Result p, resolvedTypes) { + + foreach (const TypeOfExpression::Result &p, results) { FullySpecifiedType ty = p.first; + if (Function *fun = ty->asFunctionType()) { if (TextEditor::CompletionItem item = toCompletionItem(fun)) { QString signature; |