Thanks for your help Peter. I tested the PR and it works for both the asm5.2 and the asm7.2 branches. I also compare the output from the original asm5.0.1 with the new ones (ams5.2-asm7.2) and it was the same.
I also tested using ASM API v6 & v7, the output was the same and I worked without problems my daily projects. I will prepare the PR today. Jose Contreras El jue., 7 nov. 2019 a las 3:58, Peter Hull (<peterhul...@gmail.com>) escribió: > On Wed, 6 Nov 2019 at 22:24, Jose Ch <pepnes...@gmail.com> wrote: > > > > I will test the PR and do as you suggest Pete. > For what it's worth my implementation was a bit different: > private static class CtorDelVisitor extends AnnotationVisitor { > int[] indices; > /** > * Constructs a new {@link AnnotationVisitor}. > * > * @param api the ASM API version implemented by this visitor. Must > be one of {@link > * Opcodes#ASM4}, {@link Opcodes#ASM5}, {@link Opcodes#ASM6} or > {@link Opcodes#ASM7}. > */ > public CtorDelVisitor(int api) { > super(api); > } > @Override > public AnnotationVisitor visitArray(String name) { > if ("delegateParams".equals(name)) { // NOI18N > return new AnnotationVisitor(api) { > List<Integer> list = new ArrayList<>(); > @Override > public void visit(String name, Object value) { > list.add((Integer) value); > } > @Override > public void visitEnd() { > int[] indices = new int[list.size()]; > for (int i = 0; i < indices.length; ++i) { > indices[i] = list.get(i); > } > CtorDelVisitor.this.indices = indices; > } > }; > } else { > return super.visitArray(name); // Not interested > } > } > } > I guess Svata's will be more efficient. > > It's a bit frustrating that the AnnotationNode forces us to visit each > array element in turn when all we need is the complete list, but I think > there's no way around that. Visitor pattern makes my head spin, it always > seems inside-out to me. > > Pete >