Clang: Use the CodeCompletion getter directly

Casting from a Qvariant is expensive and it happens here very often.

Change-Id: If524412f314bb8ac9e9e5e4335c7e32ff7a9ce40
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
This commit is contained in:
Marco Bubke
2015-07-15 17:01:50 +02:00
parent 8938addc5c
commit c267a34b09
3 changed files with 9 additions and 14 deletions

View File

@@ -54,8 +54,6 @@ bool ClangAssistProposalItem::prematurelyApplies(const QChar &typedChar) const
applies = QString::fromLatin1("(,").contains(typedChar); applies = QString::fromLatin1("(,").contains(typedChar);
else if (m_completionOperator == T_STRING_LITERAL || m_completionOperator == T_ANGLE_STRING_LITERAL) else if (m_completionOperator == T_STRING_LITERAL || m_completionOperator == T_ANGLE_STRING_LITERAL)
applies = (typedChar == QLatin1Char('/')) && text().endsWith(QLatin1Char('/')); applies = (typedChar == QLatin1Char('/')) && text().endsWith(QLatin1Char('/'));
else if (!isCodeCompletion())
applies = (typedChar == QLatin1Char('(')); /* && data().canConvert<CompleteFunctionDeclaration>()*/ //###
else if (codeCompletion().completionKind() == CodeCompletion::ObjCMessageCompletionKind) else if (codeCompletion().completionKind() == CodeCompletion::ObjCMessageCompletionKind)
applies = QString::fromLatin1(";.,").contains(typedChar); applies = QString::fromLatin1(";.,").contains(typedChar);
else else
@@ -247,18 +245,14 @@ void ClangAssistProposalItem::addOverload(const CodeCompletion &ccr)
m_overloads.append(ccr); m_overloads.append(ccr);
} }
CodeCompletion ClangAssistProposalItem::codeCompletion() const void ClangAssistProposalItem::setCodeCompletion(const CodeCompletion &codeCompletion)
{ {
const QVariant &value = data(); m_codeCompletion = codeCompletion;
if (value.canConvert<CodeCompletion>())
return value.value<CodeCompletion>();
else
return CodeCompletion();
} }
bool ClangAssistProposalItem::isCodeCompletion() const const ClangBackEnd::CodeCompletion &ClangAssistProposalItem::codeCompletion() const
{ {
return data().canConvert<CodeCompletion>(); return m_codeCompletion;
} }
} // namespace Internal } // namespace Internal

View File

@@ -52,13 +52,14 @@ public:
bool isOverloaded() const; bool isOverloaded() const;
void addOverload(const ClangBackEnd::CodeCompletion &ccr); void addOverload(const ClangBackEnd::CodeCompletion &ccr);
ClangBackEnd::CodeCompletion codeCompletion() const; void setCodeCompletion(const ClangBackEnd::CodeCompletion &codeCompletion);
const ClangBackEnd::CodeCompletion &codeCompletion() const;
bool isCodeCompletion() const;
private: private:
ClangBackEnd::CodeCompletion m_codeCompletion;
QList<ClangBackEnd::CodeCompletion> m_overloads;
unsigned m_completionOperator; unsigned m_completionOperator;
mutable QChar m_typedChar; mutable QChar m_typedChar;
QList<ClangBackEnd::CodeCompletion> m_overloads;
}; };
} // namespace Internal } // namespace Internal

View File

@@ -103,7 +103,7 @@ QList<AssistProposalItem *> toAssistProposalItems(const CodeCompletions &complet
if (ccr.completionKind() == CodeCompletion::KeywordCompletionKind) if (ccr.completionKind() == CodeCompletion::KeywordCompletionKind)
item->setDetail(CompletionChunksToTextConverter::convertToToolTip(ccr.chunks())); item->setDetail(CompletionChunksToTextConverter::convertToToolTip(ccr.chunks()));
item->setData(QVariant::fromValue(ccr)); item->setCodeCompletion(ccr);
} }
// FIXME: show the effective accessebility instead of availability // FIXME: show the effective accessebility instead of availability