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,