import org.aspectj.testing.Tester; import org.aspectj.testing.Tester; public class PR584 { public static void main(String[] args) { Tester.expectEvent("foo ok"); Tester.expectEvent("foo test2"); Foo foo = new Foo("foo"); /** @testcase PR#584 constructing inner classes using qualified new expression */ Foo.Test test1 = foo.new Test(); Foo.Test test2 = foo.new Test() { public void foo() { Tester.event(getFoo().baz + " test2"); } }; test1.foo(); test2.foo(); /** @testcase PR#584 constructing static inner classes using new expression */ Foo.StaticTest test3 = new Foo.StaticTest(); Tester.expectEvent("static foo"); test3.staticBaz = "static foo"; test3.staticFoo(); Tester.checkAllEvents(); } } class Foo { public String baz; public Foo(String baz) { this.baz = baz; } public static class StaticTest { static String staticBaz; public void staticFoo() { Tester.event(staticBaz); } } public class Test { public Foo getFoo() { return Foo.this; } public void foo() { Tester.event(baz + " ok"); } } }