aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndy Clement <aclement@pivotal.io>2016-06-17 10:40:29 -0700
committerAndy Clement <aclement@pivotal.io>2016-06-17 10:40:29 -0700
commit34f33f6948799dd57aeef1d8422f796fbd6d416d (patch)
tree805c1d6cd7bd2c6868e519f6c34a8f3fcb7f634c
parentf8b86ff2c03a77e47e87573b59bc43c57cfdee38 (diff)
downloadaspectj-34f33f6948799dd57aeef1d8422f796fbd6d416d.tar.gz
aspectj-34f33f6948799dd57aeef1d8422f796fbd6d416d.zip
Upgrading to latest 1.9 compiler
-rw-r--r--bcel-builder/src/org/aspectj/apache/bcel/classfile/ClassVisitor.java2
-rw-r--r--bcel-builder/src/org/aspectj/apache/bcel/classfile/Module.java11
-rw-r--r--bcel-builder/verifier-src/org/aspectj/apache/bcel/verifier/DescendingVisitor.java747
-rw-r--r--bcel-builder/verifier-src/org/aspectj/apache/bcel/verifier/EmptyClassVisitor.java2
-rw-r--r--lib/bcel/bcel-src.zipbin327765 -> 331349 bytes
-rw-r--r--lib/bcel/bcel-verifier-src.zipbin183372 -> 183333 bytes
-rw-r--r--lib/bcel/bcel-verifier.jarbin161556 -> 161637 bytes
-rw-r--r--lib/bcel/bcel.jarbin291238 -> 298851 bytes
-rw-r--r--org.aspectj.ajdt.core/src/org/aspectj/ajdt/ajc/BuildArgParser.java5
-rw-r--r--org.aspectj.ajdt.core/src/org/aspectj/ajdt/ajc/messages.properties7
-rw-r--r--org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/AdviceDeclaration.java3
-rw-r--r--org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/KnownMessageSend.java2
-rw-r--r--org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/ValidateAtAspectJAnnotationsVisitor.java2
-rw-r--r--org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/EclipseSourceType.java2
-rw-r--r--org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/problem/AjProblemReporter.java5
-rw-r--r--org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/core/builder/AjBuildManager.java2
-rw-r--r--org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/core/builder/AjCompilerOptions.java20
-rw-r--r--org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/core/builder/AsmHierarchyBuilder.java7
-rw-r--r--org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/core/builder/CompactTypeStructureRepresentation.java18
-rw-r--r--org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/core/builder/EclipseClassPathManager.java3
-rw-r--r--org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/core/builder/StatefulNameEnvironment.java96
-rw-r--r--org.aspectj.ajdt.core/testsrc/org/aspectj/ajdt/internal/compiler/batch/BasicCommandTestCase.java8
-rw-r--r--org.aspectj.ajdt.core/testsrc/org/aspectj/ajdt/internal/compiler/batch/BcweaverJarMaker.java47
-rw-r--r--org.aspectj.ajdt.core/testsrc/org/aspectj/ajdt/internal/compiler/batch/BinaryFormsTestCase.java4
-rw-r--r--org.aspectj.ajdt.core/testsrc/org/aspectj/ajdt/internal/core/builder/AsmBuilderTest.java5
-rw-r--r--org.aspectj.ajdt.core/testsrc/org/aspectj/tools/ajc/AjcTestCase.java2
-rw-r--r--org.eclipse.jdt.core/jdtcore-for-aspectj-src.zipbin4525719 -> 4711772 bytes
-rw-r--r--org.eclipse.jdt.core/jdtcore-for-aspectj.jarbin8409654 -> 8768037 bytes
-rw-r--r--tests/bugs1810/493554/example/aspect/FooAspect$ajcMightHaveAspect.classbin0 -> 434 bytes
-rw-r--r--tests/bugs1810/493554/example/aspect/FooAspect.classbin0 -> 4177 bytes
-rw-r--r--tests/bugs1810/493554/example/dep/Dep.classbin0 -> 2375 bytes
-rw-r--r--tests/bugs1810/493554/example/kusedep/Cmd.classbin0 -> 663 bytes
-rw-r--r--tests/bugs1810/generics/Code.java9
-rw-r--r--tests/bugs190/modules/aspect1/Azpect1.java5
-rwxr-xr-xtests/bugs190/modules/cpl.sh4
-rw-r--r--tests/bugs190/modules/module1/Code.java6
-rw-r--r--tests/bugs190/modules/module1/a/b/c/Code.classbin0 -> 425 bytes
-rw-r--r--tests/bugs190/modules/module1/module-info.classbin0 -> 124 bytes
-rw-r--r--tests/bugs190/modules/module1/module-info.java2
-rw-r--r--tests/bugs190/modules/module1/module-one.jarbin0 -> 1315 bytes
-rw-r--r--tests/bugs190/modules/play/m11
-rw-r--r--tests/bugs190/modules/play/src/a/module-info.java2
-rw-r--r--tests/bugs190/modules/play/src/b/module-info.java2
-rw-r--r--tests/src/org/aspectj/systemtest/AllTests19.java28
-rw-r--r--tests/src/org/aspectj/systemtest/ajc190/Ajc190Tests.java40
-rw-r--r--tests/src/org/aspectj/systemtest/ajc190/AllTestsAspectJ190.java27
-rw-r--r--tests/src/org/aspectj/systemtest/ajc190/ajc190.xml10
-rw-r--r--tests/testsrc/org/aspectj/tests/TestsModuleTests.java5
-rw-r--r--weaver5/java5-testsrc/org/aspectj/weaver/MemberTestCase15.java2
-rw-r--r--weaver5/java5-testsrc/org/aspectj/weaver/reflect/ReflectionWorldTest.java25
50 files changed, 714 insertions, 464 deletions
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 9280083a8..f72da47ee 100644
--- a/bcel-builder/src/org/aspectj/apache/bcel/classfile/ClassVisitor.java
+++ b/bcel-builder/src/org/aspectj/apache/bcel/classfile/ClassVisitor.java
@@ -162,4 +162,6 @@ public interface ClassVisitor {
public void visitLocalVariableTypeTable(LocalVariableTypeTable obj);
public void visitMethodParameters(MethodParameters methodParameters);
+
+ public void visitModule(Module m);
}
diff --git a/bcel-builder/src/org/aspectj/apache/bcel/classfile/Module.java b/bcel-builder/src/org/aspectj/apache/bcel/classfile/Module.java
index 217f5fbd0..3041add34 100644
--- a/bcel-builder/src/org/aspectj/apache/bcel/classfile/Module.java
+++ b/bcel-builder/src/org/aspectj/apache/bcel/classfile/Module.java
@@ -388,13 +388,14 @@ public final class Module extends Attribute {
/**
* @return deep copy of this attribute //
*/
- // @Override
- // public Attribute copy(ConstantPool constant_pool) {
- // return (SourceFile) clone();
- // }
+// @Override
+// public Attribute copy(ConstantPool constant_pool) {
+// return (Module) clone();
+// }
+
@Override
public void accept(ClassVisitor v) {
- v.visitSourceFile(this);
+ v.visitModule(this);
}
public Require[] getRequires() {
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 251b94663..be8a558f3 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
@@ -92,6 +92,7 @@ import org.aspectj.apache.bcel.classfile.LocalVariableTable;
import org.aspectj.apache.bcel.classfile.LocalVariableTypeTable;
import org.aspectj.apache.bcel.classfile.Method;
import org.aspectj.apache.bcel.classfile.MethodParameters;
+import org.aspectj.apache.bcel.classfile.Module;
import org.aspectj.apache.bcel.classfile.Signature;
import org.aspectj.apache.bcel.classfile.SourceFile;
import org.aspectj.apache.bcel.classfile.StackMap;
@@ -107,375 +108,387 @@ import org.aspectj.apache.bcel.classfile.annotation.RuntimeVisParamAnnos;
import org.aspectj.apache.bcel.classfile.annotation.RuntimeVisTypeAnnos;
/**
- * Traverses a JavaClass with another Visitor object 'piggy-backed'
- * that is applied to all components of a JavaClass object. I.e. this
- * class supplies the traversal strategy, other classes can make use
- * of it.
+ * Traverses a JavaClass with another Visitor object 'piggy-backed' that is
+ * applied to all components of a JavaClass object. I.e. this class supplies the
+ * traversal strategy, other classes can make use of it.
*
* @version $Id: DescendingVisitor.java,v 1.4 2009/09/15 19:40:22 aclement Exp $
- * @author <A HREF="mailto:markus.dahm@berlin.de">M. Dahm</A>
+ * @author <A HREF="mailto:markus.dahm@berlin.de">M. Dahm</A>
*/
public class DescendingVisitor implements ClassVisitor {
- private JavaClass clazz;
- private ClassVisitor visitor;
- private Stack<Object> stack = new Stack<Object>();
-
- /** @return container of current entitity, i.e., predecessor during traversal
- */
- public Object predecessor() {
- return predecessor(0);
- }
-
- /**
- * @param level nesting level, i.e., 0 returns the direct predecessor
- * @return container of current entitity, i.e., predecessor during traversal
- */
- public Object predecessor(int level) {
- int size = stack.size();
-
- if((size < 2) || (level < 0))
- return null;
- else
- return stack.elementAt(size - (level + 2)); // size - 1 == current
- }
-
- /** @return current object
- */
- public Object current() {
- return stack.peek();
- }
-
- /**
- * @param clazz Class to traverse
- * @param visitor visitor object to apply to all components
- */
- public DescendingVisitor(JavaClass clazz, ClassVisitor visitor) {
- this.clazz = clazz;
- this.visitor = visitor;
- }
-
- /**
- * Start traversal.
- */
- public void visit() { clazz.accept(this); }
-
- public void visitJavaClass(JavaClass clazz) {
- stack.push(clazz);
- clazz.accept(visitor);
-
- Field[] fields = clazz.getFields();
- for(int i=0; i < fields.length; i++)
- fields[i].accept(this);
-
- Method[] methods = clazz.getMethods();
- for(int i=0; i < methods.length; i++)
- methods[i].accept(this);
-
- AttributeUtils.accept(clazz.getAttributes(),visitor);
-// clazz.getAttributes().accept(this);
- clazz.getConstantPool().accept(this);
- stack.pop();
- }
-
- public void visitField(Field field) {
- stack.push(field);
- field.accept(visitor);
- AttributeUtils.accept(field.getAttributes(),visitor);
-// field.getAttributes().accept(this);
- stack.pop();
- }
-
- public void visitConstantValue(ConstantValue cv) {
- stack.push(cv);
- cv.accept(visitor);
- stack.pop();
- }
-
- public void visitMethod(Method method) {
- stack.push(method);
- method.accept(visitor);
- AttributeUtils.accept(method.getAttributes(),visitor);
- stack.pop();
- }
-
- public void visitExceptionTable(ExceptionTable table) {
- stack.push(table);
- table.accept(visitor);
- stack.pop();
- }
-
- public void visitCode(Code code) {
- stack.push(code);
- code.accept(visitor);
-
- CodeException[] table = code.getExceptionTable();
- for(int i=0; i < table.length; i++)
- table[i].accept(this);
-
- Attribute[] attributes = code.getAttributes();
- for(int i=0; i < attributes.length; i++)
- attributes[i].accept(this);
- stack.pop();
- }
-
- public void visitCodeException(CodeException ce) {
- stack.push(ce);
- ce.accept(visitor);
- stack.pop();
- }
-
- public void visitLineNumberTable(LineNumberTable table) {
- stack.push(table);
- table.accept(visitor);
-
- LineNumber[] numbers = table.getLineNumberTable();
- for(int i=0; i < numbers.length; i++)
- numbers[i].accept(this);
- stack.pop();
- }
-
- public void visitLineNumber(LineNumber number) {
- stack.push(number);
- number.accept(visitor);
- stack.pop();
- }
-
- public void visitLocalVariableTable(LocalVariableTable table) {
- stack.push(table);
- table.accept(visitor);
-
- LocalVariable[] vars = table.getLocalVariableTable();
- for(int i=0; i < vars.length; i++)
- vars[i].accept(this);
- stack.pop();
- }
-
- public void visitStackMap(StackMap table) {
- stack.push(table);
- table.accept(visitor);
-
- StackMapEntry[] vars = table.getStackMap();
-
- for(int i=0; i < vars.length; i++)
- vars[i].accept(this);
- stack.pop();
- }
-
- public void visitStackMapEntry(StackMapEntry var) {
- stack.push(var);
- var.accept(visitor);
- stack.pop();
- }
-
- public void visitLocalVariable(LocalVariable var) {
- stack.push(var);
- var.accept(visitor);
- stack.pop();
- }
-
- public void visitConstantPool(ConstantPool cp) {
- stack.push(cp);
- cp.accept(visitor);
-
- Constant[] constants = cp.getConstantPool();
- for(int i=1; i < constants.length; i++) {
- if(constants[i] != null)
- constants[i].accept(this);
- }
-
- stack.pop();
- }
-
- public void visitConstantClass(ConstantClass constant) {
- stack.push(constant);
- constant.accept(visitor);
- stack.pop();
- }
-
- public void visitConstantDouble(ConstantDouble constant) {
- stack.push(constant);
- constant.accept(visitor);
- stack.pop();
- }
-
- public void visitConstantFieldref(ConstantFieldref constant) {
- stack.push(constant);
- constant.accept(visitor);
- stack.pop();
- }
-
- public void visitConstantFloat(ConstantFloat constant) {
- stack.push(constant);
- constant.accept(visitor);
- stack.pop();
- }
-
- public void visitConstantInteger(ConstantInteger constant) {
- stack.push(constant);
- constant.accept(visitor);
- stack.pop();
- }
-
- public void visitConstantInterfaceMethodref(ConstantInterfaceMethodref constant) {
- stack.push(constant);
- constant.accept(visitor);
- stack.pop();
- }
-
- public void visitConstantLong(ConstantLong constant) {
- stack.push(constant);
- constant.accept(visitor);
- stack.pop();
- }
-
- public void visitConstantMethodref(ConstantMethodref constant) {
- stack.push(constant);
- constant.accept(visitor);
- stack.pop();
- }
-
- public void visitConstantMethodHandle(ConstantMethodHandle constant) {
- throw new IllegalStateException("nyi");
- }
-
- public void visitConstantMethodType(ConstantMethodType obj) {
- throw new IllegalStateException("nyi");
- }
-
- public void visitConstantInvokeDynamic(ConstantInvokeDynamic obj) {
- throw new IllegalStateException("nyi");
- }
-
- public void visitBootstrapMethods(BootstrapMethods obj) {
- throw new IllegalStateException("nyi");
- }
-
- public void visitConstantNameAndType(ConstantNameAndType constant) {
- stack.push(constant);
- constant.accept(visitor);
- stack.pop();
- }
-
- public void visitConstantString(ConstantString constant) {
- stack.push(constant);
- constant.accept(visitor);
- stack.pop();
- }
-
- public void visitConstantUtf8(ConstantUtf8 constant) {
- stack.push(constant);
- constant.accept(visitor);
- stack.pop();
- }
-
- public void visitInnerClasses(InnerClasses ic) {
- stack.push(ic);
- ic.accept(visitor);
-
- InnerClass[] ics = ic.getInnerClasses();
- for(int i=0; i < ics.length; i++)
- ics[i].accept(this);
- stack.pop();
- }
-
- public void visitInnerClass(InnerClass inner) {
- stack.push(inner);
- inner.accept(visitor);
- stack.pop();
- }
-
- public void visitDeprecated(Deprecated attribute) {
- stack.push(attribute);
- attribute.accept(visitor);
- stack.pop();
- }
-
- public void visitSignature(Signature attribute) {
- stack.push(attribute);
- attribute.accept(visitor);
- stack.pop();
- }
-
- // J5SUPPORT:
- public void visitEnclosingMethod(EnclosingMethod attribute) {
- stack.push(attribute);
- attribute.accept(visitor);
- stack.pop();
- }
-
- public void visitRuntimeVisibleAnnotations(RuntimeVisAnnos attribute) {
- stack.push(attribute);
- attribute.accept(visitor);
- stack.pop();
- }
-
- public void visitRuntimeInvisibleAnnotations(RuntimeInvisAnnos attribute) {
- stack.push(attribute);
- attribute.accept(visitor);
- stack.pop();
- }
-
- public void visitRuntimeVisibleParameterAnnotations(RuntimeVisParamAnnos attribute) {
- stack.push(attribute);
- attribute.accept(visitor);
- stack.pop();
- }
-
- public void visitRuntimeInvisibleParameterAnnotations(RuntimeInvisParamAnnos attribute) {
- stack.push(attribute);
- attribute.accept(visitor);
- stack.pop();
- }
-
- public void visitRuntimeVisibleTypeAnnotations(RuntimeVisTypeAnnos attribute) {
- stack.push(attribute);
- attribute.accept(visitor);
- stack.pop();
- }
-
- public void visitMethodParameters(MethodParameters attribute) {
- stack.push(attribute);
- attribute.accept(visitor);
- stack.pop();
- }
-
- public void visitRuntimeInvisibleTypeAnnotations(RuntimeInvisTypeAnnos attribute) {
- stack.push(attribute);
- attribute.accept(visitor);
- stack.pop();
- }
-
- public void visitAnnotationDefault(AnnotationDefault attribute) {
- stack.push(attribute);
- attribute.accept(visitor);
- stack.pop();
- }
-
- public void visitLocalVariableTypeTable(LocalVariableTypeTable table) {
- stack.push(table);
- table.accept(visitor);
-
- LocalVariable[] vars = table.getLocalVariableTypeTable();
- for(int i=0; i < vars.length; i++)
- vars[i].accept(this);
- stack.pop();
- }
-
- public void visitSourceFile(SourceFile attribute) {
- stack.push(attribute);
- attribute.accept(visitor);
- stack.pop();
- }
-
- public void visitSynthetic(Synthetic attribute) {
- stack.push(attribute);
- attribute.accept(visitor);
- stack.pop();
- }
-
- public void visitUnknown(Unknown attribute) {
- stack.push(attribute);
- attribute.accept(visitor);
- stack.pop();
- }
+ private JavaClass clazz;
+ private ClassVisitor visitor;
+ private Stack<Object> stack = new Stack<Object>();
+
+ /**
+ * @return container of current entitity, i.e., predecessor during traversal
+ */
+ public Object predecessor() {
+ return predecessor(0);
+ }
+
+ /**
+ * @param level
+ * nesting level, i.e., 0 returns the direct predecessor
+ * @return container of current entitity, i.e., predecessor during traversal
+ */
+ public Object predecessor(int level) {
+ int size = stack.size();
+
+ if ((size < 2) || (level < 0))
+ return null;
+ else
+ return stack.elementAt(size - (level + 2)); // size - 1 == current
+ }
+
+ /**
+ * @return current object
+ */
+ public Object current() {
+ return stack.peek();
+ }
+
+ /**
+ * @param clazz
+ * Class to traverse
+ * @param visitor
+ * visitor object to apply to all components
+ */
+ public DescendingVisitor(JavaClass clazz, ClassVisitor visitor) {
+ this.clazz = clazz;
+ this.visitor = visitor;
+ }
+
+ /**
+ * Start traversal.
+ */
+ public void visit() {
+ clazz.accept(this);
+ }
+
+ public void visitJavaClass(JavaClass clazz) {
+ stack.push(clazz);
+ clazz.accept(visitor);
+
+ Field[] fields = clazz.getFields();
+ for (int i = 0; i < fields.length; i++)
+ fields[i].accept(this);
+
+ Method[] methods = clazz.getMethods();
+ for (int i = 0; i < methods.length; i++)
+ methods[i].accept(this);
+
+ AttributeUtils.accept(clazz.getAttributes(), visitor);
+ // clazz.getAttributes().accept(this);
+ clazz.getConstantPool().accept(this);
+ stack.pop();
+ }
+
+ public void visitField(Field field) {
+ stack.push(field);
+ field.accept(visitor);
+ AttributeUtils.accept(field.getAttributes(), visitor);
+ // field.getAttributes().accept(this);
+ stack.pop();
+ }
+
+ public void visitConstantValue(ConstantValue cv) {
+ stack.push(cv);
+ cv.accept(visitor);
+ stack.pop();
+ }
+
+ public void visitMethod(Method method) {
+ stack.push(method);
+ method.accept(visitor);
+ AttributeUtils.accept(method.getAttributes(), visitor);
+ stack.pop();
+ }
+
+ public void visitExceptionTable(ExceptionTable table) {
+ stack.push(table);
+ table.accept(visitor);
+ stack.pop();
+ }
+
+ public void visitCode(Code code) {
+ stack.push(code);
+ code.accept(visitor);
+
+ CodeException[] table = code.getExceptionTable();
+ for (int i = 0; i < table.length; i++)
+ table[i].accept(this);
+
+ Attribute[] attributes = code.getAttributes();
+ for (int i = 0; i < attributes.length; i++)
+ attributes[i].accept(this);
+ stack.pop();
+ }
+
+ public void visitCodeException(CodeException ce) {
+ stack.push(ce);
+ ce.accept(visitor);
+ stack.pop();
+ }
+
+ public void visitLineNumberTable(LineNumberTable table) {
+ stack.push(table);
+ table.accept(visitor);
+
+ LineNumber[] numbers = table.getLineNumberTable();
+ for (int i = 0; i < numbers.length; i++)
+ numbers[i].accept(this);
+ stack.pop();
+ }
+
+ public void visitLineNumber(LineNumber number) {
+ stack.push(number);
+ number.accept(visitor);
+ stack.pop();
+ }
+
+ public void visitLocalVariableTable(LocalVariableTable table) {
+ stack.push(table);
+ table.accept(visitor);
+
+ LocalVariable[] vars = table.getLocalVariableTable();
+ for (int i = 0; i < vars.length; i++)
+ vars[i].accept(this);
+ stack.pop();
+ }
+
+ public void visitStackMap(StackMap table) {
+ stack.push(table);
+ table.accept(visitor);
+
+ StackMapEntry[] vars = table.getStackMap();
+
+ for (int i = 0; i < vars.length; i++)
+ vars[i].accept(this);
+ stack.pop();
+ }
+
+ public void visitStackMapEntry(StackMapEntry var) {
+ stack.push(var);
+ var.accept(visitor);
+ stack.pop();
+ }
+
+ public void visitLocalVariable(LocalVariable var) {
+ stack.push(var);
+ var.accept(visitor);
+ stack.pop();
+ }
+
+ public void visitConstantPool(ConstantPool cp) {
+ stack.push(cp);
+ cp.accept(visitor);
+
+ Constant[] constants = cp.getConstantPool();
+ for (int i = 1; i < constants.length; i++) {
+ if (constants[i] != null)
+ constants[i].accept(this);
+ }
+
+ stack.pop();
+ }
+
+ public void visitConstantClass(ConstantClass constant) {
+ stack.push(constant);
+ constant.accept(visitor);
+ stack.pop();
+ }
+
+ public void visitConstantDouble(ConstantDouble constant) {
+ stack.push(constant);
+ constant.accept(visitor);
+ stack.pop();
+ }
+
+ public void visitConstantFieldref(ConstantFieldref constant) {
+ stack.push(constant);
+ constant.accept(visitor);
+ stack.pop();
+ }
+
+ public void visitConstantFloat(ConstantFloat constant) {
+ stack.push(constant);
+ constant.accept(visitor);
+ stack.pop();
+ }
+
+ public void visitConstantInteger(ConstantInteger constant) {
+ stack.push(constant);
+ constant.accept(visitor);
+ stack.pop();
+ }
+
+ public void visitConstantInterfaceMethodref(ConstantInterfaceMethodref constant) {
+ stack.push(constant);
+ constant.accept(visitor);
+ stack.pop();
+ }
+
+ public void visitConstantLong(ConstantLong constant) {
+ stack.push(constant);
+ constant.accept(visitor);
+ stack.pop();
+ }
+
+ public void visitConstantMethodref(ConstantMethodref constant) {
+ stack.push(constant);
+ constant.accept(visitor);
+ stack.pop();
+ }
+
+ public void visitConstantMethodHandle(ConstantMethodHandle constant) {
+ throw new IllegalStateException("nyi");
+ }
+
+ public void visitConstantMethodType(ConstantMethodType obj) {
+ throw new IllegalStateException("nyi");
+ }
+
+ public void visitConstantInvokeDynamic(ConstantInvokeDynamic obj) {
+ throw new IllegalStateException("nyi");
+ }
+
+ public void visitBootstrapMethods(BootstrapMethods obj) {
+ throw new IllegalStateException("nyi");
+ }
+
+ public void visitConstantNameAndType(ConstantNameAndType constant) {
+ stack.push(constant);
+ constant.accept(visitor);
+ stack.pop();
+ }
+
+ public void visitConstantString(ConstantString constant) {
+ stack.push(constant);
+ constant.accept(visitor);
+ stack.pop();
+ }
+
+ public void visitConstantUtf8(ConstantUtf8 constant) {
+ stack.push(constant);
+ constant.accept(visitor);
+ stack.pop();
+ }
+
+ public void visitInnerClasses(InnerClasses ic) {
+ stack.push(ic);
+ ic.accept(visitor);
+
+ InnerClass[] ics = ic.getInnerClasses();
+ for (int i = 0; i < ics.length; i++)
+ ics[i].accept(this);
+ stack.pop();
+ }
+
+ public void visitInnerClass(InnerClass inner) {
+ stack.push(inner);
+ inner.accept(visitor);
+ stack.pop();
+ }
+
+ public void visitDeprecated(Deprecated attribute) {
+ stack.push(attribute);
+ attribute.accept(visitor);
+ stack.pop();
+ }
+
+ public void visitSignature(Signature attribute) {
+ stack.push(attribute);
+ attribute.accept(visitor);
+ stack.pop();
+ }
+
+ // J5SUPPORT:
+ public void visitEnclosingMethod(EnclosingMethod attribute) {
+ stack.push(attribute);
+ attribute.accept(visitor);
+ stack.pop();
+ }
+
+ public void visitRuntimeVisibleAnnotations(RuntimeVisAnnos attribute) {
+ stack.push(attribute);
+ attribute.accept(visitor);
+ stack.pop();
+ }
+
+ public void visitRuntimeInvisibleAnnotations(RuntimeInvisAnnos attribute) {
+ stack.push(attribute);
+ attribute.accept(visitor);
+ stack.pop();
+ }
+
+ public void visitRuntimeVisibleParameterAnnotations(RuntimeVisParamAnnos attribute) {
+ stack.push(attribute);
+ attribute.accept(visitor);
+ stack.pop();
+ }
+
+ public void visitRuntimeInvisibleParameterAnnotations(RuntimeInvisParamAnnos attribute) {
+ stack.push(attribute);
+ attribute.accept(visitor);
+ stack.pop();
+ }
+
+ public void visitRuntimeVisibleTypeAnnotations(RuntimeVisTypeAnnos attribute) {
+ stack.push(attribute);
+ attribute.accept(visitor);
+ stack.pop();
+ }
+
+ public void visitMethodParameters(MethodParameters attribute) {
+ stack.push(attribute);
+ attribute.accept(visitor);
+ stack.pop();
+ }
+
+ public void visitRuntimeInvisibleTypeAnnotations(RuntimeInvisTypeAnnos attribute) {
+ stack.push(attribute);
+ attribute.accept(visitor);
+ stack.pop();
+ }
+
+ public void visitAnnotationDefault(AnnotationDefault attribute) {
+ stack.push(attribute);
+ attribute.accept(visitor);
+ stack.pop();
+ }
+
+ public void visitLocalVariableTypeTable(LocalVariableTypeTable table) {
+ stack.push(table);
+ table.accept(visitor);
+
+ LocalVariable[] vars = table.getLocalVariableTypeTable();
+ for (int i = 0; i < vars.length; i++)
+ vars[i].accept(this);
+ stack.pop();
+ }
+
+ public void visitSourceFile(SourceFile attribute) {
+ stack.push(attribute);
+ attribute.accept(visitor);
+ stack.pop();
+ }
+
+ public void visitSynthetic(Synthetic attribute) {
+ stack.push(attribute);
+ attribute.accept(visitor);
+ stack.pop();
+ }
+
+ public void visitUnknown(Unknown attribute) {
+ stack.push(attribute);
+ attribute.accept(visitor);
+ stack.pop();
+ }
+
+ public void visitModule(Module 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 f1b61c1ac..117d8d320 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
@@ -87,6 +87,7 @@ import org.aspectj.apache.bcel.classfile.LocalVariableTable;
import org.aspectj.apache.bcel.classfile.LocalVariableTypeTable;
import org.aspectj.apache.bcel.classfile.Method;
import org.aspectj.apache.bcel.classfile.MethodParameters;
+import org.aspectj.apache.bcel.classfile.Module;
import org.aspectj.apache.bcel.classfile.Signature;
import org.aspectj.apache.bcel.classfile.SourceFile;
import org.aspectj.apache.bcel.classfile.StackMap;
@@ -150,6 +151,7 @@ public class EmptyClassVisitor implements ClassVisitor {
public void visitUnknown(Unknown obj) {}
public void visitStackMap(StackMap obj) {}
public void visitStackMapEntry(StackMapEntry obj) {}
+ public void visitModule(Module obj) {}
// J5SUPPORT:
public void visitEnclosingMethod(EnclosingMethod obj) {}
diff --git a/lib/bcel/bcel-src.zip b/lib/bcel/bcel-src.zip
index 2d70911e5..3c34a94dc 100644
--- a/lib/bcel/bcel-src.zip
+++ b/lib/bcel/bcel-src.zip
Binary files differ
diff --git a/lib/bcel/bcel-verifier-src.zip b/lib/bcel/bcel-verifier-src.zip
index bf5a86a3e..e3f91ee82 100644
--- a/lib/bcel/bcel-verifier-src.zip
+++ b/lib/bcel/bcel-verifier-src.zip
Binary files differ
diff --git a/lib/bcel/bcel-verifier.jar b/lib/bcel/bcel-verifier.jar
index e6edce128..c3d035753 100644
--- a/lib/bcel/bcel-verifier.jar
+++ b/lib/bcel/bcel-verifier.jar
Binary files differ
diff --git a/lib/bcel/bcel.jar b/lib/bcel/bcel.jar
index d008015dd..e7bcdb90b 100644
--- a/lib/bcel/bcel.jar
+++ b/lib/bcel/bcel.jar
Binary files differ
diff --git a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/ajc/BuildArgParser.java b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/ajc/BuildArgParser.java
index f6316cd00..26c6a41c2 100644
--- a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/ajc/BuildArgParser.java
+++ b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/ajc/BuildArgParser.java
@@ -721,11 +721,14 @@ public class BuildArgParser extends Main {
} else if (arg.equals("-1.8")) {
buildConfig.setBehaveInJava5Way(true);
unparsedArgs.add("-1.8");
+ } else if (arg.equals("-1.9")) {
+ buildConfig.setBehaveInJava5Way(true);
+ unparsedArgs.add("-1.9");
} else if (arg.equals("-source")) {
if (args.size() > nextArgIndex) {
String level = ((ConfigParser.Arg) args.get(nextArgIndex)).getValue();
if (level.equals("1.5") || level.equals("5") || level.equals("1.6") || level.equals("6") || level.equals("1.7")
- || level.equals("7") || level.equals("8") || level.equals("1.8")) {
+ || level.equals("7") || level.equals("8") || level.equals("1.8") || level.equals("9") || level.equals("1.9")) {
buildConfig.setBehaveInJava5Way(true);
}
unparsedArgs.add("-source");
diff --git a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/ajc/messages.properties b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/ajc/messages.properties
index 94dd63e27..388e32548 100644
--- a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/ajc/messages.properties
+++ b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/ajc/messages.properties
@@ -64,8 +64,9 @@ Standard Eclipse compiler options:\n\
\ -1.6 -6 -6.0 use 1.6 compliance (-source 1.6 -target 1.6)\n\
\ -1.7 -7 -7.0 use 1.7 compliance (-source 1.7 -target 1.7)\n\
\ -1.8 -8 -8.0 use 1.8 compliance (-source 1.8 -target 1.8)\n\
-\ -source <version> set source level: 1.3 to 1.8 (or 5, 5.0, etc)\n\
-\ -target <version> set classfile target: 1.1 to 1.8 (or 5, 5.0, etc)\n\
+\ -1.9 -9 -9.0 use 1.9 compliance (-source 1.9 -target 1.9)\n\
+\ -source <version> set source level: 1.3 to 1.9 (or 5, 5.0, etc)\n\
+\ -target <version> set classfile target: 1.1 to 1.9 (or 5, 5.0, etc)\n\
\ \n\
\ Warning options:\n\
\ -deprecation + deprecation outside deprecated code\n\
@@ -250,7 +251,7 @@ configure.requiresJDK1.2orAbove = Need to use a JVM >= 1.2
configure.duplicateLog = duplicate log specification: {0}
configure.duplicateRepeat = duplicate repeat specification: {0}
configure.duplicateCompliance = duplicate compliance setting specification: {0}
-configure.source = invalid source option, source is either ''1.3'' or ''1.4'': {0}
+configure.source = invalid source option, source is in the range ''1.3'' > ''1.9'': {0}
configure.duplicateOutputPath = duplicate output path specification: {0}
configure.duplicateBootClasspath = duplicate bootclasspath specification: {0}
configure.invalidDebugOption = invalid debug option: {0}
diff --git a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/AdviceDeclaration.java b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/AdviceDeclaration.java
index 73e539e71..fa3e28ad0 100644
--- a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/AdviceDeclaration.java
+++ b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/AdviceDeclaration.java
@@ -80,10 +80,9 @@ public class AdviceDeclaration extends AjMethodDeclaration {
// override
protected int generateInfoAttributes(ClassFile classFile) {
- List l = new ArrayList(1);
+ List<EclipseAttributeAdapter> l = new ArrayList<>(1);
l.add(new EclipseAttributeAdapter(makeAttribute()));
addDeclarationStartLineAttribute(l, classFile);
-
return classFile.generateMethodInfoAttributes(binding, l);
}
diff --git a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/KnownMessageSend.java b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/KnownMessageSend.java
index 6cf6527b6..435016043 100644
--- a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/KnownMessageSend.java
+++ b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/KnownMessageSend.java
@@ -28,7 +28,7 @@ public class KnownMessageSend extends MessageSend {
this.receiver = receiver;
this.actualReceiverType = binding.declaringClass;
this.selector = binding.selector;
- constant = Constant.NotAConstant;
+ // constant = Constant.NotAConstant;
}
public void manageSyntheticAccessIfNecessary(BlockScope currentScope) {
diff --git a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/ValidateAtAspectJAnnotationsVisitor.java b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/ValidateAtAspectJAnnotationsVisitor.java
index fa63a3393..90ca34c45 100644
--- a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/ValidateAtAspectJAnnotationsVisitor.java
+++ b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/ValidateAtAspectJAnnotationsVisitor.java
@@ -476,7 +476,7 @@ public class ValidateAtAspectJAnnotationsVisitor extends ASTVisitor {
} else if (sma.memberValue instanceof NameReference
&& (((NameReference) sma.memberValue).binding instanceof FieldBinding)) {
Binding b = ((NameReference) sma.memberValue).binding;
- Constant c = ((FieldBinding) b).constant;
+ Constant c = ((FieldBinding) b).constant();
return c.stringValue();
}
}
diff --git a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/EclipseSourceType.java b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/EclipseSourceType.java
index dc82d4aac..f2acf2e9f 100644
--- a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/EclipseSourceType.java
+++ b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/EclipseSourceType.java
@@ -204,7 +204,7 @@ public class EclipseSourceType extends AbstractReferenceTypeDelegate {
return new String(sLit.source());
} else if (expr instanceof NameReference && (((NameReference) expr).binding instanceof FieldBinding)) {
Binding b = ((NameReference) expr).binding;
- Constant c = ((FieldBinding) b).constant;
+ Constant c = ((FieldBinding) b).constant();
return c.stringValue();
} else {
throw new BCException("Do not know how to recover pointcut definition from " + expr + " (type "
diff --git a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/problem/AjProblemReporter.java b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/problem/AjProblemReporter.java
index 88556fccf..2cb035a70 100644
--- a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/problem/AjProblemReporter.java
+++ b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/problem/AjProblemReporter.java
@@ -757,6 +757,11 @@ public class AjProblemReporter extends ProblemReporter {
public String getSupplementaryMessageInfo() {
return delegate.getSupplementaryMessageInfo();
}
+
+ @Override
+ public boolean isInfo() {
+ return delegate.isInfo();
+ }
}
public void duplicateMethodInType(AbstractMethodDeclaration methodDecl, boolean equalParameters, int severity) {
diff --git a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/core/builder/AjBuildManager.java b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/core/builder/AjBuildManager.java
index 0dda15cb1..164af6629 100644
--- a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/core/builder/AjBuildManager.java
+++ b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/core/builder/AjBuildManager.java
@@ -1021,7 +1021,7 @@ public class AjBuildManager implements IOutputClassFileNameProvider, IBinarySour
}
org.aspectj.ajdt.internal.compiler.CompilerAdapter.setCompilerAdapterFactory(this);
- final Map<?, ?> settings = buildConfig.getOptions().getMap();
+ final Map<String, String> settings = buildConfig.getOptions().getMap();
final BuildArgParser bMain = buildConfig.getBuildArgParser();
final org.aspectj.org.eclipse.jdt.internal.compiler.Compiler compiler = new org.aspectj.org.eclipse.jdt.internal.compiler.Compiler(
diff --git a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/core/builder/AjCompilerOptions.java b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/core/builder/AjCompilerOptions.java
index ceba72e30..62487a2b7 100644
--- a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/core/builder/AjCompilerOptions.java
+++ b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/core/builder/AjCompilerOptions.java
@@ -52,15 +52,15 @@ public class AjCompilerOptions extends CompilerOptions {
// constants for irritant levels
- public static final int InvalidAbsoluteTypeName = IrritantSet.GROUP2 | ASTNode.Bit20;
- public static final int InvalidWildCardTypeName = IrritantSet.GROUP2 | ASTNode.Bit21;
- public static final int UnresolvableMember = IrritantSet.GROUP2 | ASTNode.Bit22;
- public static final int TypeNotExposedToWeaver = IrritantSet.GROUP2 | ASTNode.Bit23;
- public static final int ShadowNotInStructure = IrritantSet.GROUP2 | ASTNode.Bit24;
- public static final int UnmatchedSuperTypeInCall = IrritantSet.GROUP2 | ASTNode.Bit25;
- public static final int CannotImplementLazyTJP = IrritantSet.GROUP2 | ASTNode.Bit26;
- public static final int NeedSerialVersionUIDField = IrritantSet.GROUP2 | ASTNode.Bit27;
- public static final int IncompatibleSerialVersion = IrritantSet.GROUP2 | ASTNode.Bit28;
+ public static final int InvalidAbsoluteTypeName = IrritantSet.GROUP3 | ASTNode.Bit1;
+ public static final int InvalidWildCardTypeName = IrritantSet.GROUP3 | ASTNode.Bit2;
+ public static final int UnresolvableMember = IrritantSet.GROUP3 | ASTNode.Bit3;
+ public static final int TypeNotExposedToWeaver = IrritantSet.GROUP3 | ASTNode.Bit4;
+ public static final int ShadowNotInStructure = IrritantSet.GROUP3 | ASTNode.Bit5;
+ public static final int UnmatchedSuperTypeInCall = IrritantSet.GROUP3 | ASTNode.Bit6;
+ public static final int CannotImplementLazyTJP = IrritantSet.GROUP3 | ASTNode.Bit7;
+ public static final int NeedSerialVersionUIDField = IrritantSet.GROUP3 | ASTNode.Bit8;
+ public static final int IncompatibleSerialVersion = IrritantSet.GROUP3 | ASTNode.Bit9;
public boolean terminateAfterCompilation = false;
public boolean xSerializableAspects = false;
@@ -128,7 +128,7 @@ public class AjCompilerOptions extends CompilerOptions {
*
* @see org.eclipse.jdt.internal.compiler.impl.CompilerOptions#getMap()
*/
- public Map getMap() {
+ public Map<String,String> getMap() {
Map<String,String> map = super.getMap();
// now add AspectJ additional options
map.put(OPTION_ReportInvalidAbsoluteTypeName, getSeverityString(InvalidAbsoluteTypeName));
diff --git a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/core/builder/AsmHierarchyBuilder.java b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/core/builder/AsmHierarchyBuilder.java
index dd38f7750..7da62b87c 100644
--- a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/core/builder/AsmHierarchyBuilder.java
+++ b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/core/builder/AsmHierarchyBuilder.java
@@ -485,7 +485,12 @@ public class AsmHierarchyBuilder extends ASTVisitor {
}
}
- ((IProgramElement) stack.peek()).addChild(peNode);
+ IProgramElement ipe = (IProgramElement)stack.peek();
+ if (ipe!=null) {
+ // With AspectJ 1.8.9 the type structure must be slightly different as the guard
+ // is required (the null is due to a default constructor).
+ ((IProgramElement) stack.peek()).addChild(peNode);
+ }
stack.push(peNode);
return true;
}
diff --git a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/core/builder/CompactTypeStructureRepresentation.java b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/core/builder/CompactTypeStructureRepresentation.java
index 6770b647a..e48c6cd0f 100644
--- a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/core/builder/CompactTypeStructureRepresentation.java
+++ b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/core/builder/CompactTypeStructureRepresentation.java
@@ -19,6 +19,9 @@ import org.aspectj.org.eclipse.jdt.internal.compiler.env.IBinaryMethod;
import org.aspectj.org.eclipse.jdt.internal.compiler.env.IBinaryNestedType;
import org.aspectj.org.eclipse.jdt.internal.compiler.env.IBinaryType;
import org.aspectj.org.eclipse.jdt.internal.compiler.env.IBinaryTypeAnnotation;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.ITypeAnnotationWalker;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding.ExternalAnnotationStatus;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment;
/**
* Used to determine if a type has structurally changed during incremental compilation. At the end of compilation we create one of
@@ -181,4 +184,19 @@ public class CompactTypeStructureRepresentation implements IBinaryType {
return typeAnnotations;
}
+ public ITypeAnnotationWalker enrichWithExternalAnnotationsFor(ITypeAnnotationWalker walker, Object member,
+ LookupEnvironment environment) {
+ // TODO[1.8.7] more to do here? In what contexts?
+ return walker;
+ }
+
+ public char[] getModule() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public ExternalAnnotationStatus getExternalAnnotationStatus() {
+ return ExternalAnnotationStatus.NOT_EEA_CONFIGURED;
+ }
+
} \ No newline at end of file
diff --git a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/core/builder/EclipseClassPathManager.java b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/core/builder/EclipseClassPathManager.java
index 4ffb009a8..20952b18d 100644
--- a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/core/builder/EclipseClassPathManager.java
+++ b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/core/builder/EclipseClassPathManager.java
@@ -61,7 +61,8 @@ public class EclipseClassPathManager extends ClassPathManager {
name = name.substring(0,name.length() - ".class".length());
}
char[][] cname = CharOperation.splitOn('.',name.toCharArray());
- NameEnvironmentAnswer answer = nameEnv.findType(cname);
+ // TODO [j9] passing null client/module here...
+ NameEnvironmentAnswer answer = nameEnv.findType(cname,(char[])null);
if (answer == null || !answer.isBinaryType()) {
return null;
} else {
diff --git a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/core/builder/StatefulNameEnvironment.java b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/core/builder/StatefulNameEnvironment.java
index 6167e7aaf..26c683bb4 100644
--- a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/core/builder/StatefulNameEnvironment.java
+++ b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/core/builder/StatefulNameEnvironment.java
@@ -1,5 +1,5 @@
/* *******************************************************************
- * Copyright (c) 2002 Palo Alto Research Center, Incorporated (PARC).
+ * Copyright (c) 2002 IBM and other contributors
* All rights reserved.
* This program and the accompanying materials are made available
* under the terms of the Eclipse Public License v1.0
@@ -7,18 +7,17 @@
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
- * PARC initial implementation
+ * Palo Alto Research Center, Incorporated (PARC)
+ * Andy Clement
* ******************************************************************/
package org.aspectj.ajdt.internal.core.builder;
-//import java.util.HashMap;
import java.io.File;
import java.io.IOException;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
-import java.util.Iterator;
import java.util.Map;
import java.util.Set;
@@ -26,29 +25,28 @@ import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileReader;
import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException;
import org.aspectj.org.eclipse.jdt.internal.compiler.env.IBinaryType;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModule;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModuleLocation;
import org.aspectj.org.eclipse.jdt.internal.compiler.env.INameEnvironment;
import org.aspectj.org.eclipse.jdt.internal.compiler.env.NameEnvironmentAnswer;
import org.aspectj.util.FileUtil;
public class StatefulNameEnvironment implements INameEnvironment {
- private Map classesFromName;
- private Map inflatedClassFilesCache;
- private Set packageNames;
+ private Map<String,File> classesFromName;
+ private Map<String,NameEnvironmentAnswer> inflatedClassFilesCache;
+ private Set<String> packageNames;
private AjState state;
private INameEnvironment baseEnvironment;
- public StatefulNameEnvironment(INameEnvironment baseEnvironment, Map classesFromName, AjState state) {
+ public StatefulNameEnvironment(INameEnvironment baseEnvironment, Map<String,File> classesFromName, AjState state) {
this.classesFromName = classesFromName;
- this.inflatedClassFilesCache = new HashMap();
+ this.inflatedClassFilesCache = new HashMap<String,NameEnvironmentAnswer>();
this.baseEnvironment = baseEnvironment;
this.state = state;
-
- packageNames = new HashSet();
- for (Iterator i = classesFromName.keySet().iterator(); i.hasNext();) {
- String className = (String) i.next();
+ packageNames = new HashSet<String>();
+ for (String className: classesFromName.keySet()) {
addAllPackageNames(className);
}
- // System.err.println(packageNames);
}
private void addAllPackageNames(String className) {
@@ -59,12 +57,6 @@ public class StatefulNameEnvironment implements INameEnvironment {
}
}
- public void cleanup() {
- baseEnvironment.cleanup();
- this.classesFromName = Collections.EMPTY_MAP;
- this.packageNames.clear();// = Collections.EMPTY_SET;
- }
-
private NameEnvironmentAnswer findType(String name) {
// pr133532 - ask the state for the type first
IBinaryType seenOnPreviousBuild = state.checkPreviousBuild(name);
@@ -76,10 +68,9 @@ public class StatefulNameEnvironment implements INameEnvironment {
} else {
File fileOnDisk = (File) classesFromName.get(name);
// System.err.println("find: " + name + " found: " + cf);
-
- if (fileOnDisk == null)
+ if (fileOnDisk == null) {
return null;
-
+ }
try {
// System.out.println("from cache: " + name);
byte[] bytes = FileUtil.readAsByteArray(fileOnDisk);
@@ -95,24 +86,36 @@ public class StatefulNameEnvironment implements INameEnvironment {
}
}
- public NameEnvironmentAnswer findType(char[] typeName, char[][] packageName) {
+ @Override
+ public void cleanup() {
+ baseEnvironment.cleanup();
+ this.classesFromName = Collections.emptyMap();
+ this.packageNames.clear();
+ }
+
+ @Override
+ public NameEnvironmentAnswer findType(char[] typeName, char[][] packageName, char[] client) {
NameEnvironmentAnswer ret = findType(new String(CharOperation.concatWith(packageName, typeName, '.')));
- if (ret != null)
+ if (ret != null) {
return ret;
- return baseEnvironment.findType(typeName, packageName);
+ }
+ return baseEnvironment.findType(typeName, packageName, client);
}
- public NameEnvironmentAnswer findType(char[][] compoundName) {
+ @Override
+ public NameEnvironmentAnswer findType(char[][] compoundName, char[] client) {
NameEnvironmentAnswer ret = findType(new String(CharOperation.concatWith(compoundName, '.')));
- if (ret != null)
+ if (ret != null) {
return ret;
- return baseEnvironment.findType(compoundName);
+ }
+ return baseEnvironment.findType(compoundName, client);
}
- public boolean isPackage(char[][] parentPackageName, char[] packageName) {
- if (baseEnvironment.isPackage(parentPackageName, packageName))
+ @Override
+ public boolean isPackage(char[][] parentPackageName, char[] packageName, char[] client) {
+ if (baseEnvironment.isPackage(parentPackageName, packageName, client)) {
return true;
-
+ }
String fullPackageName = new String(CharOperation.concatWith(parentPackageName, packageName, '.'));
return packageNames.contains(fullPackageName);
}
@@ -121,12 +124,35 @@ public class StatefulNameEnvironment implements INameEnvironment {
* Needs to be told about changes. The 'added' set is a subset of classNameToFileMap consisting of just those names added during
* this build - to reduce any impact on incremental compilation times.
*/
- public void update(Map classNameToFileMap, Set added) {
- for (Iterator i = added.iterator(); i.hasNext();) {
- String className = (String) i.next();
+ public void update(Map<String,File> classNameToFileMap, Set<String> added) {
+ for (String className: added) {
addAllPackageNames(className);
}
this.classesFromName = classNameToFileMap;
}
+ @Override
+ public void acceptModule(IModule module, IModuleLocation location) {
+ // TODO [j9]
+ baseEnvironment.acceptModule(module, location);
+ }
+
+ @Override
+ public boolean isPackageVisible(char[] pack, char[] source, char[] client) {
+ // TODO [j9]
+ return baseEnvironment.isPackageVisible(pack, source, client);
+ }
+
+ @Override
+ public IModule getModule(char[] name) {
+ // TODO [j9]
+ return baseEnvironment.getModule(name);
+ }
+
+ @Override
+ public IModule getModule(IModuleLocation location) {
+ // TODO [j9]
+ return baseEnvironment.getModule(location);
+ }
+
}
diff --git a/org.aspectj.ajdt.core/testsrc/org/aspectj/ajdt/internal/compiler/batch/BasicCommandTestCase.java b/org.aspectj.ajdt.core/testsrc/org/aspectj/ajdt/internal/compiler/batch/BasicCommandTestCase.java
index 7a8bfa48f..08a5252a6 100644
--- a/org.aspectj.ajdt.core/testsrc/org/aspectj/ajdt/internal/compiler/batch/BasicCommandTestCase.java
+++ b/org.aspectj.ajdt.core/testsrc/org/aspectj/ajdt/internal/compiler/batch/BasicCommandTestCase.java
@@ -92,7 +92,7 @@ public class BasicCommandTestCase extends CommandTestCase {
checkCompile("src1/Xlint.java", NO_ERRORS);
}
public void testXlintError() {
- List args = new ArrayList();
+ List<String> args = new ArrayList<>();
args.add("-d");
args.add(getSandboxName());
@@ -105,7 +105,7 @@ public class BasicCommandTestCase extends CommandTestCase {
runCompiler(args, new int[] {2});
}
public void testMissingJarError() {
- List args = new ArrayList();
+ List<String> args = new ArrayList<>();
args.add("-d");
args.add(getSandboxName());
@@ -125,7 +125,7 @@ public class BasicCommandTestCase extends CommandTestCase {
}
public void testMissingRuntimeError() {
- List args = new ArrayList();
+ List<String> args = new ArrayList<>();
args.add("-d");
args.add(getSandboxName());
@@ -176,7 +176,7 @@ public class BasicCommandTestCase extends CommandTestCase {
public void testSizeChanges() {
File f1 = new File(getSandboxName(),"SizeIssues.class");
- List args = new ArrayList();
+ List<String> args = new ArrayList<>();
args.add("-d");
args.add(getSandboxName());
diff --git a/org.aspectj.ajdt.core/testsrc/org/aspectj/ajdt/internal/compiler/batch/BcweaverJarMaker.java b/org.aspectj.ajdt.core/testsrc/org/aspectj/ajdt/internal/compiler/batch/BcweaverJarMaker.java
index b7468d552..83513071a 100644
--- a/org.aspectj.ajdt.core/testsrc/org/aspectj/ajdt/internal/compiler/batch/BcweaverJarMaker.java
+++ b/org.aspectj.ajdt.core/testsrc/org/aspectj/ajdt/internal/compiler/batch/BcweaverJarMaker.java
@@ -49,7 +49,7 @@ public class BcweaverJarMaker {
}
public static void makeJar0() throws IOException {
- List args = new ArrayList();
+ List<String> args = new ArrayList<>();
args.add("-outjar");
args.add("../weaver/testdata/tracing.jar");
@@ -63,7 +63,7 @@ public class BcweaverJarMaker {
}
public static void makeJar1() throws IOException {
- List args = new ArrayList();
+ List<String> args = new ArrayList<>();
args.add("-outjar");
args.add("../weaver/testdata/megatrace.jar");
@@ -78,7 +78,7 @@ public class BcweaverJarMaker {
public static void makeJarObviousNothing() throws IOException {
- List args = new ArrayList();
+ List<String> args = new ArrayList<>();
args.add("-outjar");
args.add("../weaver/testdata/megatrace0easy.jar");
@@ -92,7 +92,7 @@ public class BcweaverJarMaker {
}
public static void makeJarHardNothing() throws IOException {
- List args = new ArrayList();
+ List<String> args = new ArrayList<>();
args.add("-outjar");
args.add("../weaver/testdata/megatrace0hard.jar");
@@ -107,7 +107,7 @@ public class BcweaverJarMaker {
public static void makeJar1a() throws IOException {
- List args = new ArrayList();
+ List<String> args = new ArrayList<>();
args.add("-outjar");
args.add("../weaver/testdata/megatraceNoweave.jar");
@@ -124,7 +124,7 @@ public class BcweaverJarMaker {
public static void makeJar2() throws IOException {
- List args = new ArrayList();
+ List<String> args = new ArrayList<>();
args.add("-outjar");
args.add("../weaver/testdata/dummyAspect.jar");
@@ -137,7 +137,7 @@ public class BcweaverJarMaker {
}
public static void makeTestJars() throws IOException {
- List args = new ArrayList();
+ List<String> args = new ArrayList<>();
args.add("-classpath");
args.add("../lib/test/aspectjrt.jar;../lib/test/testing-client.jar" +
@@ -148,7 +148,7 @@ public class BcweaverJarMaker {
CommandTestCase.runCompiler(args, CommandTestCase.NO_ERRORS);
- args = new ArrayList();
+ args = new ArrayList<>();
args.add("-classpath");
args.add("../lib/test/aspectjrt.jar;../lib/test/testing-client.jar" +
@@ -159,7 +159,7 @@ public class BcweaverJarMaker {
CommandTestCase.runCompiler(args, CommandTestCase.NO_ERRORS);
- args = new ArrayList();
+ args = new ArrayList<>();
args.add("-classpath");
args.add("../lib/test/aspectjrt.jar;../lib/test/testing-client.jar" +
@@ -170,7 +170,7 @@ public class BcweaverJarMaker {
CommandTestCase.runCompiler(args, CommandTestCase.NO_ERRORS);
- args = new ArrayList();
+ args = new ArrayList<>();
args.add("-classpath");
args.add("../lib/test/aspectjrt.jar;../lib/test/testing-client.jar" +
@@ -183,7 +183,7 @@ public class BcweaverJarMaker {
CommandTestCase.runCompiler(args, CommandTestCase.NO_ERRORS);
// For PR55341
- args = new ArrayList();
+ args = new ArrayList<>();
args.add("-classpath");
args.add("../lib/test/aspectjrt.jar;../lib/test/testing-client.jar" +
File.pathSeparator + System.getProperty("aspectjrt.path"));
@@ -196,7 +196,7 @@ public class BcweaverJarMaker {
}
public static void makeURLWeavingClassLoaderJars() throws IOException {
- List args = new ArrayList();
+ List<String> args = new ArrayList<>();
/*
* Vanilla classes
@@ -213,7 +213,7 @@ public class BcweaverJarMaker {
/*
* Woven classes
*/
- args = new ArrayList();
+ args = new ArrayList<>();
args.add("-classpath");
args.add("../lib/test/aspectjrt.jar;../lib/test/testing-client.jar;../weaver/testdata/ltw-classes.jar" +
File.pathSeparator + System.getProperty("aspectjrt.path"));
@@ -227,7 +227,7 @@ public class BcweaverJarMaker {
/*
* Advice
*/
- args = new ArrayList();
+ args = new ArrayList<>();
args.add("-classpath");
args.add("../lib/test/aspectjrt.jar;../lib/test/testing-client.jar;../weaver/testdata/ltw-classes.jar" +
File.pathSeparator + System.getProperty("aspectjrt.path"));
@@ -239,7 +239,7 @@ public class BcweaverJarMaker {
/*
* Declare warning advice
*/
- args = new ArrayList();
+ args = new ArrayList<>();
args.add("-classpath");
args.add("../lib/test/aspectjrt.jar;../lib/test/testing-client.jar;../weaver/testdata/ltw-classes.jar" +
File.pathSeparator + System.getProperty("aspectjrt.path"));
@@ -263,7 +263,7 @@ public class BcweaverJarMaker {
/*
* Around closure advice
*/
- args = new ArrayList();
+ args = new ArrayList<>();
args.add("-classpath");
args.add("../lib/test/aspectjrt.jar;../lib/test/testing-client.jar;../weaver/testdata/ltw-classes.jar" +
File.pathSeparator + System.getProperty("aspectjrt.path"));
@@ -302,7 +302,7 @@ public class BcweaverJarMaker {
private static void buildJarWithClasspath(String outjar,String input,String deps,boolean nodebug) {
System.out.println(" Building "+outjar);
- List args = new ArrayList();
+ List<String> args = new ArrayList<>();
if (nodebug) args.add("-g:none");
args.add("-classpath");
args.add("../lib/test/aspectjrt.jar;../lib/test/testing-client.jar" +
@@ -332,7 +332,7 @@ public class BcweaverJarMaker {
}
public static void makeDuplicateManifestTestJars() throws IOException {
- List args = new ArrayList();
+ List<String> args = new ArrayList<>();
/*
* injar
@@ -360,7 +360,7 @@ public class BcweaverJarMaker {
}
public static void makeAspectPathTestJars() throws IOException {
- List args = new ArrayList();
+ List<String> args = new ArrayList<>();
args.clear();
args.add("-classpath");
@@ -372,8 +372,7 @@ public class BcweaverJarMaker {
}
public static void makeAjc11TestJars() throws IOException {
- List args = new ArrayList();
-
+ List<String> args = new ArrayList<>();
args.clear();
args.add("-classpath");
args.add(cp);
@@ -384,11 +383,9 @@ public class BcweaverJarMaker {
}
public static void makeOutjarTestJars() throws IOException {
- List args = new ArrayList();
+ List<String> args = new ArrayList<>();
- /*
- * parent
- */
+ // parent
args.clear();
args.add("-classpath");
args.add("../lib/test/aspectjrt.jar;../lib/test/testing-client.jar" +
diff --git a/org.aspectj.ajdt.core/testsrc/org/aspectj/ajdt/internal/compiler/batch/BinaryFormsTestCase.java b/org.aspectj.ajdt.core/testsrc/org/aspectj/ajdt/internal/compiler/batch/BinaryFormsTestCase.java
index d69906cdf..f5ce49600 100644
--- a/org.aspectj.ajdt.core/testsrc/org/aspectj/ajdt/internal/compiler/batch/BinaryFormsTestCase.java
+++ b/org.aspectj.ajdt.core/testsrc/org/aspectj/ajdt/internal/compiler/batch/BinaryFormsTestCase.java
@@ -32,7 +32,7 @@ public class BinaryFormsTestCase extends CommandTestCase {
public void testJar1() throws IOException {
String library = getSandboxName() + "/lib.jar";
- List args = new ArrayList();
+ List<String> args = new ArrayList();
args.add("-outjar");
args.add(library);
@@ -48,7 +48,7 @@ public class BinaryFormsTestCase extends CommandTestCase {
CommandTestCase.runCompiler(args, CommandTestCase.NO_ERRORS);
- args = new ArrayList();
+ args = new ArrayList<>();
args.add("-aspectpath");
args.add(library);
diff --git a/org.aspectj.ajdt.core/testsrc/org/aspectj/ajdt/internal/core/builder/AsmBuilderTest.java b/org.aspectj.ajdt.core/testsrc/org/aspectj/ajdt/internal/core/builder/AsmBuilderTest.java
index dc40100bc..8679f7879 100644
--- a/org.aspectj.ajdt.core/testsrc/org/aspectj/ajdt/internal/core/builder/AsmBuilderTest.java
+++ b/org.aspectj.ajdt.core/testsrc/org/aspectj/ajdt/internal/core/builder/AsmBuilderTest.java
@@ -59,6 +59,11 @@ public class AsmBuilderTest extends TestCase {
public boolean ignoreOptionalProblems() {
return false;
}
+
+ @Override
+ public char[] module() {
+ return null;
+ }
};
TypeDeclaration local = new TypeDeclaration(new CompilationResult(cu, 0, 0, 0));
diff --git a/org.aspectj.ajdt.core/testsrc/org/aspectj/tools/ajc/AjcTestCase.java b/org.aspectj.ajdt.core/testsrc/org/aspectj/tools/ajc/AjcTestCase.java
index d444c4d09..f0af8da50 100644
--- a/org.aspectj.ajdt.core/testsrc/org/aspectj/tools/ajc/AjcTestCase.java
+++ b/org.aspectj.ajdt.core/testsrc/org/aspectj/tools/ajc/AjcTestCase.java
@@ -231,7 +231,7 @@ public class AjcTestCase extends TestCase {
}
}
if (seeAlsos != null) {
- List extraLocations = message.getExtraSourceLocations();
+ List<ISourceLocation> extraLocations = message.getExtraSourceLocations();
if (extraLocations.size() != seeAlsos.length) {
return false;
}
diff --git a/org.eclipse.jdt.core/jdtcore-for-aspectj-src.zip b/org.eclipse.jdt.core/jdtcore-for-aspectj-src.zip
index 020caa443..2809d0781 100644
--- a/org.eclipse.jdt.core/jdtcore-for-aspectj-src.zip
+++ b/org.eclipse.jdt.core/jdtcore-for-aspectj-src.zip
Binary files differ
diff --git a/org.eclipse.jdt.core/jdtcore-for-aspectj.jar b/org.eclipse.jdt.core/jdtcore-for-aspectj.jar
index 4dc8b8805..68cf1737e 100644
--- a/org.eclipse.jdt.core/jdtcore-for-aspectj.jar
+++ b/org.eclipse.jdt.core/jdtcore-for-aspectj.jar
Binary files differ
diff --git a/tests/bugs1810/493554/example/aspect/FooAspect$ajcMightHaveAspect.class b/tests/bugs1810/493554/example/aspect/FooAspect$ajcMightHaveAspect.class
new file mode 100644
index 000000000..8f9346bef
--- /dev/null
+++ b/tests/bugs1810/493554/example/aspect/FooAspect$ajcMightHaveAspect.class
Binary files differ
diff --git a/tests/bugs1810/493554/example/aspect/FooAspect.class b/tests/bugs1810/493554/example/aspect/FooAspect.class
new file mode 100644
index 000000000..6c5f481fd
--- /dev/null
+++ b/tests/bugs1810/493554/example/aspect/FooAspect.class
Binary files differ
diff --git a/tests/bugs1810/493554/example/dep/Dep.class b/tests/bugs1810/493554/example/dep/Dep.class
new file mode 100644
index 000000000..cda4a43e0
--- /dev/null
+++ b/tests/bugs1810/493554/example/dep/Dep.class
Binary files differ
diff --git a/tests/bugs1810/493554/example/kusedep/Cmd.class b/tests/bugs1810/493554/example/kusedep/Cmd.class
new file mode 100644
index 000000000..536d1120c
--- /dev/null
+++ b/tests/bugs1810/493554/example/kusedep/Cmd.class
Binary files differ
diff --git a/tests/bugs1810/generics/Code.java b/tests/bugs1810/generics/Code.java
new file mode 100644
index 000000000..cc3672268
--- /dev/null
+++ b/tests/bugs1810/generics/Code.java
@@ -0,0 +1,9 @@
+class AbstractSuperClass<A,B> {}
+interface InterfaceOne {}
+interface InterfaceTwo<A> {}
+class ID {}
+abstract class AbstractTestClass<T> extends AbstractSuperClass<T,ID> implements InterfaceOne, InterfaceTwo<T> {
+}
+class TestType {}
+class ConcreteClass extends AbstractTestClass<TestType> {
+}
diff --git a/tests/bugs190/modules/aspect1/Azpect1.java b/tests/bugs190/modules/aspect1/Azpect1.java
new file mode 100644
index 000000000..6106916af
--- /dev/null
+++ b/tests/bugs190/modules/aspect1/Azpect1.java
@@ -0,0 +1,5 @@
+public aspect Azpect1 {
+ before(): execution(* main(..)) {
+ System.out.println("Azpect1.before running");
+ }
+}
diff --git a/tests/bugs190/modules/cpl.sh b/tests/bugs190/modules/cpl.sh
new file mode 100755
index 000000000..ca5f7b057
--- /dev/null
+++ b/tests/bugs190/modules/cpl.sh
@@ -0,0 +1,4 @@
+cd module1
+javac module-info.java Code.java -d .
+jar -cvMf module-one.jar *
+cd ..
diff --git a/tests/bugs190/modules/module1/Code.java b/tests/bugs190/modules/module1/Code.java
new file mode 100644
index 000000000..5cc9632d1
--- /dev/null
+++ b/tests/bugs190/modules/module1/Code.java
@@ -0,0 +1,6 @@
+package a.b.c;
+public class Code {
+ public static void main(String []argv) {
+ System.out.println("Code.main running");
+ }
+}
diff --git a/tests/bugs190/modules/module1/a/b/c/Code.class b/tests/bugs190/modules/module1/a/b/c/Code.class
new file mode 100644
index 000000000..5d5e514b8
--- /dev/null
+++ b/tests/bugs190/modules/module1/a/b/c/Code.class
Binary files differ
diff --git a/tests/bugs190/modules/module1/module-info.class b/tests/bugs190/modules/module1/module-info.class
new file mode 100644
index 000000000..0088bd13a
--- /dev/null
+++ b/tests/bugs190/modules/module1/module-info.class
Binary files differ
diff --git a/tests/bugs190/modules/module1/module-info.java b/tests/bugs190/modules/module1/module-info.java
new file mode 100644
index 000000000..7edf5da1f
--- /dev/null
+++ b/tests/bugs190/modules/module1/module-info.java
@@ -0,0 +1,2 @@
+module one {
+}
diff --git a/tests/bugs190/modules/module1/module-one.jar b/tests/bugs190/modules/module1/module-one.jar
new file mode 100644
index 000000000..907678e9c
--- /dev/null
+++ b/tests/bugs190/modules/module1/module-one.jar
Binary files differ
diff --git a/tests/bugs190/modules/play/m b/tests/bugs190/modules/play/m
new file mode 100644
index 000000000..54520da0a
--- /dev/null
+++ b/tests/bugs190/modules/play/m
@@ -0,0 +1,11 @@
+module M.N {
+ requires A.B;
+ requires public C.D;
+
+ exports P.Q;
+ exports R.S to T1.U1, T2.U2;
+
+ uses V.W;
+ provides X.Y with Z1.Z2;
+ provides X.Y with Z3.Z4;
+}
diff --git a/tests/bugs190/modules/play/src/a/module-info.java b/tests/bugs190/modules/play/src/a/module-info.java
new file mode 100644
index 000000000..5de28f635
--- /dev/null
+++ b/tests/bugs190/modules/play/src/a/module-info.java
@@ -0,0 +1,2 @@
+module a {
+}
diff --git a/tests/bugs190/modules/play/src/b/module-info.java b/tests/bugs190/modules/play/src/b/module-info.java
new file mode 100644
index 000000000..d7a65f08e
--- /dev/null
+++ b/tests/bugs190/modules/play/src/b/module-info.java
@@ -0,0 +1,2 @@
+module b {
+}
diff --git a/tests/src/org/aspectj/systemtest/AllTests19.java b/tests/src/org/aspectj/systemtest/AllTests19.java
new file mode 100644
index 000000000..4835a6154
--- /dev/null
+++ b/tests/src/org/aspectj/systemtest/AllTests19.java
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * Copyright (c) 2013, 2014 Contributors
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Andy Clement - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.systemtest;
+
+import org.aspectj.systemtest.ajc190.AllTestsAspectJ190;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+public class AllTests19 {
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite("AspectJ System Test Suite - 1.9");
+ // $JUnit-BEGIN$
+ suite.addTest(AllTestsAspectJ190.suite());
+ suite.addTest(AllTests18.suite());
+ // $JUnit-END$
+ return suite;
+ }
+}
diff --git a/tests/src/org/aspectj/systemtest/ajc190/Ajc190Tests.java b/tests/src/org/aspectj/systemtest/ajc190/Ajc190Tests.java
new file mode 100644
index 000000000..26fc7c78d
--- /dev/null
+++ b/tests/src/org/aspectj/systemtest/ajc190/Ajc190Tests.java
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Contributors
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Andy Clement - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.systemtest.ajc190;
+
+import java.io.File;
+
+import org.aspectj.testing.XMLBasedAjcTestCase;
+
+import junit.framework.Test;
+
+/**
+ * @author Andy Clement
+ */
+public class Ajc190Tests extends org.aspectj.testing.XMLBasedAjcTestCase {
+
+ // Weave a module with code that isn't in a module
+ public void testWeaveModule() throws Exception {
+ runTest("weave module");
+ }
+
+ // ---
+
+ public static Test suite() {
+ return XMLBasedAjcTestCase.loadSuite(Ajc190Tests.class);
+ }
+
+ @Override
+ protected File getSpecFile() {
+ return getClassResource("ajc190.xml");
+ }
+
+}
diff --git a/tests/src/org/aspectj/systemtest/ajc190/AllTestsAspectJ190.java b/tests/src/org/aspectj/systemtest/ajc190/AllTestsAspectJ190.java
new file mode 100644
index 000000000..36b767f1c
--- /dev/null
+++ b/tests/src/org/aspectj/systemtest/ajc190/AllTestsAspectJ190.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Contributors
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Andy Clement - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.systemtest.ajc190;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import org.aspectj.systemtest.apt.AptTests;
+
+public class AllTestsAspectJ190 {
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite("AspectJ 1.8.5 tests");
+ // $JUnit-BEGIN$
+ suite.addTest(Ajc190Tests.suite());
+ suite.addTest(AptTests.suite());
+ // $JUnit-END$
+ return suite;
+ }
+}
diff --git a/tests/src/org/aspectj/systemtest/ajc190/ajc190.xml b/tests/src/org/aspectj/systemtest/ajc190/ajc190.xml
new file mode 100644
index 000000000..bbe04073d
--- /dev/null
+++ b/tests/src/org/aspectj/systemtest/ajc190/ajc190.xml
@@ -0,0 +1,10 @@
+<!DOCTYPE suite SYSTEM "../tests/ajcTestSuite.dtd"[]>
+
+<suite>
+
+ <ajc-test dir="bugs190/modules" title="weave module">
+ <compile files="aspect1/Azpect1.java" inpath="module1/module-one.jar" outjar="runner.jar" options="-1.8"/>
+ <java classpath="runner.jar" class="a.b.c.Code"/>
+ </ajc-test>
+
+</suite>
diff --git a/tests/testsrc/org/aspectj/tests/TestsModuleTests.java b/tests/testsrc/org/aspectj/tests/TestsModuleTests.java
index 35d88df72..672a95299 100644
--- a/tests/testsrc/org/aspectj/tests/TestsModuleTests.java
+++ b/tests/testsrc/org/aspectj/tests/TestsModuleTests.java
@@ -20,6 +20,7 @@ import org.aspectj.systemtest.AllTests;
import org.aspectj.systemtest.AllTests14;
import org.aspectj.systemtest.AllTests17;
import org.aspectj.systemtest.AllTests18;
+import org.aspectj.systemtest.AllTests19;
import org.aspectj.util.LangUtil;
public class TestsModuleTests extends TestCase {
@@ -28,7 +29,9 @@ public class TestsModuleTests extends TestCase {
String name = TestsModuleTests.class.getName();
TestSuite suite = new TestSuite(name);
// compiler tests, wrapped for JUnit
- if (LangUtil.is18VMOrGreater()) {
+ if (LangUtil.is19VMOrGreater()) {
+ suite.addTest(AllTests19.suite());
+ } else if (LangUtil.is18VMOrGreater()) {
suite.addTest(AllTests18.suite());
} else if (LangUtil.is15VMOrGreater()) {
// suite.addTest(AllTests15.suite());
diff --git a/weaver5/java5-testsrc/org/aspectj/weaver/MemberTestCase15.java b/weaver5/java5-testsrc/org/aspectj/weaver/MemberTestCase15.java
index 7838c0696..f44095a0e 100644
--- a/weaver5/java5-testsrc/org/aspectj/weaver/MemberTestCase15.java
+++ b/weaver5/java5-testsrc/org/aspectj/weaver/MemberTestCase15.java
@@ -11,8 +11,6 @@
* ******************************************************************/
package org.aspectj.weaver;
-import java.util.List;
-
import org.aspectj.weaver.bcel.BcelWorld;
import junit.framework.TestCase;
diff --git a/weaver5/java5-testsrc/org/aspectj/weaver/reflect/ReflectionWorldTest.java b/weaver5/java5-testsrc/org/aspectj/weaver/reflect/ReflectionWorldTest.java
index 5c08cf892..cbde8e680 100644
--- a/weaver5/java5-testsrc/org/aspectj/weaver/reflect/ReflectionWorldTest.java
+++ b/weaver5/java5-testsrc/org/aspectj/weaver/reflect/ReflectionWorldTest.java
@@ -13,9 +13,12 @@ package org.aspectj.weaver.reflect;
import junit.framework.TestCase;
+import java.util.List;
+
import org.aspectj.weaver.ResolvedType;
import org.aspectj.weaver.UnresolvedType;
import org.aspectj.weaver.World;
+import org.aspectj.weaver.patterns.ConcreteCflowPointcut;
public class ReflectionWorldTest extends TestCase {
@@ -38,5 +41,27 @@ public class ReflectionWorldTest extends TestCase {
assertEquals("int", UnresolvedType.INT, world.resolve(int.class));
assertEquals("void", UnresolvedType.VOID, world.resolve(void.class));
}
+
+ static class AbstractSuperClass<A,B> {}
+ static interface InterfaceOne {}
+ static interface InterfaceTwo<A> {}
+ static class ID {}
+ static abstract class AbstractTestClass<T> extends AbstractSuperClass<T,ID> implements InterfaceOne, InterfaceTwo<T> {
+
+ }
+ static class TestType {}
+// static class ConcreteClass extends AbstractTestClass<TestType> {
+ static class ConcreteClass extends AbstractTestClass<List<TestType>> {
+ }
+
+ static class Bar extends ConcreteClass {}
+
+ public void testGenerics() {
+ ReflectionWorld world = new ReflectionWorld(getClass().getClassLoader());
+// world.lookupOrCreateName(UnresolvedType.forName(AbstractTestClass.class.getName()));
+// ResolvedType resolvedType = world.resolve(AbstractTestClass.class);
+ JavaLangTypeToResolvedTypeConverter converter = new JavaLangTypeToResolvedTypeConverter(world);
+ ResolvedType resolvedType2 = converter.fromType(ConcreteClass.class);
+ }
}