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.

123456789101112131415161718192021222324252627282930313233343536
  1. import org.aspectj.testing.*;
  2. /** @testcase PR#685 subaspect method declaration on superaspect inner interface (access) */
  3. public class InnerInterfaceAccess {
  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. private Object privateField = new Object();
  22. Object getField() {
  23. return privateField; // bad CE "can't bind name"
  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. }