Permalink
Browse files

2008-04-25 Mark Probst <mark.probst@gmail.com>

	* generic-interface-methods.2.cs: Test case for generic interface
	methods.

	* Makefile.am: Added test.

svn path=/trunk/mono/; revision=101799
  • Loading branch information...
1 parent efabf7d commit b742ee2cad98129831e1b44e387dcf928283cec1 @schani schani committed Apr 25, 2008
Showing with 51 additions and 1 deletion.
  1. +7 −0 mono/tests/ChangeLog
  2. +4 −1 mono/tests/Makefile.am
  3. +40 −0 mono/tests/generic-interface-methods.2.cs
View
@@ -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
View
@@ -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
@@ -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;
+ }
+}

0 comments on commit b742ee2

Please sign in to comment.