Skip to content

Commit dddfeed

Browse files
committed
chore: natvis improvements
1 parent 221d69a commit dddfeed

File tree

1 file changed

+85
-46
lines changed

1 file changed

+85
-46
lines changed

src/lib/clang.natvis

+85-46
Original file line numberDiff line numberDiff line change
@@ -443,12 +443,30 @@ For later versions of Visual Studio, no setup is required-->
443443
</Type>
444444

445445
<Type Name="clang::NestedNameSpecifier">
446-
<DisplayString Condition="!Specifier"></DisplayString>
447-
<DisplayString Condition="((*(uintptr_t *)Prefix.Value.Data&gt;&gt;1)&amp;3) == 0">{(IdentifierInfo*)Specifier,view(cpp)na}::</DisplayString>
448-
<DisplayString Condition="((*(uintptr_t *)Prefix.Value.Data&gt;&gt;1)&amp;3) == 1">{(NamedDecl*)Specifier,view(cpp)na}::</DisplayString>
449-
<DisplayString Condition="((*(uintptr_t *)Prefix.Value.Data&gt;&gt;1)&amp;3) == 2">{(Type*)Specifier,view(cpp)na}::</DisplayString>
450-
<Expand>
451-
<Item Name="Kind">(NestedNameSpecifier::StoredSpecifierKind)((*(uintptr_t *)Prefix.Value.Data&gt;&gt;1)&amp;3)</Item>
446+
<Intrinsic Category="Data" Name="as_decl" Expression="(clang::NamedDecl*)Specifier"/>
447+
<Intrinsic Category="Data" Name="as_type" Expression="(clang::Type*)Specifier"/>
448+
<Intrinsic Category="Data" Name="as_identifier" Expression="(clang::IdentifierInfo*)Specifier"/>
449+
<Intrinsic Category="Data" Name="get_stored_kind" Expression="(NestedNameSpecifier::StoredSpecifierKind)Prefix.get_int()"/>
450+
<Intrinsic Category="Data" Name="get_kind" Expression="(NestedNameSpecifier::SpecifierKind)(
451+
Specifier ? (
452+
get_stored_kind() != StoredSpecifierKind::StoredIdentifier ? (
453+
get_stored_kind() == StoredSpecifierKind::StoredDecl ? (
454+
as_decl()-&gt;is(Decl::Namespace) ? SpecifierKind::Namespace : (
455+
as_decl()-&gt;is(Decl::NamespaceAlias) ? SpecifierKind::NamespaceAlias : SpecifierKind::Super
456+
)
457+
) : (get_stored_kind() == StoredSpecifierKind::StoredTypeSpec ? SpecifierKind::TypeSpec : SpecifierKind::TypeSpecWithTemplate)
458+
) : SpecifierKind::Identifier
459+
) : SpecifierKind::Global
460+
)"/>
461+
462+
<Expand>
463+
<!-- <Item Name="StoredKind">get_stored_kind(),en</Item> -->
464+
<Item Name="Kind">get_kind(),en</Item>
465+
<Item Name="Specifier" Condition="Specifier &amp;&amp; get_stored_kind() == StoredSpecifierKind::StoredIdentifier">as_identifier(),na</Item>
466+
<Item Name="Specifier" Condition="Specifier &amp;&amp; get_stored_kind() == StoredSpecifierKind::StoredDecl">as_decl(),na</Item>
467+
<Item Name="Specifier" Condition="Specifier &amp;&amp; get_stored_kind() == StoredSpecifierKind::StoredTypeSpec ||
468+
get_stored_kind() == StoredSpecifierKind::StoredTypeSpecWithTemplate">as_type(),na</Item>
469+
<Item Name="Prefix" Condition="! Prefix.is_null()">Prefix.get_ptr(),na</Item>
452470
</Expand>
453471
</Type>
454472

