You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

MisplacedThisInAnnonymousInnerClasses.java 2.1KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import org.aspectj.testing.Tester;
  2. import org.aspectj.testing.Tester;
  3. /*
  4. * Calls to methods declared in outer annonymous classes
  5. * are being qualified with this when they shouldn't.
  6. */
  7. public class MisplacedThisInAnnonymousInnerClasses {
  8. public static void main(String[] args) {
  9. new MisplacedThisInAnnonymousInnerClasses().realMain(args);
  10. }
  11. public void realMain(String[] args) {
  12. Tester.expectEvent("run0");
  13. Tester.expectEvent("run1");
  14. Tester.expectEvent("run2");
  15. Tester.expectEvent("run3");
  16. Tester.expectEvent("outer0");
  17. Tester.expectEvent("outer1");
  18. Tester.expectEvent("outer2");
  19. new Runnable() {
  20. public void outer(int i) { Tester.event("outer"+i); }
  21. public void run() {
  22. Tester.event("run0");
  23. new Runnable() {
  24. public void run() {
  25. Tester.event("run1");
  26. // shouldn't become this.outer(0)
  27. outer(0);
  28. new Runnable() {
  29. public void run() {
  30. Tester.event("run2");
  31. // shouldn't become this.outer(1)
  32. outer(1);
  33. new Runnable() {
  34. public void run() {
  35. Tester.event("run3");
  36. // shouldn't become
  37. // this.outer(2)
  38. outer(2);
  39. }
  40. }.run();
  41. }
  42. }.run();
  43. }
  44. }.run();
  45. }
  46. }.run();
  47. Tester.checkAllEvents();
  48. }
  49. }