diff options
author | Alexander Kriegisch <Alexander@Kriegisch.name> | 2021-11-26 07:34:01 +0100 |
---|---|---|
committer | Alexander Kriegisch <Alexander@Kriegisch.name> | 2021-11-26 08:51:18 +0100 |
commit | cbdb8e067c1c2b0d8ac19015ea4f7aa224eb54de (patch) | |
tree | f2958db2719adda5efd3b5f07cdab336efece4e6 | |
parent | bc2c65717d96e5e9cc1a454e5b0f8f258f2d802e (diff) | |
download | aspectj-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.xml | 2 | ||||
-rw-r--r-- | tests/bugs198/github_105/Application.java | 18 | ||||
-rw-r--r-- | tests/bugs198/github_105/BarAnnotation.java | 11 | ||||
-rw-r--r-- | tests/bugs198/github_105/FooAnnotation.java | 8 | ||||
-rw-r--r-- | tests/bugs198/github_105/FooAspect.aj | 4 | ||||
-rw-r--r-- | tests/src/test/java/org/aspectj/systemtest/ajc198/Bugs198Tests.java | 26 | ||||
-rw-r--r-- | tests/src/test/resources/org/aspectj/systemtest/ajc198/ajc198.xml | 6 |
7 files changed, 74 insertions, 1 deletions
@@ -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" /> |