]> source.dussan.org Git - aspectj.git/commitdiff
Incorporate JDT Core fix + test for #105
authorAlexander Kriegisch <Alexander@Kriegisch.name>
Fri, 26 Nov 2021 06:34:01 +0000 (07:34 +0100)
committerAlexander Kriegisch <Alexander@Kriegisch.name>
Fri, 26 Nov 2021 07:51:18 +0000 (08:51 +0100)
Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
pom.xml
tests/bugs198/github_105/Application.java [new file with mode: 0644]
tests/bugs198/github_105/BarAnnotation.java [new file with mode: 0644]
tests/bugs198/github_105/FooAnnotation.java [new file with mode: 0644]
tests/bugs198/github_105/FooAspect.aj [new file with mode: 0644]
tests/src/test/java/org/aspectj/systemtest/ajc198/Bugs198Tests.java [new file with mode: 0644]
tests/src/test/resources/org/aspectj/systemtest/ajc198/ajc198.xml

diff --git a/pom.xml b/pom.xml
index 7a4aa2e910c988134903fc9719097ea02687b503..2a816afb21e84da47569bddac29895aaf6f75f64 100644 (file)
--- 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 (file)
index 0000000..bcf4f56
--- /dev/null
@@ -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 (file)
index 0000000..eaee4af
--- /dev/null
@@ -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 (file)
index 0000000..17e79de
--- /dev/null
@@ -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 (file)
index 0000000..0d8e10d
--- /dev/null
@@ -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 (file)
index 0000000..69d4845
--- /dev/null
@@ -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");
+  }
+
+}
index c182b58b9050339b67309a98592a6606da020b3f..dfe86e2a91decbac70e4174002fff850e1b8b43a 100644 (file)
@@ -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" />