import org.aspectj.testing.Tester;

/** @testcase PR#573 pertarget stack overflow getting name of anonymous class */
public class PR573_1 { 
    static public void main(String[] params) {
        final Object o1 = new Object();
        final Object o = new Object() {
            public void m() {
                o1.toString(); 
            }};
        Tester.expectEvent("A.init0");
        Tester.check(null != o, "null != o");
        o.toString(); // no exceptions
        Tester.check(1 == A.num, "1 == A.num: " + A.num);
        Tester.checkAllEvents();
    }
}
// different stack overflow when using Object, not Interface
aspect A pertarget(target(Object) && !target(A)) {  // was a warning in 1.0 
    public static int num;
    A(){ Tester.event("A.init" + num++); }
}