]> source.dussan.org Git - aspectj.git/commitdiff
More fixes for 1.9.2 V1_9_2_RC2
authorAndy Clement <aclement@pivotal.io>
Mon, 1 Oct 2018 23:10:02 +0000 (16:10 -0700)
committerAndy Clement <aclement@pivotal.io>
Mon, 1 Oct 2018 23:10:02 +0000 (16:10 -0700)
- update to more recent JDT to pickup Nestmates fix
- bcel updated for NestMembers/NestHost attributes
- testcases for nestmates

31 files changed:
bcel-builder/src/org/aspectj/apache/bcel/Constants.java
bcel-builder/src/org/aspectj/apache/bcel/classfile/Attribute.java
bcel-builder/src/org/aspectj/apache/bcel/classfile/ClassVisitor.java
bcel-builder/src/org/aspectj/apache/bcel/classfile/NestHost.java [new file with mode: 0644]
bcel-builder/src/org/aspectj/apache/bcel/classfile/NestMembers.java [new file with mode: 0644]
bcel-builder/verifier-src/org/aspectj/apache/bcel/verifier/DescendingVisitor.java
bcel-builder/verifier-src/org/aspectj/apache/bcel/verifier/EmptyClassVisitor.java
lib/asm/asm-6.2.1.renamed.jar [deleted file]
lib/asm/asm-7.0-beta.20181001.jar [new file with mode: 0644]
lib/asm/asm-7.0-beta.renamed.jar [new file with mode: 0644]
lib/asm/build.xml
lib/bcel/bcel-src.zip
lib/bcel/bcel-verifier-src.zip
lib/bcel/bcel-verifier.jar
lib/bcel/bcel.jar
org.aspectj.ajdt.core/testsrc/org/aspectj/tools/ajc/AjcTestCase.java
org.eclipse.jdt.core/jdtcore-for-aspectj-src.zip
org.eclipse.jdt.core/jdtcore-for-aspectj.jar
tests/bugs180/415957/MyAspect.aj
tests/bugs180/415957/MyClass.java
tests/bugs180/415957/Resource.java [new file with mode: 0644]
tests/bugs192/535156/DemoApp.class [new file with mode: 0644]
tests/bugs192/535156/X.class [new file with mode: 0644]
tests/bugs192/nestmates/Outer.java [new file with mode: 0644]
tests/bugs192/nestmates/Outer2$Inner2.class [new file with mode: 0644]
tests/bugs192/nestmates/Outer2.class [new file with mode: 0644]
tests/bugs192/nestmates/Outer2.java [new file with mode: 0644]
tests/bugs192/nestmates/X.class [new file with mode: 0644]
tests/src/org/aspectj/systemtest/ajc192/Ajc192Tests.java
tests/src/org/aspectj/systemtest/ajc192/ajc192.xml
weaver/src/org/aspectj/weaver/bcel/asm/StackMapAdder.java

