src/share/classes/com/sun/tools/javac/processing/JavacProcessingEnvironment.java
Print this page
@@ -34,14 +34,11 @@
import java.util.*;
import java.util.regex.*;
import javax.annotation.processing.*;
import javax.lang.model.SourceVersion;
-import javax.lang.model.element.AnnotationMirror;
-import javax.lang.model.element.Element;
-import javax.lang.model.element.PackageElement;
-import javax.lang.model.element.TypeElement;
+import javax.lang.model.element.*;
import javax.lang.model.util.*;
import javax.tools.DiagnosticListener;
import javax.tools.JavaFileManager;
import javax.tools.JavaFileObject;
import javax.tools.StandardJavaFileManager;
@@ -758,16 +755,34 @@
// Don't scan enclosed elements of a package
return p;
}
@Override
- public Set<TypeElement> scan(Element e, Set<TypeElement> p) {
+ public Set<TypeElement> visitType(TypeElement e, Set<TypeElement> p) {
+ // Type parameters are not considered to be enclosed by a type
+ scan(e.getTypeParameters(), p);
+ return scan(e.getEnclosedElements(), p);
+ }
+
+ @Override
+ public Set<TypeElement> visitExecutable(ExecutableElement e, Set<TypeElement> p) {
+ // Type parameters are not considered to be enclosed by an executable
+ scan(e.getTypeParameters(), p);
+ return scan(e.getEnclosedElements(), p);
+ }
+
+ void addAnnotations(Element e, Set<TypeElement> p) {
for (AnnotationMirror annotationMirror :
elements.getAllAnnotationMirrors(e) ) {
Element e2 = annotationMirror.getAnnotationType().asElement();
p.add((TypeElement) e2);
}
+ }
+
+ @Override
+ public Set<TypeElement> scan(Element e, Set<TypeElement> p) {
+ addAnnotations(e, p);
return super.scan(e, p);
}
}
private boolean callProcessor(Processor proc,