diff options
author | Rodrigo Kumpera <kumpera@gmail.com> | 2007-10-09 16:49:55 +0400 |
---|---|---|
committer | Rodrigo Kumpera <kumpera@gmail.com> | 2007-10-09 16:49:55 +0400 |
commit | c52d5cb2afdd97732813175915f035622a7c1b9f (patch) | |
tree | 1e49a9df0fad1036a570ec0ec28484962fc28d2f /mcs/ilasm | |
parent | b5754253fcac6c18612705d1e4a35fecf7d3e7c9 (diff) |
2007-10-09 Rodrigo Kumpera <rkumpera@novell.com>
* MethodPointerTypeRef.cs (.ctor): generate
full name of the method pointer. This is required
to alow overloading with method pointers.
svn path=/trunk/mcs/; revision=87160
Diffstat (limited to 'mcs/ilasm')
-rw-r--r-- | mcs/ilasm/codegen/ChangeLog | 6 | ||||
-rw-r--r-- | mcs/ilasm/codegen/MethodPointerTypeRef.cs | 26 |
2 files changed, 31 insertions, 1 deletions
diff --git a/mcs/ilasm/codegen/ChangeLog b/mcs/ilasm/codegen/ChangeLog index 8ade0a3960c..f3de34daf0b 100644 --- a/mcs/ilasm/codegen/ChangeLog +++ b/mcs/ilasm/codegen/ChangeLog @@ -1,3 +1,9 @@ +2007-10-09 Rodrigo Kumpera <rkumpera@novell.com> + + * MethodPointerTypeRef.cs (.ctor): generate + full name of the method pointer. This is required + to alow overloading with method pointers. + 2007-07-18 Jb Evain <jbevain@novell.com> * InstrTable.cs: add brzero alias. diff --git a/mcs/ilasm/codegen/MethodPointerTypeRef.cs b/mcs/ilasm/codegen/MethodPointerTypeRef.cs index 2fd74f21d0d..689a355e5a1 100644 --- a/mcs/ilasm/codegen/MethodPointerTypeRef.cs +++ b/mcs/ilasm/codegen/MethodPointerTypeRef.cs @@ -9,6 +9,7 @@ using System; +using System.Text; using System.Collections; namespace Mono.ILASM { @@ -32,10 +33,33 @@ namespace Mono.ILASM { this.param_list = param_list; // We just need these to not break the interface - //full_name = String.Empty; + full_name = BuildTypeName (); //sig_mod = String.Empty; } + private String BuildTypeName () + { + StringBuilder builder = new StringBuilder (); + builder.Append ("method "); + if (callconv != PEAPI.CallConv.Default) { + builder.Append (callconv.ToString ()); + builder.Append (' '); + } + builder.Append (ret.FullName); + builder.Append ("*("); + if (param_list != null) { + bool first = true; + foreach (ParamDef paramdef in param_list) { + if (!first) + builder.Append (','); + builder.Append (paramdef.TypeName); + first = false; + } + } + builder.Append (')'); + return builder.ToString (); + } + public override BaseTypeRef Clone () { return new MethodPointerTypeRef (callconv, ret, (ArrayList) param_list.Clone (), |