1*c87b03e5Sespie // GROUPS vtable
2*c87b03e5Sespie extern "C" int printf (const char *, ...);
3*c87b03e5Sespie 
4*c87b03e5Sespie class A
5*c87b03e5Sespie {
6*c87b03e5Sespie public:
~A()7*c87b03e5Sespie   virtual ~A(){};
type(void)8*c87b03e5Sespie   virtual int type(void)
9*c87b03e5Sespie   {
10*c87b03e5Sespie     return -1;
11*c87b03e5Sespie   }
12*c87b03e5Sespie };
13*c87b03e5Sespie 
14*c87b03e5Sespie class B
15*c87b03e5Sespie {
16*c87b03e5Sespie public:
~B()17*c87b03e5Sespie   virtual ~B(){};
18*c87b03e5Sespie };
19*c87b03e5Sespie 
20*c87b03e5Sespie 
21*c87b03e5Sespie class C0 : public B, public A
22*c87b03e5Sespie {
23*c87b03e5Sespie public:
type(void)24*c87b03e5Sespie   virtual int type(void)
25*c87b03e5Sespie   {
26*c87b03e5Sespie     return 0;
27*c87b03e5Sespie   }
28*c87b03e5Sespie };
29*c87b03e5Sespie 
30*c87b03e5Sespie class C1 : public C0
31*c87b03e5Sespie {
32*c87b03e5Sespie public:
type(void)33*c87b03e5Sespie   virtual int type(void)
34*c87b03e5Sespie   {
35*c87b03e5Sespie     return 1;
36*c87b03e5Sespie   }
37*c87b03e5Sespie };
38*c87b03e5Sespie 
39*c87b03e5Sespie class C2 : public C0
40*c87b03e5Sespie {
41*c87b03e5Sespie public:
type(void)42*c87b03e5Sespie   virtual int type(void)
43*c87b03e5Sespie   {
44*c87b03e5Sespie     return 2;
45*c87b03e5Sespie   }
46*c87b03e5Sespie };
47*c87b03e5Sespie 
main()48*c87b03e5Sespie int main()
49*c87b03e5Sespie {
50*c87b03e5Sespie   C1 *one = new C1;
51*c87b03e5Sespie 
52*c87b03e5Sespie   if (one->type() == 1)
53*c87b03e5Sespie     {
54*c87b03e5Sespie       printf ("PASS\n");
55*c87b03e5Sespie       return 0;
56*c87b03e5Sespie     }
57*c87b03e5Sespie   else
58*c87b03e5Sespie     {
59*c87b03e5Sespie       printf ("FAIL\n");
60*c87b03e5Sespie       return 1;
61*c87b03e5Sespie     }
62*c87b03e5Sespie }
63