Skip to content

Commit

Permalink
#3177: Print metadata token of custom attribute in IL output.
Browse files Browse the repository at this point in the history
  • Loading branch information
siegfriedpammer committed Mar 16, 2024
1 parent f038055 commit 89d97b9
Showing 1 changed file with 5 additions and 3 deletions.
8 changes: 5 additions & 3 deletions ICSharpCode.Decompiler/Disassembler/ReflectionDisassembler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -362,7 +362,7 @@ void DisassembleMethodHeaderInternal(PEFile module, MethodDefinitionHandle handl

foreach (var p in methodDefinition.GetGenericParameters())
{
WriteGenericParameterAttributes(module, genericContext, p);
WriteGenericParametersAndAttributes(module, genericContext, p);
}
foreach (var p in methodDefinition.GetParameters())
{
Expand Down Expand Up @@ -1134,7 +1134,7 @@ void WriteParameters(MetadataReader metadata, IEnumerable<ParameterHandle> param
output.WriteLine();
}

void WriteGenericParameterAttributes(PEFile module, MetadataGenericContext context, GenericParameterHandle handle)
void WriteGenericParametersAndAttributes(PEFile module, MetadataGenericContext context, GenericParameterHandle handle)
{
var metadata = module.Metadata;
var p = metadata.GetGenericParameter(handle);
Expand Down Expand Up @@ -1591,7 +1591,7 @@ public void DisassembleType(PEFile module, TypeDefinitionHandle type)
WriteSecurityDeclarations(module, typeDefinition.GetDeclarativeSecurityAttributes());
foreach (var tp in typeDefinition.GetGenericParameters())
{
WriteGenericParameterAttributes(module, genericContext, tp);
WriteGenericParametersAndAttributes(module, genericContext, tp);
}
var layout = typeDefinition.GetLayout();
if (!layout.IsDefault)
Expand Down Expand Up @@ -1808,6 +1808,8 @@ void WriteAttributes(PEFile module, CustomAttributeHandleCollection attributes)
foreach (CustomAttributeHandle a in Process(module, attributes))
{
output.Write(".custom ");
WriteMetadataToken(output, module, a, MetadataTokens.GetToken(a),
spaceAfter: true, spaceBefore: false, ShowMetadataTokens, ShowMetadataTokensInBase10);
var attr = metadata.GetCustomAttribute(a);
attr.Constructor.WriteTo(module, output, default);
if (!attr.Value.IsNil)
Expand Down

0 comments on commit 89d97b9

Please sign in to comment.