Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

InnerInterfaceNames.java 1.5KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import org.aspectj.testing.*;
  2. /** @testcase PR#685 subaspect method declaration on superaspect inner interface (names) */
  3. public class InnerInterfaceNames {
  4. public static void main (String[] args) {
  5. Object o = new C().getThis();
  6. Tester.check(null != o,
  7. "null != new C().getThis()");
  8. ConcreteAspect cc = ConcreteAspect.aspectOf();
  9. Tester.check(null != cc,
  10. "null != ConcreteAspect.aspectOf()");
  11. Object p = cc.getField();
  12. Tester.check(null != p, "null != cc.getField()");
  13. }
  14. }
  15. class C implements AbstractAspect.InnerInterface {}
  16. abstract aspect AbstractAspect {
  17. /** bug iff interface defined in abstract aspect
  18. * - not outer or subaspect
  19. */
  20. interface InnerInterface {}
  21. public Object publicField = new Object();
  22. Object getField() {
  23. return publicField; // bad CE "no instance available"
  24. }
  25. }
  26. aspect ConcreteAspect extends AbstractAspect {
  27. /** bug iff method declaration on parent inner interface */
  28. public Object InnerInterface.getThis() {
  29. return this; // bug: no instance available
  30. }
  31. }
  32. /*
  33. abstract aspect Composition {
  34. interface Component {}
  35. public Object publicField = new Object();
  36. Object test() {
  37. return publicField; // bad CE "no instance available"
  38. }
  39. }
  40. aspect SampleComposition extends Composition {
  41. public Object Component.getThis() {
  42. return this;
  43. }
  44. }
  45. */