/* Test multiple inheritance and assertions */
proc verifyAncestor( object, ancestor )
{
object = object.parent;
while( object ) {
if( object == ancestor ) break;
object = object.parent;
}
return object;
}
class a {
public var a = 1;
public proc howdy() { say( "Howdy. a = ", a, "\n" ); }
}
class b {
public var b = 2;
public proc pardner() { say( "Pardner. b = ", b, "\n" ); }
}
class c(a,b){}
class a1 {
var a = 1;
public proc howdy() { say( "Howdy. a = ", a, "\n" ); }
}
class b1 {
var b = 2;
public proc pardner() { say( "Pardner. b = ", b, "\n" ); }
}
class c1(a1,b1) {
public proc pardner()
{
a = 3; b = 4;
if( !verifyAncestor( self, a1 ) ) {
say( "Not descended from a1\n" );
return nil;
}
(a1.howdy)();
say( "Note: b really is: ", b, "\n" );
}
}
a a_obj {}
b b_obj {}
c c_obj {}
a1 a1_obj {}
b1 b1_obj {}
c1 c1_obj {}
proc main()
{
a_obj.howdy();
b_obj.pardner();
c_obj.howdy();
c_obj.pardner();
a1_obj.howdy();
b1_obj.pardner();
c1_obj.howdy();
c1_obj.pardner();
c1.pardner();
}