--- /dev/null
+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() {}
+}
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);
}
</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>