Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/mcs/ilasm
diff options
context:
space:
mode:
authorRodrigo Kumpera <kumpera@gmail.com>2007-10-09 16:49:55 +0400
committerRodrigo Kumpera <kumpera@gmail.com>2007-10-09 16:49:55 +0400
commitc52d5cb2afdd97732813175915f035622a7c1b9f (patch)
tree1e49a9df0fad1036a570ec0ec28484962fc28d2f /mcs/ilasm
parentb5754253fcac6c18612705d1e4a35fecf7d3e7c9 (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/ChangeLog6
-rw-r--r--mcs/ilasm/codegen/MethodPointerTypeRef.cs26
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 (),