aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorAlexander Kriegisch <Alexander@Kriegisch.name>2023-06-24 08:15:24 +0200
committerAlexander Kriegisch <Alexander@Kriegisch.name>2023-06-26 13:48:27 +0700
commit1e2d9683b4b0d75dfd9830ebeb482e56cf40fd8d (patch)
tree2e4b723ff23c6095ae3905c68d181a2c91a8f333 /tests
parentba9ac235eea72de6b040166a098db183a5b04a6e (diff)
downloadaspectj-1e2d9683b4b0d75dfd9830ebeb482e56cf40fd8d.tar.gz
aspectj-1e2d9683b4b0d75dfd9830ebeb482e56cf40fd8d.zip
Add failing test reproducing #246
Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
Diffstat (limited to 'tests')
-rw-r--r--tests/bugs1920/github_246/App.java11
-rw-r--r--tests/bugs1920/github_246/First.java5
-rw-r--r--tests/bugs1920/github_246/ITDAspect.aj13
-rw-r--r--tests/bugs1920/github_246/Second.java5
-rw-r--r--tests/src/test/java/org/aspectj/systemtest/ajc1920/Bugs1920Tests.java11
-rw-r--r--tests/src/test/resources/org/aspectj/systemtest/ajc1920/ajc1920.xml12
6 files changed, 55 insertions, 2 deletions
diff --git a/tests/bugs1920/github_246/App.java b/tests/bugs1920/github_246/App.java
new file mode 100644
index 000000000..8e0bbe8bf
--- /dev/null
+++ b/tests/bugs1920/github_246/App.java
@@ -0,0 +1,11 @@
+import java.lang.reflect.Method;
+import java.util.Arrays;
+
+public class App {
+ public static void main(String[] args) {
+ for (Method method : App.class.getDeclaredMethods()) {
+ if (method.getName().equals("foo"))
+ System.out.println(Arrays.toString(method.getDeclaredAnnotations()) + " " + method);
+ }
+ }
+}
diff --git a/tests/bugs1920/github_246/First.java b/tests/bugs1920/github_246/First.java
new file mode 100644
index 000000000..aa482ca6d
--- /dev/null
+++ b/tests/bugs1920/github_246/First.java
@@ -0,0 +1,5 @@
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+@Retention(RetentionPolicy.RUNTIME)
+public @interface First { }
diff --git a/tests/bugs1920/github_246/ITDAspect.aj b/tests/bugs1920/github_246/ITDAspect.aj
new file mode 100644
index 000000000..fffef1651
--- /dev/null
+++ b/tests/bugs1920/github_246/ITDAspect.aj
@@ -0,0 +1,13 @@
+public aspect ITDAspect {
+ @First
+ @Second
+ public void App.foo(Object parameter) { }
+
+ @First
+ public void App.foo(String parameter) { }
+
+ @Second
+ public int App.foo(int parameter) {
+ return parameter + 3;
+ }
+}
diff --git a/tests/bugs1920/github_246/Second.java b/tests/bugs1920/github_246/Second.java
new file mode 100644
index 000000000..d599f7b1a
--- /dev/null
+++ b/tests/bugs1920/github_246/Second.java
@@ -0,0 +1,5 @@
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+@Retention(RetentionPolicy.RUNTIME)
+public @interface Second { }
diff --git a/tests/src/test/java/org/aspectj/systemtest/ajc1920/Bugs1920Tests.java b/tests/src/test/java/org/aspectj/systemtest/ajc1920/Bugs1920Tests.java
index fca9fee20..409a2e675 100644
--- a/tests/src/test/java/org/aspectj/systemtest/ajc1920/Bugs1920Tests.java
+++ b/tests/src/test/java/org/aspectj/systemtest/ajc1920/Bugs1920Tests.java
@@ -15,8 +15,15 @@ import org.aspectj.testing.XMLBasedAjcTestCase;
*/
public class Bugs1920Tests extends XMLBasedAjcTestCase {
- public void testDummyJava20() {
- //runTest("dummy Java 20");
+ /**
+ * Add correct annotations to multiple ITD methods with the same name and same number of arguments, i.e. copy the
+ * annotations correctly from the aspect into the target class instead of falsely always copying the annotations (if
+ * any) from the first ITD method found.
+ * <p>
+ * See <a href="https://github.com/eclipse-aspectj/aspectj/issues/246">GitHub issue 246</a>.
+ */
+ public void test_GitHub_246() {
+ runTest("add correct annotations to multiple ITD methods with the same name and same number of arguments");
}
public static Test suite() {
diff --git a/tests/src/test/resources/org/aspectj/systemtest/ajc1920/ajc1920.xml b/tests/src/test/resources/org/aspectj/systemtest/ajc1920/ajc1920.xml
index 8f566b643..2026df491 100644
--- a/tests/src/test/resources/org/aspectj/systemtest/ajc1920/ajc1920.xml
+++ b/tests/src/test/resources/org/aspectj/systemtest/ajc1920/ajc1920.xml
@@ -176,4 +176,16 @@
</run>
</ajc-test>
+ <!-- https://github.com/eclipse-aspectj/aspectj/issues/246 -->
+ <ajc-test dir="bugs1920/github_246" vm="8" title="add correct annotations to multiple ITD methods with the same name and same number of arguments">
+ <compile files="First.java Second.java App.java ITDAspect.aj" options="-8"/>
+ <run class="App">
+ <stdout>
+ <line text="[@First(), @Second()] public void App.foo(java.lang.Object)"/>
+ <line text="[@First()] public void App.foo(java.lang.String)"/>
+ <line text="[@Second()] public int App.foo(int)"/>
+ </stdout>
+ </run>
+ </ajc-test>
+
</suite>