@@ -946,7 +964,8 @@ For later versions of Visual Studio, no setup is required-->
946964
<ExpandedItem>*(clang::Type*)this,nd</ExpandedItem>
947965
<Item Name="[return type]">ResultType</Item>
948966
<Synthetic Name="[parameter types]">
949-
<DisplayString>size = {FunctionTypeBits.NumParams}</DisplayString>
967+
<DisplayString Condition="FunctionTypeBits.NumParams">size = {FunctionTypeBits.NumParams}</DisplayString>
968+
<DisplayString>none</DisplayString>
950969
<Expand>
951970
<ArrayItems>
952971
<Size>FunctionTypeBits.NumParams</Size>
@@ -1084,6 +1103,9 @@ For later versions of Visual Studio, no setup is required-->
10841103
<!-- ================================================================================================ -->
10851104

10861105
<Type Name="clang::Decl">
1106+
<Intrinsic Category="Data" Name="is" Expression="(Decl::Kind)DeclKind == k">
1107+
<Parameter Type="Decl::Kind" Name="k"/>
1108+
</Intrinsic>
10871109
<Intrinsic Category="Data" Name="get_kind" Expression="(clang::Decl::Kind)DeclKind" />
10881110
<Intrinsic Category="Data" Name="get_semantic_dc" Expression="(DeclContext*)(DeclCtx.is_null() ? nullptr :
10891111
(DeclCtx.get_int() == 0 ? DeclCtx.get_ptr() : ((Decl::MultipleDC*)DeclCtx.get_ptr())-&gt;SemanticDC))" />
@@ -1279,11 +1301,15 @@ For later versions of Visual Studio, no setup is required-->
12791301
<Type Name="clang::DeclaratorDecl">
12801302
<Intrinsic Category="Data" Name="get_type_as_written"
12811303
Expression="DeclInfo.is_null() ? nullptr : (TypeSourceInfo*)(DeclInfo.get_int() == 0 ?
1282-
DeclInfo.get_ptr() : ((clang::DeclaratorDecl::ExtInfo*)DeclInfo.get_ptr())-&gt;TInfo)"/>
1304+
DeclInfo.get_ptr() : ((DeclaratorDecl::ExtInfo*)DeclInfo.get_ptr())-&gt;TInfo)"/>
1305+
<Intrinsic Category="Data" Name="get_qualifier"
1306+
Expression="DeclInfo.is_null() || DeclInfo.get_int() == 0 ? nullptr :
1307+
(NestedNameSpecifier*)(((DeclaratorDecl::ExtInfo*)DeclInfo.get_ptr())-&gt;QualifierLoc.Qualifier)"/>
12831308

12841309
<DisplayString>{(ValueDecl*)this,nand}</DisplayString>
12851310
<Expand>
12861311
<ExpandedItem>*(NamedDecl*)this,nd</ExpandedItem>
1312+
<Item Name="Qualifier" Condition="get_qualifier()">get_qualifier(),na</Item>
12871313
<Synthetic Name="Type">
12881314
<DisplayString>{DeclType}</DisplayString>
12891315
<Expand>
@@ -1295,6 +1321,10 @@ For later versions of Visual Studio, no setup is required-->
12951321
</Type>
12961322

