Reproduces #250. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>tags/V1_9_20
@@ -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() {} | |||
} |
@@ -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); | |||
} |
@@ -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> |