Browse Source

Incorporate JDT Core fix + test for #105

Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
tags/V1_9_8_RC3
Alexander Kriegisch 2 years ago
parent
commit
cbdb8e067c

+ 1
- 1
pom.xml View File

@@ -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>

+ 18
- 0
tests/bugs198/github_105/Application.java View File

@@ -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);
}
}
}

+ 11
- 0
tests/bugs198/github_105/BarAnnotation.java View File

@@ -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();
}

+ 8
- 0
tests/bugs198/github_105/FooAnnotation.java View File

@@ -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 {}

+ 4
- 0
tests/bugs198/github_105/FooAspect.aj View File

@@ -0,0 +1,4 @@
public aspect FooAspect {
declare @type:(@FooAnnotation *) :
@BarAnnotation(name = "from FooAspect");
}

+ 26
- 0
tests/src/test/java/org/aspectj/systemtest/ajc198/Bugs198Tests.java View File

@@ -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");
}

}

+ 6
- 0
tests/src/test/resources/org/aspectj/systemtest/ajc198/ajc198.xml View 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" />

Loading…
Cancel
Save