summaryrefslogtreecommitdiff
path: root/src/plugins/cpptools/cppcodecompletion.cpp
diff options
context:
space:
mode:
authorRoberto Raggi <roberto.raggi@nokia.com>2009-02-17 11:50:56 +0100
committerRoberto Raggi <roberto.raggi@nokia.com>2009-02-17 11:50:56 +0100
commitc020250556d3ae210acb174901754452922356bd (patch)
tree9688b3ecb61869d959a954c1eef75c3d6d210387 /src/plugins/cpptools/cppcodecompletion.cpp
parent738c50726deab938d9504df17d5fbd771c316b38 (diff)
downloadqt-creator-c020250556d3ae210acb174901754452922356bd.tar.gz
Fixes: Constructor completion.
Diffstat (limited to 'src/plugins/cpptools/cppcodecompletion.cpp')
-rw-r--r--src/plugins/cpptools/cppcodecompletion.cpp42
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;