|
|
@ -877,20 +877,25 @@ namespace ICSharpCode.Decompiler.Disassembler |
|
|
|
{ |
|
|
|
{ |
|
|
|
int parameterOffset = parameters.Length > signature.ParameterTypes.Length ? 1 : 0; |
|
|
|
int parameterOffset = parameters.Length > signature.ParameterTypes.Length ? 1 : 0; |
|
|
|
for (int i = 0; i < signature.ParameterTypes.Length; i++) { |
|
|
|
for (int i = 0; i < signature.ParameterTypes.Length; i++) { |
|
|
|
var p = metadata.GetParameter(parameters[i + parameterOffset]); |
|
|
|
if (i + parameterOffset < parameters.Length) { |
|
|
|
if ((p.Attributes & ParameterAttributes.In) == ParameterAttributes.In) |
|
|
|
var p = metadata.GetParameter(parameters[i + parameterOffset]); |
|
|
|
output.Write("[in] "); |
|
|
|
if ((p.Attributes & ParameterAttributes.In) == ParameterAttributes.In) |
|
|
|
if ((p.Attributes & ParameterAttributes.Out) == ParameterAttributes.Out) |
|
|
|
output.Write("[in] "); |
|
|
|
output.Write("[out] "); |
|
|
|
if ((p.Attributes & ParameterAttributes.Out) == ParameterAttributes.Out) |
|
|
|
if ((p.Attributes & ParameterAttributes.Optional) == ParameterAttributes.Optional) |
|
|
|
output.Write("[out] "); |
|
|
|
output.Write("[opt] "); |
|
|
|
if ((p.Attributes & ParameterAttributes.Optional) == ParameterAttributes.Optional) |
|
|
|
signature.ParameterTypes[i](ILNameSyntax.Signature); |
|
|
|
output.Write("[opt] "); |
|
|
|
output.Write(' '); |
|
|
|
signature.ParameterTypes[i](ILNameSyntax.Signature); |
|
|
|
var md = p.GetMarshallingDescriptor(); |
|
|
|
output.Write(' '); |
|
|
|
if (!md.IsNil) { |
|
|
|
var md = p.GetMarshallingDescriptor(); |
|
|
|
WriteMarshalInfo(metadata.GetBlobReader(md)); |
|
|
|
if (!md.IsNil) { |
|
|
|
|
|
|
|
WriteMarshalInfo(metadata.GetBlobReader(md)); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
output.WriteDefinition(DisassemblerHelpers.Escape(metadata.GetString(p.Name)), p); |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
signature.ParameterTypes[i](ILNameSyntax.Signature); |
|
|
|
|
|
|
|
output.Write(" ''"); |
|
|
|
} |
|
|
|
} |
|
|
|
output.WriteDefinition(DisassemblerHelpers.Escape(metadata.GetString(p.Name)), p); |
|
|
|
|
|
|
|
if (i < signature.ParameterTypes.Length - 1) |
|
|
|
if (i < signature.ParameterTypes.Length - 1) |
|
|
|
output.Write(','); |
|
|
|
output.Write(','); |
|
|
|
output.WriteLine(); |
|
|
|
output.WriteLine(); |
|
|
|