src/share/classes/com/sun/tools/javac/processing/JavacProcessingEnvironment.java

Print this page

        

*** 34,47 **** 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.util.*; import javax.tools.DiagnosticListener; import javax.tools.JavaFileManager; import javax.tools.JavaFileObject; import javax.tools.StandardJavaFileManager; --- 34,44 ---- import java.util.*; import java.util.regex.*; import javax.annotation.processing.*; import javax.lang.model.SourceVersion; ! 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;
*** 760,775 **** // Don't scan enclosed elements of a package return p; } @Override ! public Set<TypeElement> scan(Element e, Set<TypeElement> p) { for (AnnotationMirror annotationMirror : elements.getAllAnnotationMirrors(e) ) { Element e2 = annotationMirror.getAnnotationType().asElement(); p.add((TypeElement) e2); } return super.scan(e, p); } } private boolean callProcessor(Processor proc, --- 757,790 ---- // Don't scan enclosed elements of a package return p; } @Override ! 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,