+2008-04-25 Mark Probst <mark.probst@gmail.com>
+
+ * generic-interface-methods.2.cs: Test case for generic interface
+ methods.
+
+ * Makefile.am: Added test.
+
2008-04-15 Raja R Harinath <harinath@hurrynot.org>
* Makefile.am (generic-box.2.exe, generic-unbox.2.exe): Create in
generic-delegate.2.cs \
generic-sizeof.2.cs \
generic-virtual.2.cs \
+ generic-interface-methods.2.cs \
recursive-generics.2.cs \
bug-80392.2.cs \
dynamic-method-access.2.cs \
generic-ldobj.2.exe generic-mkrefany.2.exe \
generic-ldtoken.2.exe \
generic-ldtoken-method.2.exe generic-ldtoken-field.2.exe \
- generic-virtual.2.exe generic-tailcall.2.exe
+ generic-virtual.2.exe generic-tailcall.2.exe \
+ generic-interface-methods.2.exe
$(RUNTIME) -O=gshared,-inline generics-sharing.2.exe
$(RUNTIME) -O=gshared,-inline shared-generic-methods.2.exe
$(RUNTIME) -O=gshared,-inline shared-generic-synchronized.2.exe
$(RUNTIME) -O=gshared,-inline generic-ldtoken-field.2.exe
$(RUNTIME) -O=gshared,-inline generic-virtual.2.exe
$(RUNTIME) -O=gshared,-inline generic-tailcall.2.exe
+ $(RUNTIME) -O=gshared,-inline generic-interface-methods.2.exe
EXTRA_DIST += async-exceptions.cs
async-exceptions.exe : async-exceptions.cs
--- /dev/null
+using System.Collections.Generic;
+
+public class ClassA {};
+
+public interface IGen<T> {
+ Dictionary<T,S> makeDict<S> ();
+}
+
+public class Gen<T> : IGen<T> {
+ public Dictionary<T,S> makeDict<S> () {
+ return new Dictionary <T,S> ();
+ }
+}
+
+public class Gen2<T,S> {
+ public Dictionary<T,S> makeDict (IGen<T> igt) {
+ return igt.makeDict<S> ();
+ }
+}
+
+public class main {
+ public static int Main () {
+ Gen<string> gs = new Gen<string> ();
+ Gen2<string,object> g2so = new Gen2<string,object> ();
+ Gen2<string,string> g2ss = new Gen2<string,string> ();
+ Gen2<string,ClassA> g2sa = new Gen2<string,ClassA> ();
+ Gen2<string,int> g2si = new Gen2<string,int> ();
+
+ if (g2so.makeDict (gs).GetType () != typeof (Dictionary<string,object>))
+ return 1;
+ if (g2ss.makeDict (gs).GetType () != typeof (Dictionary<string,string>))
+ return 1;
+ if (g2sa.makeDict (gs).GetType () != typeof (Dictionary<string,ClassA>))
+ return 1;
+ if (g2si.makeDict (gs).GetType () != typeof (Dictionary<string,int>))
+ return 1;
+
+ return 0;
+ }
+}