2005-01-31 Zoltan Varga <vargaz@freemail.hu>
[mono.git] / mcs / tests / test-28.cs
index 309ca3513626f25799de6213df55506962282635..ee1c7e5675745e113c0d702ab813a31f6f1e914c 100644 (file)
@@ -1,3 +1,22 @@
+using System.Collections;
+abstract class A {
+        protected abstract int this [int a] { get; }
+
+       public int EmulateIndexer (int a)
+       {
+               return this [a];
+       }
+}
+
+class B : A {
+       protected override int this [int a] { get { return a;}  }
+
+       public int M ()
+       {
+               return this [0];
+       }
+       
+}
 class X {
        int v1, v2;
        
@@ -20,16 +39,26 @@ class X {
        static int Main ()
        {
                X x = new X ();
-               int b;
 
-               x [1] = x [0] = 1;
+               x [0] = 1;
                if (x.v1 != 1)
                        return 1;
 
                if (x [0] != 1)
                        return 2;
 
-               return 0;
-               
+               B bb = new B ();
+
+               if (bb.EmulateIndexer (10) != 10)
+                       return 3;
+
+               //
+               // This tests that we properly set the return type for the setter
+               // use pattern in the following indexer (see bug 36156)
+               Hashtable a = new Hashtable ();
+               int b = (int) (a [0] = 1);
+               if (b != 1)
+                       return 4;
+               return new B ().M ();
        }
 }