36 import javax.tools.JavaFileObject; |
36 import javax.tools.JavaFileObject; |
37 import static javax.lang.model.util.ElementFilter.methodsIn; |
37 import static javax.lang.model.util.ElementFilter.methodsIn; |
38 |
38 |
39 import com.sun.tools.javac.code.*; |
39 import com.sun.tools.javac.code.*; |
40 import com.sun.tools.javac.code.Symbol.*; |
40 import com.sun.tools.javac.code.Symbol.*; |
41 import com.sun.tools.javac.code.TypeTags; |
41 import com.sun.tools.javac.code.TypeTag; |
42 import com.sun.tools.javac.comp.AttrContext; |
42 import com.sun.tools.javac.comp.AttrContext; |
43 import com.sun.tools.javac.comp.Enter; |
43 import com.sun.tools.javac.comp.Enter; |
44 import com.sun.tools.javac.comp.Env; |
44 import com.sun.tools.javac.comp.Env; |
45 import com.sun.tools.javac.main.JavaCompiler; |
45 import com.sun.tools.javac.main.JavaCompiler; |
46 import com.sun.tools.javac.processing.PrintingProcessor; |
46 import com.sun.tools.javac.processing.PrintingProcessor; |
48 import com.sun.tools.javac.tree.JCTree.*; |
48 import com.sun.tools.javac.tree.JCTree.*; |
49 import com.sun.tools.javac.tree.TreeInfo; |
49 import com.sun.tools.javac.tree.TreeInfo; |
50 import com.sun.tools.javac.tree.TreeScanner; |
50 import com.sun.tools.javac.tree.TreeScanner; |
51 import com.sun.tools.javac.util.*; |
51 import com.sun.tools.javac.util.*; |
52 import com.sun.tools.javac.util.Name; |
52 import com.sun.tools.javac.util.Name; |
|
53 import static com.sun.tools.javac.code.TypeTag.CLASS; |
53 import static com.sun.tools.javac.tree.JCTree.Tag.*; |
54 import static com.sun.tools.javac.tree.JCTree.Tag.*; |
54 |
55 |
55 /** |
56 /** |
56 * Utility methods for operating on program elements. |
57 * Utility methods for operating on program elements. |
57 * |
58 * |
122 while (annotated.name != annotated.name.table.names.java_lang_Object) { |
123 while (annotated.name != annotated.name.table.names.java_lang_Object) { |
123 result = getAnnotation((Symbol)annotated, annoType); |
124 result = getAnnotation((Symbol)annotated, annoType); |
124 if (result != null || !inherited) |
125 if (result != null || !inherited) |
125 break; |
126 break; |
126 Type sup = annotated.getSuperclass(); |
127 Type sup = annotated.getSuperclass(); |
127 if (sup.tag != TypeTags.CLASS || sup.isErroneous()) |
128 if (!sup.hasTag(CLASS) || sup.isErroneous()) |
128 break; |
129 break; |
129 annotated = (ClassSymbol) sup.tsym; |
130 annotated = (ClassSymbol) sup.tsym; |
130 } |
131 } |
131 return result; |
132 return result; |
132 } |
133 } |
442 public List<Attribute.Compound> getAllAnnotationMirrors(Element e) { |
443 public List<Attribute.Compound> getAllAnnotationMirrors(Element e) { |
443 Symbol sym = cast(Symbol.class, e); |
444 Symbol sym = cast(Symbol.class, e); |
444 List<Attribute.Compound> annos = sym.getAnnotationMirrors(); |
445 List<Attribute.Compound> annos = sym.getAnnotationMirrors(); |
445 while (sym.getKind() == ElementKind.CLASS) { |
446 while (sym.getKind() == ElementKind.CLASS) { |
446 Type sup = ((ClassSymbol) sym).getSuperclass(); |
447 Type sup = ((ClassSymbol) sym).getSuperclass(); |
447 if (sup.tag != TypeTags.CLASS || sup.isErroneous() || |
448 if (!sup.hasTag(CLASS) || sup.isErroneous() || |
448 sup.tsym == syms.objectType.tsym) { |
449 sup.tsym == syms.objectType.tsym) { |
449 break; |
450 break; |
450 } |
451 } |
451 sym = sup.tsym; |
452 sym = sup.tsym; |
452 List<Attribute.Compound> oldAnnos = annos; |
453 List<Attribute.Compound> oldAnnos = annos; |