12971323
<Type Name="clang::TagDecl">
1324+
<Intrinsic Category="Data" Name="get_qualifier"
1325+
Expression="TypedefNameDeclOrQualifier.is_null() || TypedefNameDeclOrQualifier.get_int() == 0 ? nullptr :
1326+
(NestedNameSpecifier*)(((TagDecl::ExtInfo*)TypedefNameDeclOrQualifier.get_ptr())-&gt;QualifierLoc.Qualifier)"/>
1327+
12981328
<DisplayString Condition="(TagTypeKind)TagDeclBits.TagDeclKind == TagTypeKind::TTK_Struct">{(Decl*)this,nand} struct {Name}</DisplayString>
12991329
<DisplayString Condition="(TagTypeKind)TagDeclBits.TagDeclKind == TagTypeKind::TTK_Class">{(Decl*)this,nand} class {Name}</DisplayString>
13001330
<DisplayString Condition="(TagTypeKind)TagDeclBits.TagDeclKind == TagTypeKind::TTK_Union">{(Decl*)this,nand} union {Name}</DisplayString>
@@ -1311,6 +1341,7 @@ For later versions of Visual Studio, no setup is required-->
13111341
<DisplayString Condition="(TagTypeKind)TagDeclBits.TagDeclKind == TagTypeKind::TTK_Interface">__interface</DisplayString>
13121342
<DisplayString>invalid</DisplayString>
13131343
</Synthetic>
1344+
<Item Name="Qualifier" Condition="! TypedefNameDeclOrQualifier.is_null() &amp;&amp; TypedefNameDeclOrQualifier.get_int() == 1">get_qualifier(),na</Item>
13141345
<ExpandedItem>*(redeclarable_base*)this,nd</ExpandedItem>
13151346
<ExpandedItem>*(DeclContext*)this,nd</ExpandedItem>
13161347
</Expand>
@@ -1345,7 +1376,7 @@ For later versions of Visual Studio, no setup is required-->
13451376
<Expand>
13461377
<ExpandedItem>*(NamedDecl*)this,nd</ExpandedItem>
13471378
<Item Name="Type">get_type_as_written()</Item>
1348-
<Item Name="DescribedTemplate" Condition="Template">Template</Item>
1379+
<Item Name="DescribedTemplate" Condition="Template">Template,na</Item>
13491380
<ExpandedItem>*(redeclarable_base*)this,nd</ExpandedItem>
13501381
</Expand>
13511382
</Type>
@@ -1396,7 +1427,28 @@ For later versions of Visual Studio, no setup is required-->
13961427

13971428
<DisplayString>{(DeclaratorDecl*)this,nand}</DisplayString>
13981429
<Expand>
1399-
<ExpandedItem>*(DeclaratorDecl*)this,nd</ExpandedItem>
1430+
<!-- <ExpandedItem>*(DeclaratorDecl*)this,nd</ExpandedItem> -->
1431+
<ExpandedItem>*(NamedDecl*)this,nd</ExpandedItem>
1432+
<Item Name="Qualifier" Condition="get_qualifier()">get_qualifier(),na</Item>
1433+
1434+
<Item Name="IsDefinition">
1435+
(FunctionDeclBits.IsDeleted &amp;&amp; ! FunctionDeclBits.IsDefaulted) ||
1436+
((! FunctionDeclBits.HasDefaultedFunctionInfo &amp;&amp; Body.Ptr) || FunctionDeclBits.IsLateTemplateParsed) ||
1437+
FunctionDeclBits.HasSkippedBody ||
1438+
FunctionDeclBits.WillHaveBody
1439+
</Item>
1440+
<!--
1441+
<Synthetic Name="[definition]">
1442+
<Expand>
1443+
<Item Name="IsDefinition">
1444+
(FunctionDeclBits.IsDeleted &amp;&amp; ! FunctionDeclBits.IsDefaulted) ||
1445+
((! FunctionDeclBits.HasDefaultedFunctionInfo &amp;&amp; Body.Ptr) || FunctionDeclBits.IsLateTemplateParsed) ||
1446+
FunctionDeclBits.HasSkippedBody ||
1447+
FunctionDeclBits.WillHaveBody
1448+
</Item>
1449+
</Expand>
1450+
</Synthetic>
1451+
-->
14001452

14011453
<Item Name="DescribedTemplate" Condition="! TemplateOrSpecialization.is_null() &amp;&amp;
14021454
TemplateOrSpecialization.get_int() == 0 &amp;&amp;
@@ -1410,35 +1462,20 @@ For later versions of Visual Studio, no setup is required-->
14101462
</Item>
14111463

14121464
<Item Name="MemberSpecialization" Condition="! TemplateOrSpecialization.is_null() &amp;&amp; TemplateOrSpecialization.get_int() == 1">
1413-
(MemberSpecializationInfo*)TemplateOrSpecialization.get_ptr()
1465+
(MemberSpecializationInfo*)TemplateOrSpecialization.get_ptr(),na
14141466
</Item>
14151467

