aboutsummaryrefslogtreecommitdiffstats
path: root/bcel-builder
diff options
context:
space:
mode:
authorAndy Clement <aclement@pivotal.io>2018-10-01 16:10:02 -0700
committerAndy Clement <aclement@pivotal.io>2018-10-01 16:10:02 -0700
commit749b9cb3ca8e4680fca4252b0d782b7154eccb75 (patch)
treec2abf1231aac79a08469c92b319b4882991bf3b7 /bcel-builder
parentf6d9aaaf05eca3aaf06d3a769a83f302b0501dca (diff)
downloadaspectj-749b9cb3ca8e4680fca4252b0d782b7154eccb75.tar.gz
aspectj-749b9cb3ca8e4680fca4252b0d782b7154eccb75.zip
More fixes for 1.9.2V1_9_2_RC2
- update to more recent JDT to pickup Nestmates fix - bcel updated for NestMembers/NestHost attributes - testcases for nestmates
Diffstat (limited to 'bcel-builder')
-rw-r--r--bcel-builder/src/org/aspectj/apache/bcel/Constants.java10
-rw-r--r--bcel-builder/src/org/aspectj/apache/bcel/classfile/Attribute.java5
-rw-r--r--bcel-builder/src/org/aspectj/apache/bcel/classfile/ClassVisitor.java4
-rw-r--r--bcel-builder/src/org/aspectj/apache/bcel/classfile/NestHost.java118
-rw-r--r--bcel-builder/src/org/aspectj/apache/bcel/classfile/NestMembers.java131
-rw-r--r--bcel-builder/verifier-src/org/aspectj/apache/bcel/verifier/DescendingVisitor.java70
-rw-r--r--bcel-builder/verifier-src/org/aspectj/apache/bcel/verifier/EmptyClassVisitor.java162
7 files changed, 443 insertions, 57 deletions
diff --git a/bcel-builder/src/org/aspectj/apache/bcel/Constants.java b/bcel-builder/src/org/aspectj/apache/bcel/Constants.java
index 9ef04f4ff..c75496527 100644
--- a/bcel-builder/src/org/aspectj/apache/bcel/Constants.java
+++ b/bcel-builder/src/org/aspectj/apache/bcel/Constants.java
@@ -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"
};
/**
diff --git a/bcel-builder/src/org/aspectj/apache/bcel/classfile/Attribute.java b/bcel-builder/src/org/aspectj/apache/bcel/classfile/Attribute.java
index edc8d22c9..daeb59a38 100644
--- a/bcel-builder/src/org/aspectj/apache/bcel/classfile/Attribute.java
+++ b/bcel-builder/src/org/aspectj/apache/bcel/classfile/Attribute.java
@@ -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);
}
diff --git a/bcel-builder/src/org/aspectj/apache/bcel/classfile/ClassVisitor.java b/bcel-builder/src/org/aspectj/apache/bcel/classfile/ClassVisitor.java
index 654cd8146..5c60f818f 100644
--- a/bcel-builder/src/org/aspectj/apache/bcel/classfile/ClassVisitor.java
+++ b/bcel-builder/src/org/aspectj/apache/bcel/classfile/ClassVisitor.java
@@ -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
index 000000000..52d312659
--- /dev/null
+++ b/bcel-builder/src/org/aspectj/apache/bcel/classfile/NestHost.java
@@ -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
index 000000000..9d273966f
--- /dev/null
+++ b/bcel-builder/src/org/aspectj/apache/bcel/classfile/NestMembers.java
@@ -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()+")";
+ }
+}
diff --git a/bcel-builder/verifier-src/org/aspectj/apache/bcel/verifier/DescendingVisitor.java b/bcel-builder/verifier-src/org/aspectj/apache/bcel/verifier/DescendingVisitor.java
index 6dc3eae46..3335f1ea8 100644
--- a/bcel-builder/verifier-src/org/aspectj/apache/bcel/verifier/DescendingVisitor.java
+++ b/bcel-builder/verifier-src/org/aspectj/apache/bcel/verifier/DescendingVisitor.java
@@ -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();
+ }
}
diff --git a/bcel-builder/verifier-src/org/aspectj/apache/bcel/verifier/EmptyClassVisitor.java b/bcel-builder/verifier-src/org/aspectj/apache/bcel/verifier/EmptyClassVisitor.java
index aca992fbf..1ca901650 100644
--- a/bcel-builder/verifier-src/org/aspectj/apache/bcel/verifier/EmptyClassVisitor.java
+++ b/bcel-builder/verifier-src/org/aspectj/apache/bcel/verifier/EmptyClassVisitor.java
@@ -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) { }
}