Browse Source

Fix WriteParameterReference

pull/1198/head
Siegfried Pammer 8 years ago
parent
commit
10ebe3e00e
  1. 14
      ICSharpCode.Decompiler/Disassembler/DisassemblerHelpers.cs

14
ICSharpCode.Decompiler/Disassembler/DisassemblerHelpers.cs

@ -133,13 +133,17 @@ namespace ICSharpCode.Decompiler.Disassembler
{ {
var metadata = method.Module.GetMetadataReader(); var metadata = method.Module.GetMetadataReader();
var methodDefinition = metadata.GetMethodDefinition(method.Handle); var methodDefinition = metadata.GetMethodDefinition(method.Handle);
var signatureHeader = methodDefinition.DecodeSignature(new FullTypeNameSignatureDecoder(metadata), default(Unit)).Header; var signature = methodDefinition.DecodeSignature(new FullTypeNameSignatureDecoder(metadata), default(Unit));
int index = signatureHeader.IsInstance && !signatureHeader.HasExplicitThis ? sequence - 1 : sequence; var parameters = methodDefinition.GetParameters().Select(p => metadata.GetParameter(p)).ToArray();
var parameters = methodDefinition.GetParameters(); var signatureHeader = signature.Header;
if (index < 0 || index >= parameters.Count) { int index = sequence;
if (signatureHeader.IsInstance && signature.ParameterTypes.Length == parameters.Length) {
index--;
}
if (index < 0 || index >= parameters.Length) {
writer.Write(sequence.ToString()); writer.Write(sequence.ToString());
} else { } else {
var param = metadata.GetParameter(parameters.ElementAt(index)); var param = parameters[index];
if (param.Name.IsNil) { if (param.Name.IsNil) {
writer.Write(sequence.ToString()); writer.Write(sequence.ToString());
} else { } else {

Loading…
Cancel
Save