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.

LocalsFromInnerCP.java 4.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. import org.aspectj.testing.*;
  2. /** @testcase PUREJAVA PR#739 final local variables can be accessed from inner class */
  3. public class LocalsFromInnerCP {
  4. public static void main (String[] args) {
  5. // static init
  6. LocalsFromInnerCP.registerAll();
  7. LocalsFromInnerCP me = new LocalsFromInnerCP();
  8. me = new LocalsFromInnerCP(1);
  9. me.f();
  10. LocalsFromInnerCP.sf();
  11. me.f(1);
  12. LocalsFromInnerCP.sf(1);
  13. me.m();
  14. me.m(1);
  15. me.new m().f();
  16. me.new m().f(1);
  17. Tester.check(globali == 11, "globali: " + globali);
  18. Tester.checkAllEvents();
  19. }
  20. void f() {
  21. final int i = 1;
  22. new Runnable() {
  23. public void run() { signal("LocalsFromInnerCP.f().Runnable.run()", i); }
  24. }.run();
  25. }
  26. static void sf() {
  27. final int i = 1;
  28. new Runnable() {
  29. public void run() { signal("LocalsFromInnerCP.sf().Runnable.run()", i); }
  30. }.run();
  31. }
  32. void f(final int i) {
  33. new Runnable() {
  34. public void run() { signal("LocalsFromInnerCP.f(int).Runnable.run()", i); }
  35. }.run();
  36. }
  37. static void sf(final int i) {
  38. new Runnable() {
  39. public void run() { signal("LocalsFromInnerCP.sf(int).Runnable.run()", i); }
  40. }.run();
  41. }
  42. static {
  43. final int i = 1;
  44. new Runnable() {
  45. public void run() { signal("LocalsFromInnerCP.<clinit>.Runnable.run()", i); }
  46. }.run();
  47. }
  48. void m(final int i) {
  49. class m {
  50. void f() {
  51. new Runnable() {
  52. public void run() { signal("LocalsFromInnerCP.m(int).m.f().Runnable.run()", i); }
  53. }.run();
  54. }
  55. }
  56. new m().f();
  57. }
  58. void m() {
  59. final int i = 1;
  60. class m {
  61. void f() {
  62. new Runnable() {
  63. public void run() { signal("LocalsFromInnerCP.m().m.f().Runnable.run()", i); }
  64. }.run();
  65. }
  66. }
  67. new m().f();
  68. }
  69. class m {
  70. void f() {
  71. final int i = 1;
  72. new Runnable() {
  73. public void run() { signal("LocalsFromInnerCP.m.f().Runnable.run()", i); }
  74. }.run();
  75. }
  76. void f(final int i) {
  77. new Runnable() {
  78. public void run() { signal("LocalsFromInnerCP.m.f(int).Runnable.run()", i); }
  79. }.run();
  80. }
  81. }
  82. LocalsFromInnerCP() {
  83. final int i = 1;
  84. new Runnable() {
  85. public void run() { signal("LocalsFromInnerCP.LocalsFromInnerCP().Runnable.run()", i); }
  86. }.run();
  87. }
  88. LocalsFromInnerCP(final int i) {
  89. new Runnable() {
  90. public void run() { signal("LocalsFromInnerCP.LocalsFromInnerCP(int).Runnable.run()", i); }
  91. }.run();
  92. }
  93. //----------------------------------------------------------
  94. // sed -n '/"/p' pureJava/LocalsFromInnerCP.java
  95. // | sed 's|.*"\(.*\)".*| register("\1");|'
  96. // >> pureJava/LocalsFromInnerCP.java
  97. static void registerAll() {
  98. register("LocalsFromInnerCP.f().Runnable.run()");
  99. register("LocalsFromInnerCP.sf().Runnable.run()");
  100. register("LocalsFromInnerCP.f(int).Runnable.run()");
  101. register("LocalsFromInnerCP.sf(int).Runnable.run()");
  102. register("LocalsFromInnerCP.<clinit>.Runnable.run()");
  103. register("LocalsFromInnerCP.m(int).m.f().Runnable.run()");
  104. register("LocalsFromInnerCP.m().m.f().Runnable.run()");
  105. register("LocalsFromInnerCP.m.f().Runnable.run()");
  106. register("LocalsFromInnerCP.m.f(int).Runnable.run()");
  107. register("LocalsFromInnerCP.LocalsFromInnerCP().Runnable.run()");
  108. register("LocalsFromInnerCP.LocalsFromInnerCP(int).Runnable.run()");
  109. }
  110. static void register(String s) {
  111. Tester.expectEvent(s);
  112. }
  113. static int globali;
  114. static void signal(String s, int i) {
  115. Tester.event(s);
  116. Tester.check(i == 1, "1 != i=" + i + " for " + s);
  117. globali++;
  118. }
  119. }