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.

SuperDisambiguatingType.java 1.7KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. import org.aspectj.testing.*;
  2. /** @testcase PUREJAVA super reference used to disambiguate names of different but compatible types */
  3. public class SuperDisambiguatingType {
  4. public static void main (String[] args) {
  5. new Sub().test();
  6. Tester.checkAllEvents();
  7. }
  8. static {
  9. Tester.expectEvent("test");
  10. }
  11. }
  12. interface I { }
  13. class C { }
  14. class IClass implements I { }
  15. class CClass extends C { }
  16. class Super {
  17. protected C fieldC;
  18. protected I fieldI;
  19. }
  20. class Sub extends Super {
  21. // hiding super
  22. protected CClass fieldC;
  23. protected IClass fieldI;
  24. protected Integer intField;
  25. public void test() {
  26. testC();
  27. testI();
  28. Tester.event("test");
  29. }
  30. public void testC() {
  31. super.fieldC = (C) (fieldC = new CClass());
  32. checkC("super.fieldC = (C) (fieldC = new CClass())");
  33. super.fieldC = (C) fieldC;
  34. checkC("super.fieldC = (C) fieldC");
  35. super.fieldC = fieldC;
  36. checkC("super.fieldC = fieldC");
  37. }
  38. private final void checkC(String label) {
  39. Tester.check(null != fieldC, label + "null != fieldC");
  40. Tester.check(super.fieldC == fieldC, label + "super.fieldC == fieldC");
  41. }
  42. public void testI() {
  43. super.fieldI = (I) (fieldI = new IClass());
  44. checkI("super.fieldI = (I) (fieldI = new IClass())");
  45. super.fieldI = (I) fieldI;
  46. checkI("super.fieldI = (I) fieldI");
  47. super.fieldI = fieldI;
  48. checkI("super.fieldI = fieldI");
  49. }
  50. private final void checkI(String label) {
  51. Tester.check(null != fieldI, label + "null != fieldI");
  52. Tester.check(super.fieldI == fieldI, label + "super.fieldI == fieldI");
  53. }
  54. }