index 9ef04f4ffb0c6ec322dca2bb805c064fb7ba5101..c75496527bdad0bb528821f34dea070073219e5f 100644 (file)
@@ -651,8 +651,12 @@ public interface Constants {
        public static final byte ATTR_MODULE = 23;
        public static final byte ATTR_MODULE_PACKAGES = 24;
        public static final byte ATTR_MODULE_MAIN_CLASS = 25;
-       
-       public static final short KNOWN_ATTRIBUTES = 26;
+
+       // J11:
+       public static final byte ATTR_NEST_HOST = 26;
+       public static final byte ATTR_NEST_MEMBERS = 27;
+
+       public static final short KNOWN_ATTRIBUTES = 28;
 
        public static final String[] ATTRIBUTE_NAMES = { 
                "SourceFile", "ConstantValue", "Code", "Exceptions", "LineNumberTable", "LocalVariableTable",
@@ -660,7 +664,7 @@ public interface Constants {
                "RuntimeVisibleAnnotations", "RuntimeInvisibleAnnotations", "RuntimeVisibleParameterAnnotations",
                "RuntimeInvisibleParameterAnnotations", "LocalVariableTypeTable", "EnclosingMethod", 
                "AnnotationDefault","BootstrapMethods", "RuntimeVisibleTypeAnnotations", "RuntimeInvisibleTypeAnnotations",
-               "MethodParameters", "Module", "ModulePackages", "ModuleMainClass"
+               "MethodParameters", "Module", "ModulePackages", "ModuleMainClass", "NestHost", "NestMembers"
                };
 
        /**
index edc8d22c915621808f133955be9fc3dfe30a084c..daeb59a38c527aa4dff64f34f7c819c901e41f57 100644 (file)
@@ -173,6 +173,10 @@ public abstract class Attribute implements Cloneable, Node, Serializable {
                        return new ModulePackages(idx, len, file, cpool);
                case Constants.ATTR_MODULE_MAIN_CLASS:
                        return new ModuleMainClass(idx, len, file, cpool);
+               case Constants.ATTR_NEST_HOST:
+                       return new NestHost(idx, len, file, cpool);
+               case Constants.ATTR_NEST_MEMBERS:
+                       return new NestMembers(idx, len, file, cpool);
                default:
                        throw new IllegalStateException();
                }
@@ -203,6 +207,7 @@ public abstract class Attribute implements Cloneable, Node, Serializable {
                return Constants.ATTRIBUTE_NAMES[tag];
        }
 
+       @Override
        public abstract void accept(ClassVisitor v);
 
 }
index 654cd814672627543fc519376cdeb5cfd42548af..5c60f818fe0b63f02d233aac6f887ec74e913f34 100644 (file)
@@ -173,4 +173,8 @@ public interface ClassVisitor {
        public void visitModule(Module module);
        public void visitModulePackages(ModulePackages modulePackage);
        public void visitModuleMainClass(ModuleMainClass moduleMainClass);
+
+       // J11:
+       public void visitNestHost(NestHost nestHost);
+       public void visitNestMembers(NestMembers nestMembers);
 }
diff --git a/bcel-builder/src/org/aspectj/apache/bcel/classfile/NestHost.java b/bcel-builder/src/org/aspectj/apache/bcel/classfile/NestHost.java
new file mode 100644 (file)
index 0000000..52d3126
--- /dev/null
@@ -0,0 +1,118 @@
+package org.aspectj.apache.bcel.classfile;
+
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2001 The Apache Software Foundation.  All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ *    if any, must include the following acknowledgment:
+ *       "This product includes software developed by the
+ *        Apache Software Foundation (http://www.apache.org/)."
+ *    Alternately, this acknowledgment may appear in the software itself,
+ *    if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ *    "Apache BCEL" must not be used to endorse or promote products
+ *    derived from this software without prior written permission. For
+ *    written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ *    "Apache BCEL", nor may "Apache" appear in their name, without
+ *    prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+import org.aspectj.apache.bcel.Constants;
+
+/**
+ * https://docs.oracle.com/javase/specs/jvms/se11/html/jvms-4.html#jvms-4.7.28
+ * 
+ * @see Attribute
+ */
+public final class NestHost extends Attribute {
+       private int hostClassIndex;
+
+       public NestHost(NestHost c) {
+               this(c.getNameIndex(), c.getLength(), c.getHostClassIndex(), c.getConstantPool());
+       }
+
+       public NestHost(int nameIndex, int length, int hostClassIndex, ConstantPool cp) {
+               super(Constants.ATTR_NEST_MEMBERS, nameIndex, length, cp);
+               this.hostClassIndex = hostClassIndex;
+       }
+
+       NestHost(int nameIndex, int length, DataInputStream file, ConstantPool constant_pool) throws IOException {
+               this(nameIndex, length, 0, constant_pool);
+               hostClassIndex = file.readUnsignedShort();
+       }
+
+       @Override
+       public void accept(ClassVisitor v) {
+               v.visitNestHost(this);
+       }
+
+       @Override
+       public final void dump(DataOutputStream file) throws IOException {
+               super.dump(file);
+               file.writeShort(hostClassIndex);
+       }
+
+       public final int getHostClassIndex() {
+               return hostClassIndex;
+       }
+
+       public final void setHostClassIndex(int hostClassIndex) {
+               this.hostClassIndex = hostClassIndex;
+       }
+       
+       public final String getHostClassName() {
+               ConstantClass constantClass = (ConstantClass)cpool.getConstant(hostClassIndex,Constants.CONSTANT_Class);
+               return constantClass.getClassname(cpool);
+       }
+
+       @Override
+       public final String toString() {
+               StringBuffer buf = new StringBuffer();
+               buf.append("NestHost(");
+               ConstantClass constantClass = (ConstantClass)cpool.getConstant(hostClassIndex,Constants.CONSTANT_Class);
+               buf.append(constantClass.getClassname(cpool));
+               buf.append(")");
+               return buf.toString();
+       }
+}
diff --git a/bcel-builder/src/org/aspectj/apache/bcel/classfile/NestMembers.java b/bcel-builder/src/org/aspectj/apache/bcel/classfile/NestMembers.java
new file mode 100644 (file)
index 0000000..9d27396
--- /dev/null
@@ -0,0 +1,131 @@
+package org.aspectj.apache.bcel.classfile;
+
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2001 The Apache Software Foundation.  All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ *    if any, must include the following acknowledgment:
+ *       "This product includes software developed by the
+ *        Apache Software Foundation (http://www.apache.org/)."
+ *    Alternately, this acknowledgment may appear in the software itself,
+ *    if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ *    "Apache BCEL" must not be used to endorse or promote products
+ *    derived from this software without prior written permission. For
+ *    written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ *    "Apache BCEL", nor may "Apache" appear in their name, without
+ *    prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+import org.aspectj.apache.bcel.Constants;
+
+/**
+ * https://docs.oracle.com/javase/specs/jvms/se11/html/jvms-4.html#jvms-4.7.29
+ * 
+ * @see Attribute
+ */
+public final class NestMembers extends Attribute {
+       private int numberOfClasses;
+       private int[] classes; // CONSTANT_Class_info references
+
+       public NestMembers(NestMembers c) {
+               this(c.getNameIndex(), c.getLength(), c.getClasses(), c.getConstantPool());
+       }
+
+       public NestMembers(int nameIndex, int length, int[] classes, ConstantPool cp) {
+               super(Constants.ATTR_NEST_MEMBERS, nameIndex, length, cp);
+               setClasses(classes);
+       }
+
+       NestMembers(int nameIndex, int length, DataInputStream file, ConstantPool constant_pool) throws IOException {
+               this(nameIndex, length, (int[]) null, constant_pool);
+               numberOfClasses = file.readUnsignedShort();
+               classes = new int[numberOfClasses];
+               for (int i = 0; i < numberOfClasses; i++) {
+                       classes[i] = file.readUnsignedShort();
+               }
+       }
+
+       @Override
+       public void accept(ClassVisitor v) {
+               v.visitNestMembers(this);
+       }
+
+       @Override
+       public final void dump(DataOutputStream file) throws IOException {
+               super.dump(file);
+               file.writeShort(numberOfClasses);
+               for (int i = 0; i < numberOfClasses; i++) {
+                       file.writeShort(classes[i]);
+               }
+       }
+
+       public final int[] getClasses() {
+               return classes;
+       }
+
+       public final void setClasses(int[] inner_classes) {
+               this.classes = inner_classes;
+               numberOfClasses = (inner_classes == null) ? 0 : inner_classes.length;
+       }
+       
+       public final String[] getClassesNames() {
+               String[] result = new String[numberOfClasses];
+               for (int i = 0; i < numberOfClasses; i++) {
+                       ConstantClass constantClass = (ConstantClass)cpool.getConstant(classes[i],Constants.CONSTANT_Class);
+                       result[i] = constantClass.getClassname(cpool);
+               }
+               return result;
+       }
+
+       @Override
+       public final String toString() {
+               StringBuffer buf = new StringBuffer();
+               for (int i = 0; i < numberOfClasses; i++) {
+                       ConstantClass constantClass = (ConstantClass)cpool.getConstant(classes[i],Constants.CONSTANT_Class);
+                       buf.append(constantClass.getClassname(cpool)).append(" ");
+               }
+               return "NestMembers("+buf.toString().trim()+")";
+       }
+}
index 6dc3eae4621d10c3b47a8c303ab88213d5dd6aa5..3335f1ea83b03b10858a1ae38d1e8151984eca6e 100644 (file)
@@ -59,6 +59,7 @@ import org.aspectj.apache.bcel.classfile.AnnotationDefault;
 import org.aspectj.apache.bcel.classfile.Attribute;
 import org.aspectj.apache.bcel.classfile.AttributeUtils;
 import org.aspectj.apache.bcel.classfile.BootstrapMethods;
+import org.aspectj.apache.bcel.classfile.ClassVisitor;
 import org.aspectj.apache.bcel.classfile.Code;
 import org.aspectj.apache.bcel.classfile.CodeException;
 import org.aspectj.apache.bcel.classfile.Constant;
@@ -98,13 +99,14 @@ import org.aspectj.apache.bcel.classfile.MethodParameters;
 import org.aspectj.apache.bcel.classfile.Module;
 import org.aspectj.apache.bcel.classfile.ModuleMainClass;
 import org.aspectj.apache.bcel.classfile.ModulePackages;
+import org.aspectj.apache.bcel.classfile.NestHost;
+import org.aspectj.apache.bcel.classfile.NestMembers;
 import org.aspectj.apache.bcel.classfile.Signature;
 import org.aspectj.apache.bcel.classfile.SourceFile;
 import org.aspectj.apache.bcel.classfile.StackMap;
 import org.aspectj.apache.bcel.classfile.StackMapEntry;
 import org.aspectj.apache.bcel.classfile.Synthetic;
 import org.aspectj.apache.bcel.classfile.Unknown;
-import org.aspectj.apache.bcel.classfile.ClassVisitor;
 import org.aspectj.apache.bcel.classfile.annotation.RuntimeInvisAnnos;
 import org.aspectj.apache.bcel.classfile.annotation.RuntimeInvisParamAnnos;
 import org.aspectj.apache.bcel.classfile.annotation.RuntimeInvisTypeAnnos;
@@ -171,6 +173,7 @@ public class DescendingVisitor implements ClassVisitor {
                clazz.accept(this);
        }
 
+       @Override
        public void visitJavaClass(JavaClass clazz) {
                stack.push(clazz);
                clazz.accept(visitor);
@@ -189,6 +192,7 @@ public class DescendingVisitor implements ClassVisitor {
                stack.pop();
        }
 
+       @Override
        public void visitField(Field field) {
                stack.push(field);
                field.accept(visitor);
@@ -197,12 +201,14 @@ public class DescendingVisitor implements ClassVisitor {
                stack.pop();
        }
 
+       @Override
        public void visitConstantValue(ConstantValue cv) {
                stack.push(cv);
                cv.accept(visitor);
                stack.pop();
        }
 
+       @Override
        public void visitMethod(Method method) {
                stack.push(method);
                method.accept(visitor);
@@ -210,12 +216,14 @@ public class DescendingVisitor implements ClassVisitor {
                stack.pop();
        }
 
+       @Override
        public void visitExceptionTable(ExceptionTable table) {
                stack.push(table);
                table.accept(visitor);
                stack.pop();
        }
 
+       @Override
        public void visitCode(Code code) {
                stack.push(code);
                code.accept(visitor);
@@ -230,12 +238,14 @@ public class DescendingVisitor implements ClassVisitor {
                stack.pop();
        }
 
+       @Override
        public void visitCodeException(CodeException ce) {
                stack.push(ce);
                ce.accept(visitor);
                stack.pop();
        }
 
+       @Override
        public void visitLineNumberTable(LineNumberTable table) {
                stack.push(table);
                table.accept(visitor);
@@ -246,12 +256,14 @@ public class DescendingVisitor implements ClassVisitor {
                stack.pop();
        }
 
+       @Override
        public void visitLineNumber(LineNumber number) {
                stack.push(number);
                number.accept(visitor);
                stack.pop();
        }
 
+       @Override
        public void visitLocalVariableTable(LocalVariableTable table) {
                stack.push(table);
                table.accept(visitor);
@@ -262,6 +274,7 @@ public class DescendingVisitor implements ClassVisitor {
                stack.pop();
        }
 
+       @Override
        public void visitStackMap(StackMap table) {
                stack.push(table);
                table.accept(visitor);
@@ -273,18 +286,21 @@ public class DescendingVisitor implements ClassVisitor {
                stack.pop();
        }
 
+       @Override
        public void visitStackMapEntry(StackMapEntry var) {
                stack.push(var);
                var.accept(visitor);
                stack.pop();
        }
 
+       @Override
        public void visitLocalVariable(LocalVariable var) {
                stack.push(var);
                var.accept(visitor);
                stack.pop();
        }
 
+       @Override
        public void visitConstantPool(ConstantPool cp) {
                stack.push(cp);
                cp.accept(visitor);
@@ -298,104 +314,123 @@ public class DescendingVisitor implements ClassVisitor {
                stack.pop();
        }
 
+       @Override
        public void visitConstantClass(ConstantClass constant) {
                stack.push(constant);
                constant.accept(visitor);
                stack.pop();
        }
 
+       @Override
        public void visitConstantDouble(ConstantDouble constant) {
                stack.push(constant);
                constant.accept(visitor);
                stack.pop();
        }
 
+       @Override
        public void visitConstantFieldref(ConstantFieldref constant) {
                stack.push(constant);
                constant.accept(visitor);
                stack.pop();
        }
 
+       @Override
        public void visitConstantFloat(ConstantFloat constant) {
                stack.push(constant);
                constant.accept(visitor);
                stack.pop();
        }
 
+       @Override
        public void visitConstantInteger(ConstantInteger constant) {
                stack.push(constant);
                constant.accept(visitor);
                stack.pop();
        }
 
+       @Override
        public void visitConstantInterfaceMethodref(ConstantInterfaceMethodref constant) {
                stack.push(constant);
                constant.accept(visitor);
                stack.pop();
        }
 
+       @Override
        public void visitConstantLong(ConstantLong constant) {
                stack.push(constant);
                constant.accept(visitor);
                stack.pop();
        }
 
+       @Override
        public void visitConstantMethodref(ConstantMethodref constant) {
                stack.push(constant);
                constant.accept(visitor);
                stack.pop();
        }
 
+       @Override
        public void visitConstantMethodHandle(ConstantMethodHandle constant) {
                throw new IllegalStateException("nyi");
        }
 
+       @Override
        public void visitConstantMethodType(ConstantMethodType obj) {
                throw new IllegalStateException("nyi");
        }
 
+       @Override
        public void visitConstantInvokeDynamic(ConstantInvokeDynamic obj) {
                throw new IllegalStateException("nyi");
        }
 
+       @Override
        public void visitConstantDynamic(ConstantDynamic obj) {
                throw new IllegalStateException("nyi");
        }
 
+       @Override
        public void visitBootstrapMethods(BootstrapMethods obj) {
                throw new IllegalStateException("nyi");
        }
 
+       @Override
        public void visitConstantNameAndType(ConstantNameAndType constant) {
                stack.push(constant);
                constant.accept(visitor);
                stack.pop();
        }
 
+       @Override
        public void visitConstantString(ConstantString constant) {
                stack.push(constant);
                constant.accept(visitor);
                stack.pop();
        }
 
+       @Override
        public void visitConstantModule(ConstantModule constant) {
                stack.push(constant);
                constant.accept(visitor);
                stack.pop();
        }
 
+       @Override
        public void visitConstantPackage(ConstantPackage constant) {
                stack.push(constant);
                constant.accept(visitor);
                stack.pop();
        }
 
+       @Override
        public void visitConstantUtf8(ConstantUtf8 constant) {
                stack.push(constant);
                constant.accept(visitor);
                stack.pop();
        }
 
+       @Override
        public void visitInnerClasses(InnerClasses ic) {
                stack.push(ic);
                ic.accept(visitor);
@@ -406,18 +441,21 @@ public class DescendingVisitor implements ClassVisitor {
                stack.pop();
        }
 
+       @Override
        public void visitInnerClass(InnerClass inner) {
                stack.push(inner);
                inner.accept(visitor);
                stack.pop();
        }
 
+       @Override
        public void visitDeprecated(Deprecated attribute) {
                stack.push(attribute);
                attribute.accept(visitor);
                stack.pop();
        }
 
+       @Override
        public void visitSignature(Signature attribute) {
                stack.push(attribute);
                attribute.accept(visitor);
@@ -425,60 +463,70 @@ public class DescendingVisitor implements ClassVisitor {
        }
 
        // J5SUPPORT:
+       @Override
        public void visitEnclosingMethod(EnclosingMethod attribute) {
                stack.push(attribute);
                attribute.accept(visitor);
                stack.pop();
        }
 
+       @Override
        public void visitRuntimeVisibleAnnotations(RuntimeVisAnnos attribute) {
                stack.push(attribute);
                attribute.accept(visitor);
                stack.pop();
        }
 
+       @Override
        public void visitRuntimeInvisibleAnnotations(RuntimeInvisAnnos attribute) {
                stack.push(attribute);
                attribute.accept(visitor);
                stack.pop();
        }
 
+       @Override
        public void visitRuntimeVisibleParameterAnnotations(RuntimeVisParamAnnos attribute) {
                stack.push(attribute);
                attribute.accept(visitor);
                stack.pop();
        }
 
+       @Override
        public void visitRuntimeInvisibleParameterAnnotations(RuntimeInvisParamAnnos attribute) {
                stack.push(attribute);
                attribute.accept(visitor);
                stack.pop();
        }
 
+       @Override
        public void visitRuntimeVisibleTypeAnnotations(RuntimeVisTypeAnnos attribute) {
                stack.push(attribute);
                attribute.accept(visitor);
                stack.pop();
        }
 
+       @Override
        public void visitMethodParameters(MethodParameters attribute) {
                stack.push(attribute);
                attribute.accept(visitor);
                stack.pop();
        }
 
+       @Override
        public void visitRuntimeInvisibleTypeAnnotations(RuntimeInvisTypeAnnos attribute) {
                stack.push(attribute);
                attribute.accept(visitor);
                stack.pop();
        }
 
+       @Override
        public void visitAnnotationDefault(AnnotationDefault attribute) {
                stack.push(attribute);
                attribute.accept(visitor);
                stack.pop();
        }
 
+       @Override
        public void visitLocalVariableTypeTable(LocalVariableTypeTable table) {
                stack.push(table);
                table.accept(visitor);
@@ -489,39 +537,59 @@ public class DescendingVisitor implements ClassVisitor {
                stack.pop();
        }
 
+       @Override
        public void visitSourceFile(SourceFile attribute) {
                stack.push(attribute);
                attribute.accept(visitor);
                stack.pop();
        }
 
+       @Override
        public void visitSynthetic(Synthetic attribute) {
                stack.push(attribute);
                attribute.accept(visitor);
                stack.pop();
        }
 
+       @Override
        public void visitUnknown(Unknown attribute) {
                stack.push(attribute);
                attribute.accept(visitor);
                stack.pop();
        }
 
+       @Override
        public void visitModule(Module attribute) {
                stack.push(attribute);
                attribute.accept(visitor);
                stack.pop();
        }
 
+       @Override
        public void visitModulePackages(ModulePackages attribute) {
                stack.push(attribute);
                attribute.accept(visitor);
                stack.pop();
        }
 
+       @Override
        public void visitModuleMainClass(ModuleMainClass attribute) {
                stack.push(attribute);
                attribute.accept(visitor);
                stack.pop();
        }
+
+       @Override
+       public void visitNestHost(NestHost attribute) {
+               stack.push(attribute);
+               attribute.accept(visitor);
+               stack.pop();
+       }
+
+       @Override
+       public void visitNestMembers(NestMembers attribute) {
+               stack.push(attribute);
+               attribute.accept(visitor);
+               stack.pop();
+       }
 }
index aca992fbfed46f910983bce15fa0a7b4e2cd407f..1ca9016508ef6435a4aa523c060048a1f18288d3 100644 (file)
@@ -55,6 +55,7 @@ package org.aspectj.apache.bcel.verifier;
 
 import org.aspectj.apache.bcel.classfile.AnnotationDefault;
 import org.aspectj.apache.bcel.classfile.BootstrapMethods;
+import org.aspectj.apache.bcel.classfile.ClassVisitor;
 import org.aspectj.apache.bcel.classfile.Code;
 import org.aspectj.apache.bcel.classfile.CodeException;
 import org.aspectj.apache.bcel.classfile.ConstantClass;
@@ -93,13 +94,14 @@ import org.aspectj.apache.bcel.classfile.MethodParameters;
 import org.aspectj.apache.bcel.classfile.Module;
 import org.aspectj.apache.bcel.classfile.ModuleMainClass;
 import org.aspectj.apache.bcel.classfile.ModulePackages;
+import org.aspectj.apache.bcel.classfile.NestHost;
+import org.aspectj.apache.bcel.classfile.NestMembers;
 import org.aspectj.apache.bcel.classfile.Signature;
 import org.aspectj.apache.bcel.classfile.SourceFile;
 import org.aspectj.apache.bcel.classfile.StackMap;
 import org.aspectj.apache.bcel.classfile.StackMapEntry;
 import org.aspectj.apache.bcel.classfile.Synthetic;
 import org.aspectj.apache.bcel.classfile.Unknown;
-import org.aspectj.apache.bcel.classfile.ClassVisitor;
 import org.aspectj.apache.bcel.classfile.annotation.RuntimeInvisAnnos;
 import org.aspectj.apache.bcel.classfile.annotation.RuntimeInvisParamAnnos;
 import org.aspectj.apache.bcel.classfile.annotation.RuntimeInvisTypeAnnos;
@@ -120,64 +122,118 @@ import org.aspectj.apache.bcel.classfile.annotation.RuntimeVisTypeAnnos;
 public class EmptyClassVisitor implements ClassVisitor {
   protected EmptyClassVisitor() { }
 
-  public void visitCode(Code obj) {}
-  public void visitCodeException(CodeException obj) {}
-  public void visitConstantClass(ConstantClass obj) {}
-  public void visitConstantDouble(ConstantDouble obj) {}
-  public void visitConstantFieldref(ConstantFieldref obj) {}
-  public void visitConstantFloat(ConstantFloat obj) {}
-  public void visitConstantInteger(ConstantInteger obj) {}
-  public void visitConstantInterfaceMethodref(ConstantInterfaceMethodref obj) {}
-  public void visitConstantLong(ConstantLong obj) {}
-  public void visitConstantMethodref(ConstantMethodref obj) {}
-  public void visitConstantMethodHandle(ConstantMethodHandle obj) {}
-  public void visitConstantMethodType(ConstantMethodType obj) {}
-  public void visitConstantInvokeDynamic(ConstantInvokeDynamic obj) {}
-  public void visitConstantNameAndType(ConstantNameAndType obj) {}
-  public void visitConstantPool(ConstantPool obj) {}
-  public void visitConstantString(ConstantString obj) {}
-  public void visitConstantModule(ConstantModule obj) {}
-  public void visitConstantPackage(ConstantPackage obj) {}
-  public void visitConstantUtf8(ConstantUtf8 obj) {}
-  public void visitConstantValue(ConstantValue obj) {}
-  public void visitDeprecated(Deprecated obj) {}
-  public void visitExceptionTable(ExceptionTable obj) {}
-  public void visitField(Field obj) {}
-  public void visitInnerClass(InnerClass obj) {}
-  public void visitInnerClasses(InnerClasses obj) {}
-  public void visitJavaClass(JavaClass obj) {}
-  public void visitLineNumber(LineNumber obj) {}
-  public void visitBootstrapMethods(BootstrapMethods obj) {}
-  public void visitLineNumberTable(LineNumberTable obj) {}
-  public void visitLocalVariable(LocalVariable obj) {}
-  public void visitLocalVariableTable(LocalVariableTable obj) {}
-  public void visitMethod(Method obj) {}
-  public void visitSignature(Signature obj) {}
-  public void visitSourceFile(SourceFile obj) {}
-  public void visitSynthetic(Synthetic obj) {}
-  public void visitUnknown(Unknown obj) {}
-  public void visitStackMap(StackMap obj) {}
-  public void visitStackMapEntry(StackMapEntry obj) {}
+  @Override
+public void visitCode(Code obj) {}
+  @Override
+public void visitCodeException(CodeException obj) {}
+  @Override
+public void visitConstantClass(ConstantClass obj) {}
+  @Override
+public void visitConstantDouble(ConstantDouble obj) {}
+  @Override
+public void visitConstantFieldref(ConstantFieldref obj) {}
+  @Override
+public void visitConstantFloat(ConstantFloat obj) {}
+  @Override
+public void visitConstantInteger(ConstantInteger obj) {}
+  @Override
+public void visitConstantInterfaceMethodref(ConstantInterfaceMethodref obj) {}
+  @Override
+public void visitConstantLong(ConstantLong obj) {}
+  @Override
+public void visitConstantMethodref(ConstantMethodref obj) {}
+  @Override
+public void visitConstantMethodHandle(ConstantMethodHandle obj) {}
+  @Override
+public void visitConstantMethodType(ConstantMethodType obj) {}
+  @Override
+public void visitConstantInvokeDynamic(ConstantInvokeDynamic obj) {}
+  @Override
+public void visitConstantNameAndType(ConstantNameAndType obj) {}
+  @Override
+public void visitConstantPool(ConstantPool obj) {}
+  @Override
+public void visitConstantString(ConstantString obj) {}
+  @Override
+public void visitConstantModule(ConstantModule obj) {}
+  @Override
+public void visitConstantPackage(ConstantPackage obj) {}
+  @Override
+public void visitConstantUtf8(ConstantUtf8 obj) {}
+  @Override
+public void visitConstantValue(ConstantValue obj) {}
+  @Override
+public void visitDeprecated(Deprecated obj) {}
+  @Override
+public void visitExceptionTable(ExceptionTable obj) {}
+  @Override
+public void visitField(Field obj) {}
+  @Override
+public void visitInnerClass(InnerClass obj) {}
+  @Override
+public void visitInnerClasses(InnerClasses obj) {}
+  @Override
+public void visitJavaClass(JavaClass obj) {}
+  @Override
+public void visitLineNumber(LineNumber obj) {}
+  @Override
+public void visitBootstrapMethods(BootstrapMethods obj) {}
+  @Override
+public void visitLineNumberTable(LineNumberTable obj) {}
+  @Override
+public void visitLocalVariable(LocalVariable obj) {}
+  @Override
+public void visitLocalVariableTable(LocalVariableTable obj) {}
+  @Override
+public void visitMethod(Method obj) {}
+  @Override
+public void visitSignature(Signature obj) {}
+  @Override
+public void visitSourceFile(SourceFile obj) {}
+  @Override
+public void visitSynthetic(Synthetic obj) {}
+  @Override
+public void visitUnknown(Unknown obj) {}
+  @Override
+public void visitStackMap(StackMap obj) {}
+  @Override
+public void visitStackMapEntry(StackMapEntry obj) {}
 
   // J5:
-  public void visitEnclosingMethod(EnclosingMethod obj) {}
-  public void visitRuntimeVisibleAnnotations(RuntimeVisAnnos attribute) {}
-  public void visitRuntimeInvisibleAnnotations(RuntimeInvisAnnos attribute) {}
-  public void visitRuntimeVisibleParameterAnnotations(RuntimeVisParamAnnos attribute) {}
-  public void visitRuntimeInvisibleParameterAnnotations(RuntimeInvisParamAnnos attribute) {}
-  public void visitAnnotationDefault(AnnotationDefault attribute) {}
-  public void visitLocalVariableTypeTable(LocalVariableTypeTable obj) {}
+  @Override
+public void visitEnclosingMethod(EnclosingMethod obj) {}
+  @Override
+public void visitRuntimeVisibleAnnotations(RuntimeVisAnnos attribute) {}
+  @Override
+public void visitRuntimeInvisibleAnnotations(RuntimeInvisAnnos attribute) {}
+  @Override
+public void visitRuntimeVisibleParameterAnnotations(RuntimeVisParamAnnos attribute) {}
+  @Override
+public void visitRuntimeInvisibleParameterAnnotations(RuntimeInvisParamAnnos attribute) {}
+  @Override
+public void visitAnnotationDefault(AnnotationDefault attribute) {}
+  @Override
+public void visitLocalVariableTypeTable(LocalVariableTypeTable obj) {}
         
   // J8:
-  public void visitRuntimeVisibleTypeAnnotations(RuntimeVisTypeAnnos attribute) {}
-  public void visitRuntimeInvisibleTypeAnnotations(RuntimeInvisTypeAnnos attribute) {}
-  public void visitMethodParameters(MethodParameters attribute) {}
+  @Override
+public void visitRuntimeVisibleTypeAnnotations(RuntimeVisTypeAnnos attribute) {}
+  @Override
+public void visitRuntimeInvisibleTypeAnnotations(RuntimeInvisTypeAnnos attribute) {}
+  @Override
+public void visitMethodParameters(MethodParameters attribute) {}
 
   // J9:
-  public void visitModule(Module attribute) {}
-  public void visitModulePackages(ModulePackages attribute) {}
-  public void visitModuleMainClass(ModuleMainClass attribute) {}
+  @Override
+public void visitModule(Module attribute) {}
+  @Override
+public void visitModulePackages(ModulePackages attribute) {}
+  @Override
+public void visitModuleMainClass(ModuleMainClass attribute) {}
 
-  public void visitConstantDynamic(ConstantDynamic obj) {}
+  // J11:
+  @Override public void visitConstantDynamic(ConstantDynamic attribute) {}
+  @Override public void visitNestHost(NestHost attribute) { }
+  @Override public void visitNestMembers(NestMembers attribute) { }
  
 }
diff --git a/lib/asm/asm-6.2.1.renamed.jar b/lib/asm/asm-6.2.1.renamed.jar
deleted file mode 100644 (file)
index 3fc0688..0000000
Binary files a/lib/asm/asm-6.2.1.renamed.jar and /dev/null differ
diff --git a/lib/asm/asm-7.0-beta.20181001.jar b/lib/asm/asm-7.0-beta.20181001.jar
new file mode 100644 (file)
index 0000000..f5d937f
Binary files /dev/null and b/lib/asm/asm-7.0-beta.20181001.jar differ
diff --git a/lib/asm/asm-7.0-beta.renamed.jar b/lib/asm/asm-7.0-beta.renamed.jar
new file mode 100644 (file)
index 0000000..cf9a107
Binary files /dev/null and b/lib/asm/asm-7.0-beta.renamed.jar differ
index 2cd8eeba94242b92d7e27f3c843d107713456b6a..00934571134e741bbecc320badad4ed0fce73c08 100644 (file)
@@ -4,8 +4,8 @@
     <taskdef name="jarjar" classname="com.tonicsystems.jarjar.JarJarTask"/>
 
        <target name="package" description="Jarjar asm-NNN.jar and prefix package name with aj">
-               <jarjar destfile="asm-6.2.1.renamed.jar">
-                 <zipfileset src="asm-6.2.1.jar" excludes="module-info.class"/>
+               <jarjar destfile="asm-7.0-beta.renamed.jar">
+                 <zipfileset src="asm-7.0-beta.jar" excludes="module-info.class"/>
                  <rule pattern="org.objectweb.asm.**" result="aj.org.objectweb.asm.@1"/>
                </jarjar>
        </target> 
index 810c8a6fb73d727c92f48c5dba65a8218b9a735b..a6f847d7543b9cf8cc3e39b8e0a3f1c7646ccbe3 100644 (file)
Binary files a/lib/bcel/bcel-src.zip and b/lib/bcel/bcel-src.zip differ
index 93d200f67f0305cc599a0f3c8ef9f414e0320805..916e947d0ec180ceb4c46dc8eb81ea778134b759 100644 (file)
Binary files a/lib/bcel/bcel-verifier-src.zip and b/lib/bcel/bcel-verifier-src.zip differ
index 2c3ef4babf0adfbeeec852f1921afe7e248d3d5f..41471b19872780087f50dd557ab741a0719b5629 100644 (file)
Binary files a/lib/bcel/bcel-verifier.jar and b/lib/bcel/bcel-verifier.jar differ
index e4899e2c744987ed363cde5000790b6da7722164..d5cbf14eb2e000779d9af553873176918f8ff4f0 100644 (file)
Binary files a/lib/bcel/bcel.jar and b/lib/bcel/bcel.jar differ
index 988b8a2847571f01338ab2f01c3eb57e263afa03..1384358a341a1b94943cba617cecc68251d2f60a 100644 (file)
@@ -91,7 +91,7 @@ public class AjcTestCase extends TestCase {
                        + File.separator
                        + "bcel-verifier.jar"
                        
-                       + File.pathSeparator + ".." +  File.separator + "lib" + File.separator + "asm" + File.separator + "asm-6.2.1.renamed.jar"
+                       + File.pathSeparator + ".." +  File.separator + "lib" + File.separator + "asm" + File.separator + "asm-7.0-beta.renamed.jar"
 
                        // When the build machine executes the tests, it is using code built into jars rather than code build into
                        // bin directories. This means for the necessary types to be found we have to put these jars on the classpath:
index 12e606286ba7d9b085b2810c74e703b859e4a974..0e70dcd2050fc637dc79552644b442ceca874e5c 100644 (file)
Binary files a/org.eclipse.jdt.core/jdtcore-for-aspectj-src.zip and b/org.eclipse.jdt.core/jdtcore-for-aspectj-src.zip differ
index 019e8b3a9d9ca8c8cde4ae451976e6ce5b74b8ed..3d73f19d960e5050cf4a9afcc0cbd569e7b27ab2 100644 (file)
Binary files a/org.eclipse.jdt.core/jdtcore-for-aspectj.jar and b/org.eclipse.jdt.core/jdtcore-for-aspectj.jar differ
index 673463a55bc5a11ed46f73076d78dd1ca0c0d85f..9d900ff2c71201138e61f25eb1776dc87b072201 100644 (file)
@@ -1,5 +1,5 @@
 public aspect MyAspect {
-    pointcut all(): execution(@javax.annotation.Resource * *(..));
+    pointcut all(): execution(@Resource * *(..));
 
 
     before(): all() {
index 7b596ffd08be8f1558338e07c04980e6f332106b..b6ea712678695e7c6f824c0d06a77cd784b678ea 100644 (file)
@@ -1,5 +1,5 @@
 public class MyClass {
-    @javax.annotation.Resource
+    @Resource
     public void method() {
     }
 }
diff --git a/tests/bugs180/415957/Resource.java b/tests/bugs180/415957/Resource.java
new file mode 100644 (file)
index 0000000..e9ae957
--- /dev/null
@@ -0,0 +1,4 @@
+import java.lang.annotation.*;
+
+@Retention(RetentionPolicy.RUNTIME)
+public @interface Resource {}
diff --git a/tests/bugs192/535156/DemoApp.class b/tests/bugs192/535156/DemoApp.class
new file mode 100644 (file)
index 0000000..0a2a5f3
Binary files /dev/null and b/tests/bugs192/535156/DemoApp.class differ
diff --git a/tests/bugs192/535156/X.class b/tests/bugs192/535156/X.class
new file mode 100644 (file)
index 0000000..fce34ae
Binary files /dev/null and b/tests/bugs192/535156/X.class differ
diff --git a/tests/bugs192/nestmates/Outer.java b/tests/bugs192/nestmates/Outer.java
new file mode 100644 (file)
index 0000000..42a102c
--- /dev/null
@@ -0,0 +1,9 @@
+public class Outer {
+    private int i = 0;
+    
+    public class Inner {
+        public int i() {
+            return i;
+        }
+    }
+}
diff --git a/tests/bugs192/nestmates/Outer2$Inner2.class b/tests/bugs192/nestmates/Outer2$Inner2.class
new file mode 100644 (file)
index 0000000..cccfb99
Binary files /dev/null and b/tests/bugs192/nestmates/Outer2$Inner2.class differ
diff --git a/tests/bugs192/nestmates/Outer2.class b/tests/bugs192/nestmates/Outer2.class
new file mode 100644 (file)
index 0000000..1519299
Binary files /dev/null and b/tests/bugs192/nestmates/Outer2.class differ
diff --git a/tests/bugs192/nestmates/Outer2.java b/tests/bugs192/nestmates/Outer2.java
new file mode 100644 (file)
index 0000000..de5dc10
--- /dev/null
@@ -0,0 +1,21 @@
+public class Outer2 {
+    private int i = 0;
+
+    public static void main(String []argv) {
+           Outer2 o2 = new Outer2();
+           Inner2 i2 = o2.new Inner2();
+           System.out.println(i2.i());
+    }
+    
+    public class Inner2 {
+        public int i() {
+            return i;
+        }
+    }
+
+}
+
+aspect X {
+before(): execution(* Outer2.main(..)) { System.out.println("Before main()");}
+before(): execution(* Outer2.Inner2.i(..)) { System.out.println("Before i()");}
+}
diff --git a/tests/bugs192/nestmates/X.class b/tests/bugs192/nestmates/X.class
new file mode 100644 (file)
index 0000000..a8887a5
Binary files /dev/null and b/tests/bugs192/nestmates/X.class differ
index 66bae0c9de60a357707789e4023c5dc3ecbfbf18..84e0f9d39884c3660348c53860b8ef2aa60817f9 100644 (file)
@@ -12,6 +12,9 @@ package org.aspectj.systemtest.ajc192;
 
 import java.io.File;
 
+import org.aspectj.apache.bcel.classfile.JavaClass;
+import org.aspectj.apache.bcel.classfile.NestHost;
+import org.aspectj.apache.bcel.classfile.NestMembers;
 import org.aspectj.testing.XMLBasedAjcTestCase;
 
 import junit.framework.Test;
@@ -21,6 +24,29 @@ import junit.framework.Test;
  */
 public class Ajc192Tests extends XMLBasedAjcTestCase {
 
+       public void testNestmates() throws Exception {
+               runTest("nestmates");
+               JavaClass outer = getClassFrom(ajc.getSandboxDirectory(), "Outer");
+               JavaClass inner = getClassFrom(ajc.getSandboxDirectory(), "Outer$Inner");
+               NestMembers nestMembers = (NestMembers) getAttributeStartsWith(outer.getAttributes(),"NestMembers");
+               assertEquals(1,nestMembers.getClasses().length);
+               assertEquals("Outer$Inner",nestMembers.getClassesNames()[0]);
+               NestHost nestHost = (NestHost) getAttributeStartsWith(inner.getAttributes(),"NestHost");
+               assertEquals("Outer",nestHost.getHostClassName());
+       }
+
+       // Verifying not destroyed on weaving
+       public void testNestmates2() throws Exception {
+               runTest("nestmates 2");
+               JavaClass outer = getClassFrom(ajc.getSandboxDirectory(), "Outer2");
+               JavaClass inner = getClassFrom(ajc.getSandboxDirectory(), "Outer2$Inner2");
+               NestMembers nestMembers = (NestMembers) getAttributeStartsWith(outer.getAttributes(),"NestMembers");
+               assertEquals(1,nestMembers.getClasses().length);
+               assertEquals("Outer2$Inner2",nestMembers.getClassesNames()[0]);
+               NestHost nestHost = (NestHost) getAttributeStartsWith(inner.getAttributes(),"NestHost");
+               assertEquals("Outer2",nestHost.getHostClassName());
+       }
+       
        public void testCflowFinal() {
                runTest("no final on cflow elements");
        }
index 5eb7fcbbb630a5eac13e084caf0b3d60bbd1ed66..eb846e7cf6b13af5feccbcdc936531d8dc794755 100644 (file)
@@ -2,6 +2,23 @@
 
 <suite>
 
+  <ajc-test dir="bugs192/nestmates" title="nestmates">
+    <compile files="Outer.java" options="-11">
+       </compile>
+  </ajc-test>
+  
+  
+  <ajc-test dir="bugs192/nestmates" title="nestmates 2">
+    <compile files="Outer2.java" options="-11">
+       </compile>
+       <run class="Outer2">
+       <stdout>
+       <line text="Before main()"/>
+       <line text="Before i"/>
+       <line text="0"/>
+       </stdout></run>
+  </ajc-test>
+  
   <ajc-test dir="bugs192/537825" title="no final on cflow elements">
     <compile files="Code.java" options="-9">
     </compile>
index d7932c82da8991b61356bfff4dc4e05210ea0911..dd3965b612cb494166b55e7e50516a87105c76cb 100644 (file)
@@ -54,7 +54,7 @@ public class StackMapAdder {
        private static class AspectJClassVisitor extends ClassVisitor {
 
                public AspectJClassVisitor(ClassVisitor classwriter) {
-                       super(Opcodes.ASM5, classwriter);
+                       super(Opcodes.ASM7, classwriter);
                }
 
                @Override
@@ -67,7 +67,7 @@ public class StackMapAdder {
                // created by a ClassWriter (see top level class comment)
                static class AJMethodVisitor extends MethodVisitor {
                        public AJMethodVisitor(MethodVisitor mv) {
-                               super(Opcodes.ASM5,mv);
+                               super(Opcodes.ASM7,mv);
                        }
                }