From 89d97b99a074d87fa279959921312d7abbece599 Mon Sep 17 00:00:00 2001 From: Siegfried Pammer Date: Sat, 16 Mar 2024 18:21:32 +0100 Subject: [PATCH] #3177: Print metadata token of custom attribute in IL output. --- .../Disassembler/ReflectionDisassembler.cs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/ICSharpCode.Decompiler/Disassembler/ReflectionDisassembler.cs b/ICSharpCode.Decompiler/Disassembler/ReflectionDisassembler.cs index b268ff301..3c8d2a98a 100644 --- a/ICSharpCode.Decompiler/Disassembler/ReflectionDisassembler.cs +++ b/ICSharpCode.Decompiler/Disassembler/ReflectionDisassembler.cs @@ -362,7 +362,7 @@ namespace ICSharpCode.Decompiler.Disassembler foreach (var p in methodDefinition.GetGenericParameters()) { - WriteGenericParameterAttributes(module, genericContext, p); + WriteGenericParametersAndAttributes(module, genericContext, p); } foreach (var p in methodDefinition.GetParameters()) { @@ -1134,7 +1134,7 @@ namespace ICSharpCode.Decompiler.Disassembler 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); @@ -1591,7 +1591,7 @@ namespace ICSharpCode.Decompiler.Disassembler 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) @@ -1808,6 +1808,8 @@ namespace ICSharpCode.Decompiler.Disassembler 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)