Hi all,

apologies if this is a FAQ, my mailing list searches did not turn up any 
matches.

I’m experimenting with the @Repeatable annotations of Java 8 on some aspects, 
and apparently AspectJ does not provide any support for @Repeatable, as I get 
an exception at some point. (Below are the details of my setup and the 
offending annotation description.) 

Am I correct that there is no support? Are there any plans to include it?

Thanks in advance!


AspectJ Compiler version: 1.8.3.20140820082000  

Relevant stack trace (cutting out a ton of frames at the bottom as I’m doing 
the experiments in Clojure):

---

ERROR in (test-suite test-annotation-contents) (EclipseSourceType.java:820)
Uncaught exception, not in assertion.
expected: nil
  actual: 
org.aspectj.ajdt.internal.compiler.lookup.EclipseSourceType$MissingImplementationException:
 Please raise an AspectJ bug.  AspectJ does not know how to convert this 
annotation [@Repeatable(MultiRequires.class)]
 at 
org.aspectj.ajdt.internal.compiler.lookup.EclipseSourceType.generateAnnotation 
(EclipseSourceType.java:820)
    
org.aspectj.ajdt.internal.compiler.lookup.EclipseSourceType.convertEclipseAnnotation
 (EclipseSourceType.java:718)
    org.aspectj.ajdt.internal.compiler.lookup.EclipseSourceType.getAnnotations 
(EclipseSourceType.java:698)
    org.aspectj.weaver.ReferenceType.getAnnotations (ReferenceType.java:200)
    sun.reflect.NativeMethodAccessorImpl.invoke0 
(NativeMethodAccessorImpl.java:-2)
    sun.reflect.NativeMethodAccessorImpl.invoke 
(NativeMethodAccessorImpl.java:57)
    sun.reflect.DelegatingMethodAccessorImpl.invoke 
(DelegatingMethodAccessorImpl.java:43)
    java.lang.reflect.Method.invoke (Method.java:606)
    clojure.lang.Reflector.invokeMatchingMethod (Reflector.java:93)
    clojure.lang.Reflector.invokeNoArgInstanceMember (Reflector.java:313)

---

Source code of the annotation:

---
package damp.ekeko.aspectj.annotations;

import java.lang.annotation.ElementType;
import java.lang.annotation.Repeatable;
import java.lang.annotation.Target;

@Target(ElementType.TYPE)
@Repeatable(MultiRequires.class)
public @interface Requires {
                
        String aspect() default "";
        String label() default "";
        
}

---

package damp.ekeko.aspectj.annotations;

import java.lang.annotation.ElementType;
import java.lang.annotation.Target;

@Target(ElementType.TYPE)
public @interface MultiRequires {
        Requires[] value(); 
}

---

---> Save our in-boxes! http://emailcharter.org <---

Johan Fabry   -   http://pleiad.cl/~jfabry
PLEIAD lab  -  Computer Science Department (DCC)  -  University of Chile

_______________________________________________
aspectj-users mailing list
aspectj-users@eclipse.org
To change your delivery options, retrieve your password, or unsubscribe from 
this list, visit
https://dev.eclipse.org/mailman/listinfo/aspectj-users

Reply via email to