62 import jdk.internal.org.objectweb.asm.Attribute;
63 import jdk.internal.org.objectweb.asm.FieldVisitor;
64 import jdk.internal.org.objectweb.asm.Opcodes;
65 import jdk.internal.org.objectweb.asm.TypePath;
66
67 /**
68 * A {@link FieldVisitor} that prints the fields it visits with a
69 * {@link Printer}.
70 *
71 * @author Eric Bruneton
72 */
73 public final class TraceFieldVisitor extends FieldVisitor {
74
75 public final Printer p;
76
77 public TraceFieldVisitor(final Printer p) {
78 this(null, p);
79 }
80
81 public TraceFieldVisitor(final FieldVisitor fv, final Printer p) {
82 super(Opcodes.ASM5, fv);
83 this.p = p;
84 }
85
86 @Override
87 public AnnotationVisitor visitAnnotation(final String desc,
88 final boolean visible) {
89 Printer p = this.p.visitFieldAnnotation(desc, visible);
90 AnnotationVisitor av = fv == null ? null : fv.visitAnnotation(desc,
91 visible);
92 return new TraceAnnotationVisitor(av, p);
93 }
94
95 @Override
96 public AnnotationVisitor visitTypeAnnotation(int typeRef,
97 TypePath typePath, String desc, boolean visible) {
98 Printer p = this.p.visitFieldTypeAnnotation(typeRef, typePath, desc,
99 visible);
100 AnnotationVisitor av = fv == null ? null : fv.visitTypeAnnotation(
101 typeRef, typePath, desc, visible);
102 return new TraceAnnotationVisitor(av, p);
|
62 import jdk.internal.org.objectweb.asm.Attribute;
63 import jdk.internal.org.objectweb.asm.FieldVisitor;
64 import jdk.internal.org.objectweb.asm.Opcodes;
65 import jdk.internal.org.objectweb.asm.TypePath;
66
67 /**
68 * A {@link FieldVisitor} that prints the fields it visits with a
69 * {@link Printer}.
70 *
71 * @author Eric Bruneton
72 */
73 public final class TraceFieldVisitor extends FieldVisitor {
74
75 public final Printer p;
76
77 public TraceFieldVisitor(final Printer p) {
78 this(null, p);
79 }
80
81 public TraceFieldVisitor(final FieldVisitor fv, final Printer p) {
82 super(Opcodes.ASM6, fv);
83 this.p = p;
84 }
85
86 @Override
87 public AnnotationVisitor visitAnnotation(final String desc,
88 final boolean visible) {
89 Printer p = this.p.visitFieldAnnotation(desc, visible);
90 AnnotationVisitor av = fv == null ? null : fv.visitAnnotation(desc,
91 visible);
92 return new TraceAnnotationVisitor(av, p);
93 }
94
95 @Override
96 public AnnotationVisitor visitTypeAnnotation(int typeRef,
97 TypePath typePath, String desc, boolean visible) {
98 Printer p = this.p.visitFieldTypeAnnotation(typeRef, typePath, desc,
99 visible);
100 AnnotationVisitor av = fv == null ? null : fv.visitTypeAnnotation(
101 typeRef, typePath, desc, visible);
102 return new TraceAnnotationVisitor(av, p);
|