Browse Source

Disassembler: Fix output of calling convention and flags in standalone method signature

pull/1596/head
Siegfried Pammer 6 years ago
parent
commit
cd8dd7af9f
  1. 16
      ICSharpCode.Decompiler/IL/InstructionOutputExtensions.cs

16
ICSharpCode.Decompiler/IL/InstructionOutputExtensions.cs

@ -319,13 +319,21 @@ namespace ICSharpCode.Decompiler.IL @@ -319,13 +319,21 @@ namespace ICSharpCode.Decompiler.IL
var standaloneSig = metadata.GetStandaloneSignature((StandaloneSignatureHandle)entity);
switch (standaloneSig.GetKind()) {
case StandaloneSignatureKind.Method:
var methodSig = standaloneSig.DecodeMethodSignature(new DisassemblerSignatureProvider(module, output), genericContext);
methodSig.ReturnType(ILNameSyntax.SignatureNoNamedTypeParameters);
methodSignature = standaloneSig.DecodeMethodSignature(new DisassemblerSignatureProvider(module, output), genericContext);
if (methodSignature.Header.HasExplicitThis) {
output.Write("instance explicit ");
} else if (methodSignature.Header.IsInstance) {
output.Write("instance ");
}
if (methodSignature.Header.CallingConvention == SignatureCallingConvention.VarArgs) {
output.Write("vararg ");
}
methodSignature.ReturnType(ILNameSyntax.SignatureNoNamedTypeParameters);
output.Write('(');
for (int i = 0; i < methodSig.ParameterTypes.Length; i++) {
for (int i = 0; i < methodSignature.ParameterTypes.Length; i++) {
if (i > 0)
output.Write(", ");
methodSig.ParameterTypes[i](ILNameSyntax.SignatureNoNamedTypeParameters);
methodSignature.ParameterTypes[i](ILNameSyntax.SignatureNoNamedTypeParameters);
}
output.Write(')');
break;

Loading…
Cancel
Save