Browse Source

Add support for privatescope. Fixes #186

pull/196/head
Kevin Cathcart 14 years ago
parent
commit
20f9a624f2
  1. 5
      ICSharpCode.Decompiler/Disassembler/DisassemblerHelpers.cs
  2. 7
      ICSharpCode.Decompiler/Disassembler/ReflectionDisassembler.cs

5
ICSharpCode.Decompiler/Disassembler/DisassemblerHelpers.cs

@ -122,7 +122,12 @@ namespace ICSharpCode.Decompiler.Disassembler @@ -122,7 +122,12 @@ namespace ICSharpCode.Decompiler.Disassembler
method.DeclaringType.WriteTo(writer, ILNameSyntax.TypeName);
writer.Write("::");
}
MethodDefinition md = method as MethodDefinition;
if (md != null && md.IsCompilerControlled) {
writer.WriteReference(Escape(method.Name + "$PST" + method.MetadataToken.ToInt32().ToString("X8")), method);
} else {
writer.WriteReference(Escape(method.Name), method);
}
GenericInstanceMethod gim = method as GenericInstanceMethod;
if (gim != null) {
writer.Write('<');

7
ICSharpCode.Decompiler/Disassembler/ReflectionDisassembler.cs

@ -113,6 +113,7 @@ namespace ICSharpCode.Decompiler.Disassembler @@ -113,6 +113,7 @@ namespace ICSharpCode.Decompiler.Disassembler
//emit flags
WriteEnum(method.Attributes & MethodAttributes.MemberAccessMask, methodVisibility);
WriteFlags(method.Attributes & ~MethodAttributes.MemberAccessMask, methodAttributeFlags);
if(method.IsCompilerControlled) output.Write("privatescope ");
if ((method.Attributes & MethodAttributes.PInvokeImpl) == MethodAttributes.PInvokeImpl) {
output.Write("pinvokeimpl");
@ -170,7 +171,13 @@ namespace ICSharpCode.Decompiler.Disassembler @@ -170,7 +171,13 @@ namespace ICSharpCode.Decompiler.Disassembler
if (method.MethodReturnType.HasMarshalInfo) {
WriteMarshalInfo(method.MethodReturnType.MarshalInfo);
}
if (method.IsCompilerControlled) {
output.Write(DisassemblerHelpers.Escape(method.Name + "$PST" + method.MetadataToken.ToInt32().ToString("X8")));
} else {
output.Write(DisassemblerHelpers.Escape(method.Name));
}
WriteTypeParameters(output, method);
//( params )

Loading…
Cancel
Save