2008-04-25 Mark Probst <mark.probst@gmail.com>
authorMark Probst <mark.probst@gmail.com>
Fri, 25 Apr 2008 12:14:36 +0000 (12:14 -0000)
committerMark Probst <mark.probst@gmail.com>
Fri, 25 Apr 2008 12:14:36 +0000 (12:14 -0000)
* generic-interface-methods.2.cs: Test case for generic interface
methods.

* Makefile.am: Added test.

svn path=/trunk/mono/; revision=101799

mono/tests/ChangeLog
mono/tests/Makefile.am
mono/tests/generic-interface-methods.2.cs [new file with mode: 0644]

index a7f6432273babe1c8e61baa6cfb24b8ab2e8af9a..6a08070e55bdce820a9c7ebed98b67bae03d9e09 100644 (file)
@@ -1,3 +1,10 @@
+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
index 5807ff2913fd35bedf9688a12837933c9995e24e..c95377c52a2e539dac2de8d810e6ce87651f0cf8 100644 (file)
@@ -260,6 +260,7 @@ BASE_TEST_CS_SRC=           \
        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      \
@@ -671,7 +672,8 @@ test-generic-sharing : generics-sharing.2.exe shared-generic-methods.2.exe  \
                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
@@ -688,6 +690,7 @@ test-generic-sharing : generics-sharing.2.exe shared-generic-methods.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
diff --git a/mono/tests/generic-interface-methods.2.cs b/mono/tests/generic-interface-methods.2.cs
new file mode 100644 (file)
index 0000000..edcf25c
--- /dev/null
@@ -0,0 +1,40 @@
+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;
+       }
+}