diff options
Diffstat (limited to 'tests/pureJava/MisplacedThisInAnnonymousInnerClasses.java')
-rw-r--r-- | tests/pureJava/MisplacedThisInAnnonymousInnerClasses.java | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/tests/pureJava/MisplacedThisInAnnonymousInnerClasses.java b/tests/pureJava/MisplacedThisInAnnonymousInnerClasses.java new file mode 100644 index 000000000..f4926eec7 --- /dev/null +++ b/tests/pureJava/MisplacedThisInAnnonymousInnerClasses.java @@ -0,0 +1,53 @@ +import org.aspectj.testing.Tester; +import org.aspectj.testing.Tester; +/* + * Calls to methods declared in outer annonymous classes + * are being qualified with this when they shouldn't. + */ +public class MisplacedThisInAnnonymousInnerClasses { + public static void main(String[] args) { + new MisplacedThisInAnnonymousInnerClasses().realMain(args); + } + public void realMain(String[] args) { + + Tester.expectEvent("run0"); + Tester.expectEvent("run1"); + Tester.expectEvent("run2"); + Tester.expectEvent("run3"); + Tester.expectEvent("outer0"); + Tester.expectEvent("outer1"); + Tester.expectEvent("outer2"); + + new Runnable() { + public void outer(int i) { Tester.event("outer"+i); } + public void run() { + Tester.event("run0"); + new Runnable() { + public void run() { + Tester.event("run1"); + // shouldn't become this.outer(0) + outer(0); + new Runnable() { + public void run() { + Tester.event("run2"); + // shouldn't become this.outer(1) + outer(1); + new Runnable() { + public void run() { + Tester.event("run3"); + // shouldn't become + // this.outer(2) + outer(2); + } + }.run(); + } + }.run(); + } + }.run(); + } + }.run(); + + Tester.checkAllEvents(); + } + +} |