14161468
<Item Name="TemplateSpecialization" Condition="! TemplateOrSpecialization.is_null() &amp;&amp; TemplateOrSpecialization.get_int() == 2">
1417-
(FunctionTemplateSpecializationInfo*)TemplateOrSpecialization.get_ptr()
1469+
(FunctionTemplateSpecializationInfo*)TemplateOrSpecialization.get_ptr(),na
14181470
</Item>
14191471

1420-
<Item Name="isDefinition">
1421-
(FunctionDeclBits.IsDeleted &amp;&amp; ! FunctionDeclBits.IsDefaulted) ||
1422-
((! FunctionDeclBits.HasDefaultedFunctionInfo &amp;&amp; Body.Ptr) || FunctionDeclBits.IsLateTemplateParsed) ||
1423-
FunctionDeclBits.HasSkippedBody ||
1424-
FunctionDeclBits.WillHaveBody
1425-
</Item>
1426-
<!--
1427-
<Synthetic Name="[definition]">
1428-
<Expand>
1429-
<Item Name="isDefinition">
1430-
(FunctionDeclBits.IsDeleted &amp;&amp; ! FunctionDeclBits.IsDefaulted) ||
1431-
((! FunctionDeclBits.HasDefaultedFunctionInfo &amp;&amp; Body.Ptr) || FunctionDeclBits.IsLateTemplateParsed) ||
1432-
FunctionDeclBits.HasSkippedBody ||
1433-
FunctionDeclBits.WillHaveBody
1434-
</Item>
1435-
</Expand>
1436-
</Synthetic>
1437-
-->
1472+
<Item Name="[returns]" Condition="DeclType.is(Type::FunctionProto)">((FunctionType*)(DeclType.get_type_ptr()))-&gt;ResultType</Item>
14381473

14391474
<Synthetic Name="[parameters]">
1440-
<DisplayString Condition="ParamInfo &amp;&amp; DeclType.is(Type::FunctionProto)">size = {DeclType.get_type_ptr()-&gt;FunctionTypeBits.NumParams}</DisplayString>
1441-
<DisplayString>size = 0</DisplayString>
1475+
<DisplayString Condition="ParamInfo &amp;&amp; DeclType.is(Type::FunctionProto) &amp;&amp; DeclType.get_type_ptr()-&gt;FunctionTypeBits.NumParams">
1476+
size = {DeclType.get_type_ptr()-&gt;FunctionTypeBits.NumParams}
1477+
</DisplayString>
1478+
<DisplayString>none</DisplayString>
14421479
<Expand>
14431480
<ArrayItems Condition="ParamInfo &amp;&amp; DeclType.is(Type::FunctionProto)">
14441481
<Size>DeclType.get_type_ptr()-&gt;FunctionTypeBits.NumParams</Size>
@@ -1682,13 +1719,7 @@ For later versions of Visual Studio, no setup is required-->
16821719

16831720
<!-- ================================================================================================ -->
16841721

1685-
<Type Name="clang::ParmVarDecl">
1686-
<DisplayString>{*(VarDecl*)this,nand}</DisplayString>
1687-
<Expand>
1688-
<ExpandedItem>*(VarDecl*)this,nd</ExpandedItem>
1689-
<Item Name="ParmVarDeclBits">ParmVarDeclBits</Item>
1690-
</Expand>
1691-
</Type>
1722+
16921723

16931724
<Type Name="clang::VarDecl">
16941725
<AlternativeType Name="clang::VarTemplatePartialSpecializationDecl" Inheritable="false" />
@@ -1709,9 +1740,6 @@ For later versions of Visual Studio, no setup is required-->
17091740
clang::TemplateSpecializationKind(SpecializationKind),en
17101741
</Item>
17111742

