aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Kriegisch <Alexander@Kriegisch.name>2021-11-26 07:34:01 +0100
committerAlexander Kriegisch <Alexander@Kriegisch.name>2021-11-26 08:51:18 +0100
commitcbdb8e067c1c2b0d8ac19015ea4f7aa224eb54de (patch)
treef2958db2719adda5efd3b5f07cdab336efece4e6
parentbc2c65717d96e5e9cc1a454e5b0f8f258f2d802e (diff)
downloadaspectj-cbdb8e067c1c2b0d8ac19015ea4f7aa224eb54de.tar.gz
aspectj-cbdb8e067c1c2b0d8ac19015ea4f7aa224eb54de.zip
Incorporate JDT Core fix + test for #105
Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
-rw-r--r--pom.xml2
-rw-r--r--tests/bugs198/github_105/Application.java18
-rw-r--r--tests/bugs198/github_105/BarAnnotation.java11
-rw-r--r--tests/bugs198/github_105/FooAnnotation.java8
-rw-r--r--tests/bugs198/github_105/FooAspect.aj4
-rw-r--r--tests/src/test/java/org/aspectj/systemtest/ajc198/Bugs198Tests.java26
-rw-r--r--tests/src/test/resources/org/aspectj/systemtest/ajc198/ajc198.xml6
7 files changed, 74 insertions, 1 deletions
diff --git a/pom.xml b/pom.xml
index 7a4aa2e91..2a816afb2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -21,7 +21,7 @@
<maven.javadoc.skip>true</maven.javadoc.skip>
<!-- Dependency versions -->
- <jdt.core.version>1.9.8.RC2</jdt.core.version>
+ <jdt.core.version>1.9.8.RC3</jdt.core.version>
<asm.version>9.2</asm.version>
<lib.ant.version>1.6.3</lib.ant.version>
<lib.ant.xerces.version>2.6.2</lib.ant.xerces.version>
diff --git a/tests/bugs198/github_105/Application.java b/tests/bugs198/github_105/Application.java
new file mode 100644
index 000000000..bcf4f5624
--- /dev/null
+++ b/tests/bugs198/github_105/Application.java
@@ -0,0 +1,18 @@
+import java.lang.annotation.Annotation;
+
+/**
+ * {@code FooAspect} should add {@code @BarAnnotation(name = "from FooAspect")}.
+ * <p>
+ * This fails in AspectJ 1.9.5 to 1.9.8.RC2 due to a removed safeguard in JDT Core,
+ * if the aspect is in a separate library on the aspectpath.
+ * <p>
+ * See https://github.com/eclipse/org.aspectj/issues/105
+ */
+@FooAnnotation
+public class Application {
+ public static void main(String[] args) {
+ for (Annotation annotation : Application.class.getDeclaredAnnotations()) {
+ System.out.println(annotation);
+ }
+ }
+}
diff --git a/tests/bugs198/github_105/BarAnnotation.java b/tests/bugs198/github_105/BarAnnotation.java
new file mode 100644
index 000000000..eaee4af2a
--- /dev/null
+++ b/tests/bugs198/github_105/BarAnnotation.java
@@ -0,0 +1,11 @@
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Target({ ElementType.TYPE })
+@Retention(RetentionPolicy.RUNTIME)
+public @interface BarAnnotation {
+ // Note: no default value
+ String name();
+}
diff --git a/tests/bugs198/github_105/FooAnnotation.java b/tests/bugs198/github_105/FooAnnotation.java
new file mode 100644
index 000000000..17e79deb4
--- /dev/null
+++ b/tests/bugs198/github_105/FooAnnotation.java
@@ -0,0 +1,8 @@
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Target({ElementType.TYPE})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface FooAnnotation {}
diff --git a/tests/bugs198/github_105/FooAspect.aj b/tests/bugs198/github_105/FooAspect.aj
new file mode 100644
index 000000000..0d8e10d9b
--- /dev/null
+++ b/tests/bugs198/github_105/FooAspect.aj
@@ -0,0 +1,4 @@
+public aspect FooAspect {
+ declare @type:(@FooAnnotation *) :
+ @BarAnnotation(name = "from FooAspect");
+}
diff --git a/tests/src/test/java/org/aspectj/systemtest/ajc198/Bugs198Tests.java b/tests/src/test/java/org/aspectj/systemtest/ajc198/Bugs198Tests.java
new file mode 100644
index 000000000..69d484590
--- /dev/null
+++ b/tests/src/test/java/org/aspectj/systemtest/ajc198/Bugs198Tests.java
@@ -0,0 +1,26 @@
+/*******************************************************************************
+ * Copyright (c) 2021 Contributors
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt
+ *******************************************************************************/
+package org.aspectj.systemtest.ajc198;
+
+import org.aspectj.testing.XMLBasedAjcTestCase;
+
+/**
+ * @author Alexander Kriegisch
+ */
+public class Bugs198Tests extends XMLBasedAjcTestCase {
+
+ public void testGitHub_105() {
+ runTest("ITD annotation with mandatory parameter via aspectpath");
+ }
+
+ @Override
+ protected java.net.URL getSpecFile() {
+ return getClassResource("ajc198.xml");
+ }
+
+}
diff --git a/tests/src/test/resources/org/aspectj/systemtest/ajc198/ajc198.xml b/tests/src/test/resources/org/aspectj/systemtest/ajc198/ajc198.xml
index c182b58b9..dfe86e2a9 100644
--- a/tests/src/test/resources/org/aspectj/systemtest/ajc198/ajc198.xml
+++ b/tests/src/test/resources/org/aspectj/systemtest/ajc198/ajc198.xml
@@ -3,6 +3,12 @@
<suite>
+ <!-- https://github.com/eclipse/org.aspectj/issues/105 -->
+ <ajc-test dir="bugs198/github_105" vm="8" title="ITD annotation with mandatory parameter via aspectpath">
+ <compile files="FooAnnotation.java BarAnnotation.java FooAspect.aj" options="-8" outjar="aspect.jar"/>
+ <compile files="Application.java" options="-8" aspectpath="aspect.jar"/>
+ </ajc-test>
+
<!-- Java 17 final, Java 16, 15 preview -->
<ajc-test dir="features197/java15" vm="17" title="sealed class with legal subclasses">
<compile files="Person.java Employee.java Manager.java" options="-17" />