From 62016caa5953f0957e654a5cd4c2d5bb401bddef Mon Sep 17 00:00:00 2001 From: Siegfried Pammer Date: Sun, 18 Feb 2018 11:55:09 -0300 Subject: [PATCH] implement for standalone method signatures (calli operands) --- .../Disassembler/DomExtensions.cs | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/ICSharpCode.Decompiler/Disassembler/DomExtensions.cs b/ICSharpCode.Decompiler/Disassembler/DomExtensions.cs index 3c2249d48..f0c7e7609 100644 --- a/ICSharpCode.Decompiler/Disassembler/DomExtensions.cs +++ b/ICSharpCode.Decompiler/Disassembler/DomExtensions.cs @@ -158,6 +158,26 @@ namespace ICSharpCode.Decompiler.Disassembler break; case HandleKind.PropertyDefinition: case HandleKind.EventDefinition: + throw new NotSupportedException(); + case HandleKind.StandaloneSignature: + var standaloneSig = metadata.GetStandaloneSignature((StandaloneSignatureHandle)entity.Handle); + switch (standaloneSig.GetKind()) { + case StandaloneSignatureKind.Method: + var methodSig = standaloneSig.DecodeMethodSignature(new DisassemblerSignatureProvider(entity.Module, output), genericContext); + methodSig.ReturnType(ILNameSyntax.SignatureNoNamedTypeParameters); + output.Write('('); + for (int i = 0; i < methodSig.ParameterTypes.Length; i++) { + if (i > 0) + output.Write(", "); + methodSig.ParameterTypes[i](ILNameSyntax.SignatureNoNamedTypeParameters); + } + output.Write(')'); + break; + case StandaloneSignatureKind.LocalVariables: + default: + throw new NotSupportedException(); + } + break; default: throw new NotSupportedException(); }