1712-
<Item Name="SpecializationType" Optional="true" Condition="ExplicitInfo">ExplicitInfo-&gt;TypeAsWritten</Item>
1713-
1714-
17151743
<!-- KRYSTIAN TODO: this is stored in a DenseMap in ASTContext...
17161744
<Item Name="SpecializationKind" Condition="! is_vtsd() &amp;&amp; ! TemplateOrInstantiation.is_null() &amp;&amp; TemplateOrInstantiation.get_int() == 1">
17171745
clang::TemplateSpecializationKind(
@@ -1739,12 +1767,21 @@ For later versions of Visual Studio, no setup is required-->
17391767
<Item Name="SpecializedPartial" Optional="true" Condition="SpecializedTemplate.get_int() == 1">
17401768
((VarTemplateSpecializationDecl::SpecializedPartialSpecialization*)(SpecializedTemplate.get_ptr()))-&gt;PartialSpecialization
17411769
</Item>
1770+
1771+
<Item Name="SpecializationType" Optional="true" Condition="ExplicitInfo">ExplicitInfo-&gt;TypeAsWritten</Item>
17421772
<Item Name="PointOfInstantiation" Optional="true">PointOfInstantiation</Item>
17431773

17441774
<ExpandedItem>*(redeclarable_base*)this,nd</ExpandedItem>
17451775
</Expand>
17461776
</Type>
17471777

1778+
<Type Name="clang::ParmVarDecl">
1779+
<DisplayString>{*(VarDecl*)this,nand}</DisplayString>
1780+
<Expand>
1781+
<ExpandedItem>*(VarDecl*)this,nd</ExpandedItem>
1782+
<!-- <Item Name="ParmVarDeclBits">ParmVarDeclBits</Item> -->
1783+
</Expand>
1784+
</Type>
17481785

17491786
<!-- ================================================================================================ -->
17501787

@@ -1760,6 +1797,8 @@ For later versions of Visual Studio, no setup is required-->
17601797
<Expand>
17611798
<ExpandedItem>*(NamedDecl*)this,nd</ExpandedItem>
17621799

1800+
<Item Name="Qualifier" Condition="get_qualifier()">get_qualifier(),na</Item>
1801+
17631802
<Item Name="TemplateParams" Optional="true">TemplateParams,na</Item>
17641803
<Item Name="TemplateArgs" Optional="true">TemplateArgs,na</Item>
17651804

@@ -1775,14 +1814,12 @@ For later versions of Visual Studio, no setup is required-->
17751814
(ClassTemplateDecl*)TemplateOrInstantiation.get_ptr()
17761815
</Item>
17771816
<Item Name="MemberSpecialization" Condition="! TemplateOrInstantiation.is_null() &amp;&amp; TemplateOrInstantiation.get_int() == 1">
1778-
(MemberSpecializationInfo*)TemplateOrInstantiation.get_ptr()
1817+
(MemberSpecializationInfo*)TemplateOrInstantiation.get_ptr(),na
17791818
</Item>
17801819

1781-
<Item Name="SpecializationType" Optional="true" Condition="ExplicitInfo">ExplicitInfo-&gt;TypeAsWritten</Item>
1782-
17831820
<Item Name="IsMemberSpecialization" Optional="true">InstantiatedFromMember.get_int()</Item>
17841821
<Item Name="InstantiatedFromMember" Optional="true" Condition="! InstantiatedFromMember.is_null()">
1785-
as_ctpsd()-&gt;InstantiatedFromMember.get_ptr()
1822+
InstantiatedFromMember.get_ptr()
17861823
</Item>
17871824

17881825
<Item Name="SpecializedTemplate" Optional="true" Condition="SpecializedTemplate.get_int() == 0">
@@ -1792,6 +1829,8 @@ For later versions of Visual Studio, no setup is required-->
17921829
((ClassTemplateSpecializationDecl::SpecializedPartialSpecialization*)(SpecializedTemplate.get_ptr()))-&gt;PartialSpecialization
17931830
</Item>
17941831

1832+
<Item Name="SpecializationType" Optional="true" Condition="ExplicitInfo">ExplicitInfo-&gt;TypeAsWritten</Item>
1833+
17951834
<Item Name="PointOfInstantiation" Optional="true">PointOfInstantiation</Item>
17961835

17971836
<ExpandedItem>*(redeclarable_base*)this,nd</ExpandedItem>

0 commit comments

Comments
 (0)