diff options
author | Andy Clement <aclement@pivotal.io> | 2018-10-01 16:10:02 -0700 |
---|---|---|
committer | Andy Clement <aclement@pivotal.io> | 2018-10-01 16:10:02 -0700 |
commit | 749b9cb3ca8e4680fca4252b0d782b7154eccb75 (patch) | |
tree | c2abf1231aac79a08469c92b319b4882991bf3b7 /bcel-builder | |
parent | f6d9aaaf05eca3aaf06d3a769a83f302b0501dca (diff) | |
download | aspectj-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')
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) { } } |