object prev; void create() { prev = previous_object(); } nomask void i_am_bad() { } void do_tests() { object ob; #ifndef __NO_SHADOWS__ ASSERT(catch(shadow(this_object()))); ASSERT(catch(shadow(master()))); new(__DIR__ "badshad", 1); ASSERT(shadow(this_object(), 0) == 0); ASSERT((object)this_object()->foo() == this_object()); ob = new(__DIR__ "goodshad", 1); ASSERT(shadow(this_object(), 0) == ob); ASSERT((object)this_object()->foo() == ob); ASSERT((object)new(__FILE__)->bar() == ob); ASSERT(catch(shadow(ob))); ASSERT(catch(shadow(new(__FILE__)))); #endif } object foo() { printf("%O\n", file_name()); return this_object(); } object bar() { return (object)prev->foo(); }