--- /dev/null
+//
+// This test checks if we implement all the interfaces inherited
+//
+
+interface IA {
+ void A ();
+}
+
+interface IB : IA {
+ void B ();
+}
+
+interface IC : IA, IB {
+ void C ();
+}
+
+interface ID : IC {
+}
+
+class AA : IC {
+ bool a, b, c;
+ public void A () { a = true; }
+ public void B () { b = true; }
+ public void C () { c = true; }
+
+ public bool OK {
+ get {
+ return a && b && c;
+ }
+ }
+}
+
+class BB : ID{
+ bool a, b, c;
+ public void A () { a = true; System.Console.WriteLine ("A"); }
+ public void B () { b = true; }
+ public void C () { c = true; }
+
+ public bool OK {
+ get {
+ return a && b && c;
+ }
+ }
+}
+
+class T: IB {
+ public void A () {}
+ public void B () {}
+
+ static int Main() {
+
+ BB bb = new BB ();
+ bb.A ();
+ bb.B ();
+ bb.C ();
+
+ if (!bb.OK)
+ return 1;
+
+ AA aa = new AA ();
+ aa.A ();
+ aa.B ();
+ aa.C ();
+ if (!aa.OK)
+ return 2;
+
+ return 0;
+ }
+}