Don't copy the HTML/Java synthetic fields - they will be generated at method visitEnd time. Eliminates class format errors after incremental compilations.
1.1 --- a/boot/src/main/java/org/netbeans/html/boot/impl/FnUtils.java Thu Nov 05 23:53:34 2015 +0100
1.2 +++ b/boot/src/main/java/org/netbeans/html/boot/impl/FnUtils.java Sat Nov 21 18:05:03 2015 +0100
1.3 @@ -58,6 +58,7 @@
1.4 import org.objectweb.asm.ClassReader;
1.5 import org.objectweb.asm.ClassVisitor;
1.6 import org.objectweb.asm.ClassWriter;
1.7 +import org.objectweb.asm.FieldVisitor;
1.8 import org.objectweb.asm.Label;
1.9 import org.objectweb.asm.MethodVisitor;
1.10 import org.objectweb.asm.Opcodes;
1.11 @@ -169,6 +170,18 @@
1.12 );
1.13 }
1.14
1.15 + @Override
1.16 + public FieldVisitor visitField(int access, String name, String desc, String signature, Object value) {
1.17 + if (name.startsWith("$$fn$$")) {
1.18 + return null;
1.19 + }
1.20 + return superField(access, name, desc, signature, value);
1.21 + }
1.22 +
1.23 + final FieldVisitor superField(int access, String name, String desc, String signature, Object value) {
1.24 + return super.visitField(access, name, desc, signature, value);
1.25 + }
1.26 +
1.27 private final class FindInMethod extends MethodVisitor {
1.28
1.29 private final String name;
1.30 @@ -457,7 +470,7 @@
1.31 }
1.32 return true;
1.33 }
1.34 -
1.35 +
1.36 @Override
1.37 public void visitEnd() {
1.38 super.visitEnd();
1.39 @@ -466,7 +479,7 @@
1.40 // native method
1.41 super.visitMaxs(1, 0);
1.42 }
1.43 - FindInClass.this.visitField(
1.44 + FindInClass.this.superField(
1.45 Opcodes.ACC_PRIVATE | Opcodes.ACC_STATIC,
1.46 "$$fn$$" + name + "_" + found,
1.47 "Lorg/netbeans/html/boot/spi/Fn;",