Author: mps Date: Sat Jan 5 09:01:34 2019 New Revision: 350470 URL: http://llvm.org/viewvc/llvm-project?rev=350470&view=rev Log: Improve MSVC type visualizations
Display TypeBits in a single line. Fix bit rot in template visualizations Rudimentary support for deduced types Modified: cfe/trunk/utils/ClangVisualizers/clang.natvis Modified: cfe/trunk/utils/ClangVisualizers/clang.natvis URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/utils/ClangVisualizers/clang.natvis?rev=350470&r1=350469&r2=350470&view=diff ============================================================================== --- cfe/trunk/utils/ClangVisualizers/clang.natvis (original) +++ cfe/trunk/utils/ClangVisualizers/clang.natvis Sat Jan 5 09:01:34 2019 @@ -34,16 +34,37 @@ For later versions of Visual Studio, no <DisplayString Condition="TypeBits.TC==clang::Type::TypeClass::Record" IncludeView="cpp">{*(clang::RecordType *)this,view(cpp)}</DisplayString> <DisplayString Condition="TypeBits.TC==clang::Type::TypeClass::FunctionProto" IncludeView="poly">{*(clang::FunctionProtoType *)this}</DisplayString> <DisplayString Condition="TypeBits.TC==clang::Type::TypeClass::TemplateSpecialization" IncludeView="poly">{*(clang::TemplateSpecializationType *)this}</DisplayString> + <DisplayString Condition="TypeBits.TC==clang::Type::TypeClass::DeducedTemplateSpecialization" IncludeView="poly">{*(clang::DeducedTemplateSpecializationType *)this}</DisplayString> <DisplayString Condition="TypeBits.TC==clang::Type::TypeClass::InjectedClassName" IncludeView="poly">{*(clang::InjectedClassNameType *)this}</DisplayString> <DisplayString Condition="TypeBits.TC==clang::Type::TypeClass::PackExpansion" IncludeView="poly">{*(clang::PackExpansionType *)this}</DisplayString> <DisplayString Condition="TypeBits.TC==clang::LocInfoType::LocInfo" IncludeView="poly">{*(clang::LocInfoType *)this}</DisplayString> <DisplayString IncludeView="cpp">{*this,view(poly)}</DisplayString> <DisplayString IncludeView="poly">No visualizer yet for {(clang::Type::TypeClass)TypeBits.TC,en}Type</DisplayString> <!-- Not yet implemented Type subclass --> + <DisplayString IncludeView="Dependent" Condition="TypeBits.Dependent">Dependent</DisplayString> + <DisplayString IncludeView="Dependent"></DisplayString> + <DisplayString IncludeView="InstantiationDependent" Condition="TypeBits.InstantiationDependent">InstantiationDependent</DisplayString> + <DisplayString IncludeView="InstantiationDependent"></DisplayString> + <DisplayString IncludeView="VariablyModified" Condition="TypeBits.VariablyModified">VariablyModified</DisplayString> + <DisplayString IncludeView="VariablyModified"></DisplayString> + <DisplayString IncludeView="ContainsUnexpandedParameterPack" Condition="TypeBits.ContainsUnexpandedParameterPack">ContainsUnexpandedParameterPack</DisplayString> + <DisplayString IncludeView="ContainsUnexpandedParameterPack"></DisplayString> + <DisplayString IncludeView="Cache" Condition="TypeBits.CacheValid && TypeBits.CachedLocalOrUnnamed">CachedLinkage: {(clang::Linkage)TypeBits.CachedLinkage,en} CachedLocalOrUnnamed</DisplayString> + <DisplayString IncludeView="Cache" Condition="TypeBits.CacheValid && !TypeBits.CachedLocalOrUnnamed">CachedLinkage: {(clang::Linkage)TypeBits.CachedLinkage,en}</DisplayString> + <DisplayString IncludeView="Cache"></DisplayString> + <DisplayString IncludeView="FromAST" Condition="TypeBits.FromAST">FromAST</DisplayString> + <DisplayString IncludeView="FromAST"></DisplayString> + <DisplayString IncludeView="flags" Condition="!TypeBits.Dependent && !TypeBits.InstantiationDependent && !TypeBits.VariablyModified && !TypeBits.ContainsUnexpandedParameterPack && !TypeBits.CacheValid && !TypeBits.FromAST"> + No TypeBits set beyond TypeClass + </DisplayString> + <DisplayString IncludeView="flags"> + {*this, view(Dependent)}{*this, view(InstantiationDependent)}{*this, view(VariablyModified)} + {*this, view(ContainsUnexpandedParameterPack)}{*this, view(Cache)}{*this, view(FromAST)}</DisplayString> <DisplayString>{*this,view(cmn)} {{{*this,view(poly)}}}</DisplayString> <Expand> <Item Name="TypeClass" IncludeView="cmn">(clang::Type::TypeClass)TypeBits.TC</Item> - <Item Name="Flags" IncludeView="cmn">TypeBits</Item> + <Item Name="Flags" IncludeView="cmn">*this,view(flags)</Item> <Item Name="Canonical" IncludeView="cmn">CanonicalType</Item> + <Item Name="isCanonicalUnqualified" IncludeView="cmn">CanonicalType.Value.Value == this</Item> <ExpandedItem ExcludeView="cmn" Condition="TypeBits.TC==clang::Type::TypeClass::Builtin">*(clang::BuiltinType *)this</ExpandedItem> <ExpandedItem ExcludeView="cmn" Condition="TypeBits.TC==clang::Type::TypeClass::Pointer">*(clang::PointerType *)this</ExpandedItem> <ExpandedItem ExcludeView="cmn" Condition="TypeBits.TC==clang::Type::TypeClass::LValueReference">*(clang::LValueReferenceType *)this</ExpandedItem> @@ -54,6 +75,7 @@ For later versions of Visual Studio, no <ExpandedItem ExcludeView="cmn" Condition="TypeBits.TC==clang::Type::TypeClass::Record">(clang::RecordType *)this</ExpandedItem> <ExpandedItem ExcludeView="cmn" Condition="TypeBits.TC==clang::Type::TypeClass::FunctionProto">(clang::FunctionProtoType *)this</ExpandedItem> <ExpandedItem ExcludeView="cmn" Condition="TypeBits.TC==clang::Type::TypeClass::TemplateSpecialization">(clang::TemplateSpecializationType *)this</ExpandedItem> + <ExpandedItem ExcludeView="cmn" Condition="TypeBits.TC==clang::Type::TypeClass::DeducedTemplateSpecialization">(clang::DeducedTemplateSpecializationType *)this</ExpandedItem> <ExpandedItem ExcludeView="cmn" Condition="TypeBits.TC==clang::Type::TypeClass::InjectedClassName">(clang::InjectedClassNameType *)this</ExpandedItem> <ExpandedItem ExcludeView="cmn" Condition="TypeBits.TC==clang::Type::TypeClass::PackExpansion">(clang::PackExpansionType *)this</ExpandedItem> <ExpandedItem ExcludeView="cmn" Condition="TypeBits.TC==clang::LocInfoType::LocInfo">(clang::LocInfoType *)this</ExpandedItem> @@ -125,7 +147,13 @@ For later versions of Visual Studio, no <DisplayString>{*this,view(TorC)} {*this,view(MaybeEllipses)}{Name,view(cpp)}</DisplayString> </Type> <Type Name="clang::TemplateDecl"> - <DisplayString>template{*TemplateParams} {*TemplatedDecl};</DisplayString> + <DisplayString>template{TemplateParams,view(deref)} {*TemplatedDecl};</DisplayString> + </Type> + <Type Name="clang::TemplateName"> + <DisplayString>{Storage,view(deref)}</DisplayString> + <Expand> + <ExpandedItem>Storage</ExpandedItem> + </Expand> </Type> <Type Name="clang::NamedDecl" > <DisplayString IncludeView="cpp">{Name,view(cpp)}</DisplayString> @@ -136,11 +164,11 @@ For later versions of Visual Studio, no <DisplayString IncludeView="implicit"></DisplayString> <DisplayString IncludeView="modifiers">{*this,view(implicit)}</DisplayString> <DisplayString IncludeView="cpp">{*this,view(modifiers)}{Name,view(cpp)}</DisplayString> - <DisplayString Condition="TagDeclKind==clang::TagTypeKind::TTK_Struct">{*this,view(modifiers)}struct {Name,view(cpp)}</DisplayString> - <DisplayString Condition="TagDeclKind==clang::TagTypeKind::TTK_Interface">{*this,view(modifiers)}interface {Name,view(cpp)}</DisplayString> - <DisplayString Condition="TagDeclKind==clang::TagTypeKind::TTK_Union">{*this,view(modifiers)}union {Name,view(cpp)}</DisplayString> - <DisplayString Condition="TagDeclKind==clang::TagTypeKind::TTK_Class">{*this,view(modifiers)}class {Name,view(cpp)}</DisplayString> - <DisplayString Condition="TagDeclKind==clang::TagTypeKind::TTK_Enum">{*this,view(modifiers)}enum {Name,view(cpp)}</DisplayString> + <DisplayString Condition="TagDeclBits.TagDeclKind==clang::TagTypeKind::TTK_Struct">{*this,view(modifiers)}struct {Name,view(cpp)}</DisplayString> + <DisplayString Condition="TagDeclBits.TagDeclKind==clang::TagTypeKind::TTK_Interface">{*this,view(modifiers)}interface {Name,view(cpp)}</DisplayString> + <DisplayString Condition="TagDeclBits.TagDeclKind==clang::TagTypeKind::TTK_Union">{*this,view(modifiers)}union {Name,view(cpp)}</DisplayString> + <DisplayString Condition="TagDeclBits.TagDeclKind==clang::TagTypeKind::TTK_Class">{*this,view(modifiers)}class {Name,view(cpp)}</DisplayString> + <DisplayString Condition="TagDeclBits.TagDeclKind==clang::TagTypeKind::TTK_Enum">{*this,view(modifiers)}enum {Name,view(cpp)}</DisplayString> <Expand> <ExpandedItem>(clang::DeclContext *)this</ExpandedItem> </Expand> @@ -381,6 +409,18 @@ For later versions of Visual Studio, no </ArrayItems> </Expand> </Type> + <Type Name="clang::DeducedType"> + <Expand> + <Item Name="isDeduced">(CanonicalType.Value.Value != this) || TypeBits.Dependent</Item> + <ExpandedItem>*(clang::Type *)this,view(cmn)</ExpandedItem> + </Expand> + </Type> + <Type Name="clang::DeducedTemplateSpecializationType"> + <DisplayString>{Template}</DisplayString> + <Expand> + <ExpandedItem>*(clang::DeducedType *)this</ExpandedItem> + </Expand> + </Type> <Type Name="clang::IdentifierInfo"> <DisplayString Condition="Entry != 0">{((llvm::StringMapEntry<clang::IdentifierInfo *>*)Entry)+1,sb}</DisplayString> <Expand> _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits