aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/bugs1920/github_250/MyAspect.aj40
-rw-r--r--tests/src/test/java/org/aspectj/systemtest/ajc1920/Bugs1920Tests.java9
-rw-r--r--tests/src/test/resources/org/aspectj/systemtest/ajc1920/ajc1920.xml13
3 files changed, 62 insertions, 0 deletions
diff --git a/tests/bugs1920/github_250/MyAspect.aj b/tests/bugs1920/github_250/MyAspect.aj
new file mode 100644
index 000000000..e832d0f68
--- /dev/null
+++ b/tests/bugs1920/github_250/MyAspect.aj
@@ -0,0 +1,40 @@
+import org.aspectj.lang.ProceedingJoinPoint;
+import org.aspectj.lang.annotation.Around;
+import org.aspectj.lang.annotation.Aspect;
+
+import java.util.Random;
+
+/**
+ * Reproduces <a href="https://github.com/eclipse-aspectj/aspectj/issues/250">Github bug 250</a>
+ */
+@Aspect
+public class MyAspect {
+ @Around("execution(* Application.*(..))")
+ public Object myAdvice1(ProceedingJoinPoint joinPoint) {
+ System.out.println(joinPoint);
+ a(1, "one");
+ return joinPoint.proceed();
+ }
+
+ @Around("execution(* Application.*(..))")
+ public Object myAdvice2(ProceedingJoinPoint joinPoint) throws Throwable {
+ System.out.println(joinPoint);
+ a(2);
+ return new Random().nextBoolean() ? joinPoint.proceed() : null;
+ }
+
+ private void a(int i) {
+ System.out.println(i);
+ }
+ private void a(int i, String s) {
+ System.out.println(i + " / " + s);
+ }
+
+ public static void main(String[] args) {
+ new Application().doSomething();
+ }
+}
+
+class Application {
+ public void doSomething() {}
+}
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 409a2e675..593fdb198 100644
--- a/tests/src/test/java/org/aspectj/systemtest/ajc1920/Bugs1920Tests.java
+++ b/tests/src/test/java/org/aspectj/systemtest/ajc1920/Bugs1920Tests.java
@@ -26,6 +26,15 @@ public class Bugs1920Tests extends XMLBasedAjcTestCase {
runTest("add correct annotations to multiple ITD methods with the same name and same number of arguments");
}
+ /**
+ * Make sure to create one {@code ajc$inlineAccessMethod} for identically named (overloaded) private aspect methods.
+ * <p>
+ * See <a href="https://github.com/eclipse-aspectj/aspectj/issues/250">GitHub issue 250</a>.
+ */
+ public void test_GitHub_250() {
+ runTest("correctly handle overloaded private methods in aspects");
+ }
+
public static Test suite() {
return XMLBasedAjcTestCase.loadSuite(Bugs1920Tests.class);
}
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 9f072c86d..ed301b4f3 100644
--- a/tests/src/test/resources/org/aspectj/systemtest/ajc1920/ajc1920.xml
+++ b/tests/src/test/resources/org/aspectj/systemtest/ajc1920/ajc1920.xml
@@ -190,4 +190,17 @@
</run>
</ajc-test>
+ <!-- https://github.com/eclipse-aspectj/aspectj/issues/250 -->
+ <ajc-test dir="bugs1920/github_250" vm="8" title="correctly handle overloaded private methods in aspects">
+ <compile files="MyAspect.aj" options="-8"/>
+ <run class="MyAspect">
+ <stdout>
+ <line text="execution(void Application.doSomething())"/>
+ <line text="1 / one"/>
+ <line text="execution(void Application.doSomething())"/>
+ <line text="2"/>
+ </stdout>
+ </run>
+ </ajc-test>
+
</suite>