[Mono-bugs] [Bug 68888][Nor] Changed - HEAD regression when reflecting on a private interface

bugzilla-daemon@bugzilla.ximian.com bugzilla-daemon@bugzilla.ximian.com
Mon, 1 Nov 2004 22:32:36 -0500 (EST)


Please do not reply to this email- if you want to comment on the bug, go to the
URL shown below and enter your comments there.

Changed by miguel@ximian.com.

http://bugzilla.ximian.com/show_bug.cgi?id=68888

--- shadow/68888	2004-11-01 19:32:57.000000000 -0500
+++ shadow/68888.tmp.29487	2004-11-01 22:32:36.000000000 -0500
@@ -90,6 +90,65 @@
 This is not a runtime bug, the method name is generated by mcs, and
 newer mcs versions seem to call it 'IBuiltInPermission.GetTokenIndex',
 omitting the namespace.
 
 ------- Additional Comments From sebastien@ximian.com  2004-11-01 19:32 -------
 then I guess I better move this into MCS...
+
+------- Additional Comments From miguel@ximian.com  2004-11-01 22:32 -------
+This was caused by this patch:
+
+-2004-09-10  Martin Baulig  <martin@ximian.com> 
+
+	Backported my MemberName changes from GMCS into MCS.
+
+The change is using `MemberName.GetFullName', which does not
+return a fully qualified name, which means that the compiler
+is generating invalid method names, the following program
+can be used to see the problem:
+
+using A;
+
+namespace A {
+	interface B {
+		void C ();
+	}
+}
+
+
+class D : B {
+	void B.C ()
+	{
+	}
+
+	static void Main ()
+	{
+	}
+}
+
+Compile, and then run:
+
+monodis --method re.exe | grep C
+The correct output should be:
+
+3: instance default void A.B.C ()  (param: 1)
+
+Today we output:
+
+3: instance default void B.C ()  (param: 1)
+
+The problem might be related to this piece of code:
+
+-#if FIXME
+                                // Compute the full name that we need
+to export.
+                                if (InterfaceType.FullName !=
+ExplicitInterfaceName) {
+                                        ExplicitInterfaceName =
+InterfaceType.FullName;
+                                        UpdateMemberName ();
+                                }
+-#endif
+
+
+
+