Clang: For definitions show their parent class qualification

Append methods and class members with the scope they belong to
extracting the parent name. It was like that in old code model.

Example:
namespace Foo {
void Bar::function() {}
}

Old result:
Foo
  function() -> void

New result:
Foo
  Bar::function() -> void

Change-Id: I9dad86a6738baafb1a210c5e1146d8de33828c44
Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
Ivan Donchevskii
2018-06-21 08:28:50 +02:00
parent 91cbbd39ac
commit 534aa02163

View File

@@ -96,6 +96,20 @@ static QString addType(const QString &name, const ClangBackEnd::ExtraInfo &extra
return name + QLatin1String(" -> ", 4) + extraInfo.typeSpelling.toString();
}
static QString fullName(const ClangBackEnd::ExtraInfo &extraInfo, TokenTreeItem *parent)
{
const QString parentType = parent->token.extraInfo.typeSpelling.toString();
if (extraInfo.semanticParentTypeSpelling.startsWith(parentType)) {
const QString parentQualification = parentType.isEmpty()
? extraInfo.semanticParentTypeSpelling
: extraInfo.semanticParentTypeSpelling.mid(parentType.length() + 2);
if (!parentQualification.isEmpty())
return parentQualification + "::" + extraInfo.token.toString();
}
return extraInfo.token.toString();
}
QVariant TokenTreeItem::data(int column, int role) const
{
Q_UNUSED(column)
@@ -109,7 +123,8 @@ QVariant TokenTreeItem::data(int column, int role) const
switch (role) {
case Qt::DisplayRole: {
QString name = token.extraInfo.token.toString();
QString name = fullName(token.extraInfo, static_cast<TokenTreeItem *>(parent()));
ClangBackEnd::HighlightingType mainType = token.types.mainHighlightingType;
if (mainType == ClangBackEnd::HighlightingType::VirtualFunction