소스 검색

Add regression test for #250

Reproduces #250.

Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
tags/V1_9_20
Alexander Kriegisch 9 달 전
부모
커밋
8170ae6ffd

+ 40
- 0
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() {}
}

+ 9
- 0
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);
}

+ 13
- 0
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>

Loading…
취소
저장