/* Test multiple inheritance and assertions */
class Aclass {
    public const name = "Aclass";
    public var a = 1;
    public proc Describe() { say( "a = ", a, "\n" ); }
}

class Bclass {
    public const name = "Bclass";
    public var b = 2;
    public proc Describe() { say( "b = ", b, "\n" ); }
}

class ABclass(Aclass,Bclass)
{
    public const name = "ABclass";
}

ABclass ab {}

proc main()
{
    "ab.a = ", ab.a, "\n";
    "ab.b = ", ab.b, "\n";
    ab.Describe();      // Later classes in mult. inher. override earlier ones
    "Aclass = ", Aclass.name, "\n";
    "Bclass = ", Bclass.name, "\n";
    "ABclass = ", ABclass.name, "\n";
     "ABclass.parent = ", ABclass.parent.name, "\n";
     // Neither of these assertions should fire
    assert ab ?= Aclass;
    assert ab ?= ABclass;
}