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.

QualifiedSuperCall.java 2.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. import org.aspectj.testing.*;
  2. // todo: package-qualified calls
  3. /** PR651 PUREJAVA qualified super method calls */
  4. public class QualifiedSuperCall {
  5. public static void main (String[] args) {
  6. Super s;
  7. s = new Super();
  8. Tester.check(null != s, "new Super()");
  9. s = new Sub();
  10. Tester.check(null != s, "new Sub()");
  11. s = new UnqualifiedSub();
  12. Tester.check(null != s, "new UnqualifiedSub()");
  13. s = new SubSub();
  14. Tester.check(null != s, "new SubSub()");
  15. s = new UnqualifiedSubSub();
  16. Tester.check(null != s, "new UnqualifiedSubSub()");
  17. s = new Mid();
  18. Tester.check(null != s, "new Mid()");
  19. s = new SubMid();
  20. Tester.check(null != s, "new SubMid()");
  21. s = new UnqualifiedSubMid();
  22. Tester.check(null != s, "new UnqualifiedSubMid()");
  23. }
  24. static {
  25. Tester.m("Super.duper=Sub()");
  26. Tester.m("Super.duper=UnqualifiedSub()");
  27. Tester.m("Super.duper=SubSub()");
  28. Tester.m("Super.duper=UnqualifiedSubSub()");
  29. Tester.m("Super.duper=SubMid()");
  30. Tester.m("Mid.duper=SubMid()");
  31. Tester.m("Mid.duper=UnqualifiedSubMid()");
  32. }
  33. }
  34. class Super {
  35. Super() {}
  36. void duper(String caller) {
  37. Tester.event("Super.duper=" + caller);
  38. }
  39. }
  40. class Sub extends Super {
  41. Sub() {
  42. Super.super();
  43. Super.super.duper("Sub()");
  44. }
  45. }
  46. class UnqualifiedSub extends Super {
  47. UnqualifiedSub() {
  48. super();
  49. super.duper("UnqualifiedSub()");
  50. }
  51. }
  52. class SubSub extends Sub {
  53. SubSub() {
  54. Sub.super();
  55. Sub.super.duper("SubSub()");
  56. }
  57. }
  58. class UnqualifiedSubSub extends UnqualifiedSub {
  59. UnqualifiedSubSub() {
  60. super();
  61. super.duper("UnqualifiedSubSub()");
  62. }
  63. }
  64. class Mid extends Super {
  65. Mid() { }
  66. void duper(String caller) {
  67. Tester.event("Mid.duper=" + caller);
  68. }
  69. }
  70. class SubMid extends Mid {
  71. SubMid() {
  72. Mid.super(); // XXX illegal ordering?
  73. Super.super();
  74. Super.super.duper("SubMid()");
  75. Mid.super.duper("SubMid()");
  76. }
  77. }
  78. class UnqualifiedSubMid extends Mid {
  79. UnqualifiedSubMid() {
  80. super();
  81. super.duper("UnqualifiedSubMid()");
  82. }
  83. }