langtools/src/share/classes/com/sun/tools/javac/processing/JavacProcessingEnvironment.java
changeset 18669 99572d59c916
parent 17551 03f330c02d97
child 19651 b1aa46cc2198
equal deleted inserted replaced
18668:1f99c1b43ab2 18669:99572d59c916
    34 import java.util.*;
    34 import java.util.*;
    35 import java.util.regex.*;
    35 import java.util.regex.*;
    36 
    36 
    37 import javax.annotation.processing.*;
    37 import javax.annotation.processing.*;
    38 import javax.lang.model.SourceVersion;
    38 import javax.lang.model.SourceVersion;
    39 import javax.lang.model.element.AnnotationMirror;
    39 import javax.lang.model.element.*;
    40 import javax.lang.model.element.Element;
       
    41 import javax.lang.model.element.PackageElement;
       
    42 import javax.lang.model.element.TypeElement;
       
    43 import javax.lang.model.util.*;
    40 import javax.lang.model.util.*;
    44 import javax.tools.DiagnosticListener;
    41 import javax.tools.DiagnosticListener;
    45 import javax.tools.JavaFileManager;
    42 import javax.tools.JavaFileManager;
    46 import javax.tools.JavaFileObject;
    43 import javax.tools.JavaFileObject;
    47 import javax.tools.StandardJavaFileManager;
    44 import javax.tools.StandardJavaFileManager;
   760             // Don't scan enclosed elements of a package
   757             // Don't scan enclosed elements of a package
   761             return p;
   758             return p;
   762         }
   759         }
   763 
   760 
   764         @Override
   761         @Override
   765         public Set<TypeElement> scan(Element e, Set<TypeElement> p) {
   762         public Set<TypeElement> visitType(TypeElement e, Set<TypeElement> p) {
       
   763             // Type parameters are not considered to be enclosed by a type
       
   764             scan(e.getTypeParameters(), p);
       
   765             return scan(e.getEnclosedElements(), p);
       
   766         }
       
   767 
       
   768         @Override
       
   769         public Set<TypeElement> visitExecutable(ExecutableElement e, Set<TypeElement> p) {
       
   770             // Type parameters are not considered to be enclosed by an executable
       
   771             scan(e.getTypeParameters(), p);
       
   772             return scan(e.getEnclosedElements(), p);
       
   773         }
       
   774 
       
   775         void addAnnotations(Element e, Set<TypeElement> p) {
   766             for (AnnotationMirror annotationMirror :
   776             for (AnnotationMirror annotationMirror :
   767                      elements.getAllAnnotationMirrors(e) ) {
   777                      elements.getAllAnnotationMirrors(e) ) {
   768                 Element e2 = annotationMirror.getAnnotationType().asElement();
   778                 Element e2 = annotationMirror.getAnnotationType().asElement();
   769                 p.add((TypeElement) e2);
   779                 p.add((TypeElement) e2);
   770             }
   780             }
       
   781         }
       
   782 
       
   783         @Override
       
   784         public Set<TypeElement> scan(Element e, Set<TypeElement> p) {
       
   785             addAnnotations(e, p);
   771             return super.scan(e, p);
   786             return super.scan(e, p);
   772         }
   787         }
   773     }
   788     }
   774 
   789 
   775     private boolean callProcessor(Processor proc,
   790     private boolean callProcessor(Processor proc,