From 91cbbd39ac97bd32b699a76e19a7f316855d2f4b Mon Sep 17 00:00:00 2001 From: Ivan Donchevskii Date: Fri, 6 Jul 2018 11:38:55 +0200 Subject: [PATCH] Clang: Don't show template type parameters in Class View and Current Document filter They do not bring any value. Task-number: QTCREATORBUG-20716 Change-Id: I2876f0e1e3918cb33d133b4a65ccaefd9bd30ac8 Reviewed-by: David Schulz --- src/libs/clangsupport/clangsupport_global.h | 4 +++- src/libs/clangsupport/tokeninfocontainer.cpp | 2 ++ src/libs/clangsupport/tokeninfocontainer.h | 7 +++++++ .../clangcodemodel/clanghighlightingresultreporter.cpp | 2 ++ src/tools/clangbackend/source/tokeninfo.cpp | 6 +++++- 5 files changed, 19 insertions(+), 2 deletions(-) diff --git a/src/libs/clangsupport/clangsupport_global.h b/src/libs/clangsupport/clangsupport_global.h index def7cea41c0..01e9e2c7f40 100644 --- a/src/libs/clangsupport/clangsupport_global.h +++ b/src/libs/clangsupport/clangsupport_global.h @@ -104,7 +104,9 @@ enum class HighlightingType : quint8 ObjectiveCInterface, ObjectiveCImplementation, ObjectiveCProperty, - ObjectiveCMethod + ObjectiveCMethod, + TemplateTypeParameter, + TemplateTemplateParameter }; enum class StorageClass : quint8 diff --git a/src/libs/clangsupport/tokeninfocontainer.cpp b/src/libs/clangsupport/tokeninfocontainer.cpp index 157f93746c7..2744200c60e 100644 --- a/src/libs/clangsupport/tokeninfocontainer.cpp +++ b/src/libs/clangsupport/tokeninfocontainer.cpp @@ -70,6 +70,8 @@ static const char *highlightingTypeToCStringLiteral(HighlightingType type) RETURN_TEXT_FOR_CASE(ObjectiveCMethod); RETURN_TEXT_FOR_CASE(PrimitiveType); RETURN_TEXT_FOR_CASE(Declaration); + RETURN_TEXT_FOR_CASE(TemplateTypeParameter); + RETURN_TEXT_FOR_CASE(TemplateTemplateParameter); default: return "UnhandledHighlightingType"; } } diff --git a/src/libs/clangsupport/tokeninfocontainer.h b/src/libs/clangsupport/tokeninfocontainer.h index 8bd57b9f954..d01d0f92eb0 100644 --- a/src/libs/clangsupport/tokeninfocontainer.h +++ b/src/libs/clangsupport/tokeninfocontainer.h @@ -129,6 +129,13 @@ public: bool isGlobalDeclaration() const { + if (types.mixinHighlightingTypes.contains( + ClangBackEnd::HighlightingType::TemplateTypeParameter) + || types.mixinHighlightingTypes.contains( + ClangBackEnd::HighlightingType::TemplateTemplateParameter)) { + return false; + } + return extraInfo.declaration && types.mainHighlightingType != HighlightingType::LocalVariable && ((types.mainHighlightingType == HighlightingType::Operator) diff --git a/src/plugins/clangcodemodel/clanghighlightingresultreporter.cpp b/src/plugins/clangcodemodel/clanghighlightingresultreporter.cpp index ef1b905a8d8..795941f6ec9 100644 --- a/src/plugins/clangcodemodel/clanghighlightingresultreporter.cpp +++ b/src/plugins/clangcodemodel/clanghighlightingresultreporter.cpp @@ -108,6 +108,8 @@ bool ignore(ClangBackEnd::HighlightingType type) case HighlightingType::ObjectiveCImplementation: case HighlightingType::ObjectiveCProperty: case HighlightingType::ObjectiveCMethod: + case HighlightingType::TemplateTypeParameter: + case HighlightingType::TemplateTemplateParameter: return true; } diff --git a/src/tools/clangbackend/source/tokeninfo.cpp b/src/tools/clangbackend/source/tokeninfo.cpp index a5a2220adad..68877e4032a 100644 --- a/src/tools/clangbackend/source/tokeninfo.cpp +++ b/src/tools/clangbackend/source/tokeninfo.cpp @@ -341,9 +341,13 @@ void TokenInfo::typeKind(const Cursor &cursor) case CXCursor_ObjCCategoryImplDecl: m_types.mixinHighlightingTypes.push_back(HighlightingType::ObjectiveCCategory); return; - case CXCursor_ObjCSuperClassRef: case CXCursor_TemplateTypeParameter: + m_types.mixinHighlightingTypes.push_back(HighlightingType::TemplateTypeParameter); + return; case CXCursor_TemplateTemplateParameter: + m_types.mixinHighlightingTypes.push_back(HighlightingType::TemplateTemplateParameter); + return; + case CXCursor_ObjCSuperClassRef: case CXCursor_CXXStaticCastExpr: case CXCursor_CXXReinterpretCastExpr: break;