Originally, I had intended to release a minor 1.9.19.1 release to fix some bugs. But then, Java 20 support was implemented and merged, so the next release will be 1.9.20. Therefore, I moved some bug regression tests to the 1.9.20 suite. Relates to #254. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>tags/V1_9_20
@@ -19,38 +19,6 @@ public class Bugs1919Tests extends XMLBasedAjcTestCase { | |||
runTest("declare annotation with SOURCE retention"); | |||
} | |||
public void testSwitchWith_Integer_MAX_VALUE() { | |||
runTest("switch with Integer.MAX_VALUE case"); | |||
} | |||
public void testParenthesisedExpressionWithAjKeyword() { | |||
runTest("parenthesised expression with AspectJ keyword"); | |||
} | |||
public void testInterfaceInnerAspectImplicitlyStatic() { | |||
runTest("inner aspect of interface is implicitly static"); | |||
} | |||
public void testExactArrayTypeMatchCompiledTogether() { | |||
runTest("exact array type matching, aspect compiled together with target class"); | |||
} | |||
public void testExactArrayTypeMatchCompiledSeparately() { | |||
runTest("exact array type matching, aspect compiled separately from target class"); | |||
} | |||
public void testFuzzyArrayTypeMatchCompiledTogether() { | |||
runTest("fuzzy array type matching, aspect compiled together with target class"); | |||
} | |||
public void testFuzzyArrayTypeMatchCompiledSeparately() { | |||
runTest("fuzzy array type matching, aspect compiled separately from target class"); | |||
} | |||
public void test_GitHub_214() { | |||
runTest("ArrayIndexOutOfBoundsException with Xlint unorderedAdviceAtShadow=warning"); | |||
} | |||
public static Test suite() { | |||
return XMLBasedAjcTestCase.loadSuite(Bugs1919Tests.class); | |||
} |
@@ -15,6 +15,38 @@ import org.aspectj.testing.XMLBasedAjcTestCase; | |||
*/ | |||
public class Bugs1920Tests extends XMLBasedAjcTestCase { | |||
public void testSwitchWith_Integer_MAX_VALUE() { | |||
runTest("switch with Integer.MAX_VALUE case"); | |||
} | |||
public void testParenthesisedExpressionWithAjKeyword() { | |||
runTest("parenthesised expression with AspectJ keyword"); | |||
} | |||
public void testInterfaceInnerAspectImplicitlyStatic() { | |||
runTest("inner aspect of interface is implicitly static"); | |||
} | |||
public void testExactArrayTypeMatchCompiledTogether() { | |||
runTest("exact array type matching, aspect compiled together with target class"); | |||
} | |||
public void testExactArrayTypeMatchCompiledSeparately() { | |||
runTest("exact array type matching, aspect compiled separately from target class"); | |||
} | |||
public void testFuzzyArrayTypeMatchCompiledTogether() { | |||
runTest("fuzzy array type matching, aspect compiled together with target class"); | |||
} | |||
public void testFuzzyArrayTypeMatchCompiledSeparately() { | |||
runTest("fuzzy array type matching, aspect compiled separately from target class"); | |||
} | |||
public void test_GitHub_214() { | |||
runTest("ArrayIndexOutOfBoundsException with Xlint unorderedAdviceAtShadow=warning"); | |||
} | |||
/** | |||
* 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 |
@@ -172,219 +172,4 @@ | |||
</compile> | |||
</ajc-test> | |||
<!-- RuntimeException in BcelWeaver, see https://github.com/eclipse/org.aspectj/issues/190 --> | |||
<ajc-test dir="bugs1919/github_190" vm="1.5" title="switch with Integer.MAX_VALUE case"> | |||
<compile files="SwitchCaseWith_Integer_MAX_VALUE.java" options="-1.5 -showWeaveInfo"> | |||
<message kind="weave" text="Join point 'method-execution(java.lang.String SwitchCaseWith_Integer_MAX_VALUE.switchTest(int))'"/> | |||
</compile> | |||
<run class="SwitchCaseWith_Integer_MAX_VALUE"> | |||
<stdout> | |||
<line text="execution(String SwitchCaseWith_Integer_MAX_VALUE.switchTest(int))"/> | |||
<line text="CASE_1"/> | |||
</stdout> | |||
</run> | |||
</ajc-test> | |||
<!-- | |||
'Syntax error, insert "Expression" to complete Expression' when compiling parenthesised expressions | |||
containing AspectJ keywords, e.g. '(before)', see https://github.com/eclipse/org.aspectj/issues/20 | |||
--> | |||
<ajc-test dir="bugs1919/github_20" vm="1.5" title="parenthesised expression with AspectJ keyword"> | |||
<compile files="ParenthesisedAJKeywords.java" options="-1.5 -showWeaveInfo"/> | |||
<run class="ParenthesisedAJKeywords"> | |||
<stdout> | |||
<line text="before"/> | |||
<line text="after"/> | |||
<line text="around"/> | |||
<line text="aspect"/> | |||
<line text="pointcut"/> | |||
<line text="declare"/> | |||
<line text="privileged"/> | |||
</stdout> | |||
</run> | |||
</ajc-test> | |||
<!-- | |||
'inner aspects must be static' when compiling an interface with an inner aspect which was not explicitly declared | |||
static, see https://github.com/eclipse/org.aspectj/issues/162 | |||
--> | |||
<ajc-test dir="bugs1919/github_162" vm="1.5" title="inner aspect of interface is implicitly static"> | |||
<compile files="InterfaceWithInnerClass.java" options="-1.5 -showWeaveInfo"> | |||
<message kind="weave" text="method-execution(int InterfaceWithInnerClass$ImplicitlyStatic.getNumber())' in Type 'InterfaceWithInnerClass$ImplicitlyStatic'"/> | |||
<message kind="weave" text="method-execution(void InterfaceWithInnerClass$ImplicitlyStatic.main(java.lang.String[]))' in Type 'InterfaceWithInnerClass$ImplicitlyStatic'"/> | |||
</compile> | |||
<run class="InterfaceWithInnerClass$ImplicitlyStatic"> | |||
<stdout> | |||
<line text="execution(void InterfaceWithInnerClass.ImplicitlyStatic.main(String[]))"/> | |||
<line text="execution(int InterfaceWithInnerClass.ImplicitlyStatic.getNumber())"/> | |||
<line text="11"/> | |||
</stdout> | |||
</run> | |||
</ajc-test> | |||
<!-- | |||
When compiling aspect and target class together, matching works as expected, | |||
see https://github.com/eclipse/org.aspectj/issues/24 | |||
--> | |||
<ajc-test dir="bugs1919/github_24" vm="1.5" title="exact array type matching, aspect compiled together with target class"> | |||
<compile files="ExactlyMatchingAspect.aj MaybeMissingClass.java" options="-1.5 -showWeaveInfo"> | |||
<!-- Even before the bugfix, in this case weaving worked as expected --> | |||
<message kind="weave" text="method-execution(MaybeMissingClass MaybeMissingClass.f1())"/> | |||
<message kind="weave" text="method-execution(MaybeMissingClass[] MaybeMissingClass.f2())"/> | |||
<message kind="weave" text="method-execution(MaybeMissingClass[][] MaybeMissingClass.f3())"/> | |||
<message kind="weave" text="method-execution(int MaybeMissingClass.f4())"/> | |||
<message kind="weave" text="method-execution(int[] MaybeMissingClass.f5())"/> | |||
<message kind="weave" text="method-execution(int[][] MaybeMissingClass.f6())"/> | |||
</compile> | |||
<run class="MaybeMissingClass"> | |||
<stdout> | |||
<line text="MaybeMissingClass.f1"/> | |||
<line text="execution(MaybeMissingClass MaybeMissingClass.f1())"/> | |||
<line text="MaybeMissingClass.f2"/> | |||
<line text="execution(MaybeMissingClass[] MaybeMissingClass.f2())"/> | |||
<line text="MaybeMissingClass.f3"/> | |||
<line text="execution(MaybeMissingClass[][] MaybeMissingClass.f3())"/> | |||
<line text="MaybeMissingClass.f4"/> | |||
<line text="execution(int MaybeMissingClass.f4())"/> | |||
<line text="MaybeMissingClass.f5"/> | |||
<line text="execution(int[] MaybeMissingClass.f5())"/> | |||
<line text="MaybeMissingClass.f6"/> | |||
<line text="execution(int[][] MaybeMissingClass.f6())"/> | |||
</stdout> | |||
</run> | |||
</ajc-test> | |||
<!-- | |||
When compiling aspect and target class separately, too many joinpoints are matched, | |||
see https://github.com/eclipse/org.aspectj/issues/24 | |||
--> | |||
<ajc-test dir="bugs1919/github_24" vm="1.5" title="exact array type matching, aspect compiled separately from target class"> | |||
<compile files="ExactlyMatchingAspect.aj" options="-1.5 -showWeaveInfo" outjar="aspect.jar"> | |||
<message kind="warning" text="no match for this type name: MaybeMissingClass [Xlint:invalidAbsoluteTypeName]"/> | |||
<message kind="warning" text="advice defined in ExactlyMatchingAspect has not been applied [Xlint:adviceDidNotMatch]"/> | |||
</compile> | |||
<compile files="MaybeMissingClass.java" options="-1.5 -showWeaveInfo" aspectpath="aspect.jar"> | |||
<!-- Before the bugfix, f1 would be woven twice, f2 not at all--> | |||
<message kind="weave" text="method-execution(MaybeMissingClass MaybeMissingClass.f1())"/> | |||
<message kind="weave" text="method-execution(MaybeMissingClass[] MaybeMissingClass.f2())"/> | |||
<message kind="weave" text="method-execution(MaybeMissingClass[][] MaybeMissingClass.f3())"/> | |||
<message kind="weave" text="method-execution(int MaybeMissingClass.f4())"/> | |||
<message kind="weave" text="method-execution(int[] MaybeMissingClass.f5())"/> | |||
<message kind="weave" text="method-execution(int[][] MaybeMissingClass.f6())"/> | |||
</compile> | |||
<run class="MaybeMissingClass" classpath="aspect.jar"> | |||
<stdout> | |||
<line text="MaybeMissingClass.f1"/> | |||
<line text="execution(MaybeMissingClass MaybeMissingClass.f1())"/> | |||
<line text="MaybeMissingClass.f2"/> | |||
<line text="execution(MaybeMissingClass[] MaybeMissingClass.f2())"/> | |||
<line text="MaybeMissingClass.f3"/> | |||
<line text="execution(MaybeMissingClass[][] MaybeMissingClass.f3())"/> | |||
<line text="MaybeMissingClass.f4"/> | |||
<line text="execution(int MaybeMissingClass.f4())"/> | |||
<line text="MaybeMissingClass.f5"/> | |||
<line text="execution(int[] MaybeMissingClass.f5())"/> | |||
<line text="MaybeMissingClass.f6"/> | |||
<line text="execution(int[][] MaybeMissingClass.f6())"/> | |||
</stdout> | |||
</run> | |||
</ajc-test> | |||
<!-- | |||
When compiling aspect and target class together, too many joinpoints are matched, | |||
see https://github.com/eclipse/org.aspectj/issues/24 | |||
--> | |||
<ajc-test dir="bugs1919/github_24" vm="1.5" title="fuzzy array type matching, aspect compiled together with target class"> | |||
<compile files="FuzzilyMatchingAspect.aj MaybeMissingClass.java" options="-1.5 -showWeaveInfo"> | |||
<!-- Before the bugfix, both f1 and f2 would be woven twice --> | |||
<message kind="weave" text="method-execution(MaybeMissingClass MaybeMissingClass.f1())"/> | |||
<message kind="weave" text="method-execution(MaybeMissingClass[] MaybeMissingClass.f2())"/> | |||
<message kind="weave" text="method-execution(MaybeMissingClass[][] MaybeMissingClass.f3())"/> | |||
<message kind="weave" text="method-execution(int MaybeMissingClass.f4())"/> | |||
<message kind="weave" text="method-execution(int[] MaybeMissingClass.f5())"/> | |||
<message kind="weave" text="method-execution(int[][] MaybeMissingClass.f6())"/> | |||
</compile> | |||
<run class="MaybeMissingClass"> | |||
<stdout> | |||
<line text="MaybeMissingClass.f1"/> | |||
<line text="execution(MaybeMissingClass MaybeMissingClass.f1())"/> | |||
<line text="MaybeMissingClass.f2"/> | |||
<line text="execution(MaybeMissingClass[] MaybeMissingClass.f2())"/> | |||
<line text="MaybeMissingClass.f3"/> | |||
<line text="execution(MaybeMissingClass[][] MaybeMissingClass.f3())"/> | |||
<line text="MaybeMissingClass.f4"/> | |||
<line text="execution(int MaybeMissingClass.f4())"/> | |||
<line text="MaybeMissingClass.f5"/> | |||
<line text="execution(int[] MaybeMissingClass.f5())"/> | |||
<line text="MaybeMissingClass.f6"/> | |||
<line text="execution(int[][] MaybeMissingClass.f6())"/> | |||
</stdout> | |||
</run> | |||
</ajc-test> | |||
<!-- | |||
When compiling aspect and target class separately, too many joinpoints are matched, | |||
see https://github.com/eclipse/org.aspectj/issues/24 | |||
--> | |||
<ajc-test dir="bugs1919/github_24" vm="1.5" title="fuzzy array type matching, aspect compiled separately from target class"> | |||
<compile files="FuzzilyMatchingAspect.aj" options="-1.5 -showWeaveInfo" outjar="aspect.jar"> | |||
<message kind="warning" text="advice defined in FuzzilyMatchingAspect has not been applied [Xlint:adviceDidNotMatch]"/> | |||
</compile> | |||
<compile files="MaybeMissingClass.java" options="-1.5 -showWeaveInfo" aspectpath="aspect.jar"> | |||
<!-- Before the bugfix, both f1 and f2 would be woven twice --> | |||
<message kind="weave" text="method-execution(MaybeMissingClass MaybeMissingClass.f1())"/> | |||
<message kind="weave" text="method-execution(MaybeMissingClass[] MaybeMissingClass.f2())"/> | |||
<message kind="weave" text="method-execution(MaybeMissingClass[][] MaybeMissingClass.f3())"/> | |||
<message kind="weave" text="method-execution(int MaybeMissingClass.f4())"/> | |||
<message kind="weave" text="method-execution(int[] MaybeMissingClass.f5())"/> | |||
<message kind="weave" text="method-execution(int[][] MaybeMissingClass.f6())"/> | |||
</compile> | |||
<run class="MaybeMissingClass" classpath="aspect.jar"> | |||
<stdout> | |||
<line text="MaybeMissingClass.f1"/> | |||
<line text="execution(MaybeMissingClass MaybeMissingClass.f1())"/> | |||
<line text="MaybeMissingClass.f2"/> | |||
<line text="execution(MaybeMissingClass[] MaybeMissingClass.f2())"/> | |||
<line text="MaybeMissingClass.f3"/> | |||
<line text="execution(MaybeMissingClass[][] MaybeMissingClass.f3())"/> | |||
<line text="MaybeMissingClass.f4"/> | |||
<line text="execution(int MaybeMissingClass.f4())"/> | |||
<line text="MaybeMissingClass.f5"/> | |||
<line text="execution(int[] MaybeMissingClass.f5())"/> | |||
<line text="MaybeMissingClass.f6"/> | |||
<line text="execution(int[][] MaybeMissingClass.f6())"/> | |||
</stdout> | |||
</run> | |||
</ajc-test> | |||
<!-- | |||
https://github.com/eclipse/org.aspectj/issues/214 | |||
https://github.com/mojohaus/aspectj-maven-plugin/issues/164 | |||
Problem with multiple, subsequent weaving steps and '-Xlint:warning' or '-Xlint:unorderedAdviceAtShadow=warning' | |||
java.lang.ArrayIndexOutOfBoundsException: 1 | |||
[ERROR] at org.aspectj.weaver.bcel.BcelShadow.prepareForMungers(BcelShadow.java:379) | |||
[ERROR] at org.aspectj.weaver.Shadow.implement(Shadow.java:546) | |||
--> | |||
<ajc-test dir="bugs1919/github_214" vm="1.5" title="ArrayIndexOutOfBoundsException with Xlint unorderedAdviceAtShadow=warning"> | |||
<compile files="FirstAspect.java MarkerOne.java" options="-1.8 -showWeaveInfo -Xlint:warning" outjar="first-aspect.jar"> | |||
<message kind="warning" text="can not build thisJoinPoint lazily for this advice since it has no suitable guard [Xlint:noGuardForLazyTjp]"/> | |||
<message kind="warning" text="advice defined in FirstAspect has not been applied [Xlint:adviceDidNotMatch]"/> | |||
</compile> | |||
<compile files="Application.java MarkerTwo.java" options="-1.5 -showWeaveInfo -Xlint:warning" classpath="$sandbox/first-aspect.jar" outjar="application.jar"/> | |||
<compile files="SecondAspect.java" options="-1.5 -showWeaveInfo -Xlint:warning" aspectpath="first-aspect.jar" inpath="application.jar" outjar="second-aspect.jar"> | |||
<message kind="warning" text="can not build thisJoinPoint lazily for this advice since it has no suitable guard [Xlint:noGuardForLazyTjp]"/> | |||
<message kind="warning" text="at this shadow method-execution(void Application.greet(java.lang.String)) no precedence is specified between advice applying from aspect FirstAspect and aspect SecondAspect [Xlint:unorderedAdviceAtShadow]"/> | |||
<message kind="warning" text="can not implement lazyTjp at joinpoint method-execution(void Application.greet(java.lang.String)) because of advice conflicts, see secondary locations to find conflicting advice [Xlint:multipleAdviceStoppingLazyTjp]"/> | |||
<message kind="weave" text="method-execution(void Application.greet(java.lang.String))' in Type 'Application' (Application.java:4) advised by around advice from 'SecondAspect'"/> | |||
<message kind="weave" text="method-execution(void Application.greet(java.lang.String))' in Type 'Application' (Application.java:4) advised by before advice from 'FirstAspect'"/> | |||
</compile> | |||
<run class="Application" classpath="$sandbox/second-aspect.jar,$sandbox/first-aspect.jar"> | |||
<stdout> | |||
<line text="FirstAspect: execution(void Application.greet(String))"/> | |||
<line text="SecondAspect: execution(void Application.greet(String))"/> | |||
<line text="Hello world!"/> | |||
</stdout> | |||
</run> | |||
</ajc-test> | |||
</suite> |
@@ -176,6 +176,221 @@ | |||
</run> | |||
</ajc-test> | |||
<!-- RuntimeException in BcelWeaver, see https://github.com/eclipse/org.aspectj/issues/190 --> | |||
<ajc-test dir="bugs1920/github_190" vm="1.5" title="switch with Integer.MAX_VALUE case"> | |||
<compile files="SwitchCaseWith_Integer_MAX_VALUE.java" options="-1.5 -showWeaveInfo"> | |||
<message kind="weave" text="Join point 'method-execution(java.lang.String SwitchCaseWith_Integer_MAX_VALUE.switchTest(int))'"/> | |||
</compile> | |||
<run class="SwitchCaseWith_Integer_MAX_VALUE"> | |||
<stdout> | |||
<line text="execution(String SwitchCaseWith_Integer_MAX_VALUE.switchTest(int))"/> | |||
<line text="CASE_1"/> | |||
</stdout> | |||
</run> | |||
</ajc-test> | |||
<!-- | |||
'Syntax error, insert "Expression" to complete Expression' when compiling parenthesised expressions | |||
containing AspectJ keywords, e.g. '(before)', see https://github.com/eclipse/org.aspectj/issues/20 | |||
--> | |||
<ajc-test dir="bugs1920/github_20" vm="1.5" title="parenthesised expression with AspectJ keyword"> | |||
<compile files="ParenthesisedAJKeywords.java" options="-1.5 -showWeaveInfo"/> | |||
<run class="ParenthesisedAJKeywords"> | |||
<stdout> | |||
<line text="before"/> | |||
<line text="after"/> | |||
<line text="around"/> | |||
<line text="aspect"/> | |||
<line text="pointcut"/> | |||
<line text="declare"/> | |||
<line text="privileged"/> | |||
</stdout> | |||
</run> | |||
</ajc-test> | |||
<!-- | |||
'inner aspects must be static' when compiling an interface with an inner aspect which was not explicitly declared | |||
static, see https://github.com/eclipse/org.aspectj/issues/162 | |||
--> | |||
<ajc-test dir="bugs1920/github_162" vm="1.5" title="inner aspect of interface is implicitly static"> | |||
<compile files="InterfaceWithInnerClass.java" options="-1.5 -showWeaveInfo"> | |||
<message kind="weave" text="method-execution(int InterfaceWithInnerClass$ImplicitlyStatic.getNumber())' in Type 'InterfaceWithInnerClass$ImplicitlyStatic'"/> | |||
<message kind="weave" text="method-execution(void InterfaceWithInnerClass$ImplicitlyStatic.main(java.lang.String[]))' in Type 'InterfaceWithInnerClass$ImplicitlyStatic'"/> | |||
</compile> | |||
<run class="InterfaceWithInnerClass$ImplicitlyStatic"> | |||
<stdout> | |||
<line text="execution(void InterfaceWithInnerClass.ImplicitlyStatic.main(String[]))"/> | |||
<line text="execution(int InterfaceWithInnerClass.ImplicitlyStatic.getNumber())"/> | |||
<line text="11"/> | |||
</stdout> | |||
</run> | |||
</ajc-test> | |||
<!-- | |||
When compiling aspect and target class together, matching works as expected, | |||
see https://github.com/eclipse/org.aspectj/issues/24 | |||
--> | |||
<ajc-test dir="bugs1920/github_24" vm="1.5" title="exact array type matching, aspect compiled together with target class"> | |||
<compile files="ExactlyMatchingAspect.aj MaybeMissingClass.java" options="-1.5 -showWeaveInfo"> | |||
<!-- Even before the bugfix, in this case weaving worked as expected --> | |||
<message kind="weave" text="method-execution(MaybeMissingClass MaybeMissingClass.f1())"/> | |||
<message kind="weave" text="method-execution(MaybeMissingClass[] MaybeMissingClass.f2())"/> | |||
<message kind="weave" text="method-execution(MaybeMissingClass[][] MaybeMissingClass.f3())"/> | |||
<message kind="weave" text="method-execution(int MaybeMissingClass.f4())"/> | |||
<message kind="weave" text="method-execution(int[] MaybeMissingClass.f5())"/> | |||
<message kind="weave" text="method-execution(int[][] MaybeMissingClass.f6())"/> | |||
</compile> | |||
<run class="MaybeMissingClass"> | |||
<stdout> | |||
<line text="MaybeMissingClass.f1"/> | |||
<line text="execution(MaybeMissingClass MaybeMissingClass.f1())"/> | |||
<line text="MaybeMissingClass.f2"/> | |||
<line text="execution(MaybeMissingClass[] MaybeMissingClass.f2())"/> | |||
<line text="MaybeMissingClass.f3"/> | |||
<line text="execution(MaybeMissingClass[][] MaybeMissingClass.f3())"/> | |||
<line text="MaybeMissingClass.f4"/> | |||
<line text="execution(int MaybeMissingClass.f4())"/> | |||
<line text="MaybeMissingClass.f5"/> | |||
<line text="execution(int[] MaybeMissingClass.f5())"/> | |||
<line text="MaybeMissingClass.f6"/> | |||
<line text="execution(int[][] MaybeMissingClass.f6())"/> | |||
</stdout> | |||
</run> | |||
</ajc-test> | |||
<!-- | |||
When compiling aspect and target class separately, too many joinpoints are matched, | |||
see https://github.com/eclipse/org.aspectj/issues/24 | |||
--> | |||
<ajc-test dir="bugs1920/github_24" vm="1.5" title="exact array type matching, aspect compiled separately from target class"> | |||
<compile files="ExactlyMatchingAspect.aj" options="-1.5 -showWeaveInfo" outjar="aspect.jar"> | |||
<message kind="warning" text="no match for this type name: MaybeMissingClass [Xlint:invalidAbsoluteTypeName]"/> | |||
<message kind="warning" text="advice defined in ExactlyMatchingAspect has not been applied [Xlint:adviceDidNotMatch]"/> | |||
</compile> | |||
<compile files="MaybeMissingClass.java" options="-1.5 -showWeaveInfo" aspectpath="aspect.jar"> | |||
<!-- Before the bugfix, f1 would be woven twice, f2 not at all--> | |||
<message kind="weave" text="method-execution(MaybeMissingClass MaybeMissingClass.f1())"/> | |||
<message kind="weave" text="method-execution(MaybeMissingClass[] MaybeMissingClass.f2())"/> | |||
<message kind="weave" text="method-execution(MaybeMissingClass[][] MaybeMissingClass.f3())"/> | |||
<message kind="weave" text="method-execution(int MaybeMissingClass.f4())"/> | |||
<message kind="weave" text="method-execution(int[] MaybeMissingClass.f5())"/> | |||
<message kind="weave" text="method-execution(int[][] MaybeMissingClass.f6())"/> | |||
</compile> | |||
<run class="MaybeMissingClass" classpath="aspect.jar"> | |||
<stdout> | |||
<line text="MaybeMissingClass.f1"/> | |||
<line text="execution(MaybeMissingClass MaybeMissingClass.f1())"/> | |||
<line text="MaybeMissingClass.f2"/> | |||
<line text="execution(MaybeMissingClass[] MaybeMissingClass.f2())"/> | |||
<line text="MaybeMissingClass.f3"/> | |||
<line text="execution(MaybeMissingClass[][] MaybeMissingClass.f3())"/> | |||
<line text="MaybeMissingClass.f4"/> | |||
<line text="execution(int MaybeMissingClass.f4())"/> | |||
<line text="MaybeMissingClass.f5"/> | |||
<line text="execution(int[] MaybeMissingClass.f5())"/> | |||
<line text="MaybeMissingClass.f6"/> | |||
<line text="execution(int[][] MaybeMissingClass.f6())"/> | |||
</stdout> | |||
</run> | |||
</ajc-test> | |||
<!-- | |||
When compiling aspect and target class together, too many joinpoints are matched, | |||
see https://github.com/eclipse/org.aspectj/issues/24 | |||
--> | |||
<ajc-test dir="bugs1920/github_24" vm="1.5" title="fuzzy array type matching, aspect compiled together with target class"> | |||
<compile files="FuzzilyMatchingAspect.aj MaybeMissingClass.java" options="-1.5 -showWeaveInfo"> | |||
<!-- Before the bugfix, both f1 and f2 would be woven twice --> | |||
<message kind="weave" text="method-execution(MaybeMissingClass MaybeMissingClass.f1())"/> | |||
<message kind="weave" text="method-execution(MaybeMissingClass[] MaybeMissingClass.f2())"/> | |||
<message kind="weave" text="method-execution(MaybeMissingClass[][] MaybeMissingClass.f3())"/> | |||
<message kind="weave" text="method-execution(int MaybeMissingClass.f4())"/> | |||
<message kind="weave" text="method-execution(int[] MaybeMissingClass.f5())"/> | |||
<message kind="weave" text="method-execution(int[][] MaybeMissingClass.f6())"/> | |||
</compile> | |||
<run class="MaybeMissingClass"> | |||
<stdout> | |||
<line text="MaybeMissingClass.f1"/> | |||
<line text="execution(MaybeMissingClass MaybeMissingClass.f1())"/> | |||
<line text="MaybeMissingClass.f2"/> | |||
<line text="execution(MaybeMissingClass[] MaybeMissingClass.f2())"/> | |||
<line text="MaybeMissingClass.f3"/> | |||
<line text="execution(MaybeMissingClass[][] MaybeMissingClass.f3())"/> | |||
<line text="MaybeMissingClass.f4"/> | |||
<line text="execution(int MaybeMissingClass.f4())"/> | |||
<line text="MaybeMissingClass.f5"/> | |||
<line text="execution(int[] MaybeMissingClass.f5())"/> | |||
<line text="MaybeMissingClass.f6"/> | |||
<line text="execution(int[][] MaybeMissingClass.f6())"/> | |||
</stdout> | |||
</run> | |||
</ajc-test> | |||
<!-- | |||
When compiling aspect and target class separately, too many joinpoints are matched, | |||
see https://github.com/eclipse/org.aspectj/issues/24 | |||
--> | |||
<ajc-test dir="bugs1920/github_24" vm="1.5" title="fuzzy array type matching, aspect compiled separately from target class"> | |||
<compile files="FuzzilyMatchingAspect.aj" options="-1.5 -showWeaveInfo" outjar="aspect.jar"> | |||
<message kind="warning" text="advice defined in FuzzilyMatchingAspect has not been applied [Xlint:adviceDidNotMatch]"/> | |||
</compile> | |||
<compile files="MaybeMissingClass.java" options="-1.5 -showWeaveInfo" aspectpath="aspect.jar"> | |||
<!-- Before the bugfix, both f1 and f2 would be woven twice --> | |||
<message kind="weave" text="method-execution(MaybeMissingClass MaybeMissingClass.f1())"/> | |||
<message kind="weave" text="method-execution(MaybeMissingClass[] MaybeMissingClass.f2())"/> | |||
<message kind="weave" text="method-execution(MaybeMissingClass[][] MaybeMissingClass.f3())"/> | |||
<message kind="weave" text="method-execution(int MaybeMissingClass.f4())"/> | |||
<message kind="weave" text="method-execution(int[] MaybeMissingClass.f5())"/> | |||
<message kind="weave" text="method-execution(int[][] MaybeMissingClass.f6())"/> | |||
</compile> | |||
<run class="MaybeMissingClass" classpath="aspect.jar"> | |||
<stdout> | |||
<line text="MaybeMissingClass.f1"/> | |||
<line text="execution(MaybeMissingClass MaybeMissingClass.f1())"/> | |||
<line text="MaybeMissingClass.f2"/> | |||
<line text="execution(MaybeMissingClass[] MaybeMissingClass.f2())"/> | |||
<line text="MaybeMissingClass.f3"/> | |||
<line text="execution(MaybeMissingClass[][] MaybeMissingClass.f3())"/> | |||
<line text="MaybeMissingClass.f4"/> | |||
<line text="execution(int MaybeMissingClass.f4())"/> | |||
<line text="MaybeMissingClass.f5"/> | |||
<line text="execution(int[] MaybeMissingClass.f5())"/> | |||
<line text="MaybeMissingClass.f6"/> | |||
<line text="execution(int[][] MaybeMissingClass.f6())"/> | |||
</stdout> | |||
</run> | |||
</ajc-test> | |||
<!-- | |||
https://github.com/eclipse/org.aspectj/issues/214 | |||
https://github.com/mojohaus/aspectj-maven-plugin/issues/164 | |||
Problem with multiple, subsequent weaving steps and '-Xlint:warning' or '-Xlint:unorderedAdviceAtShadow=warning' | |||
java.lang.ArrayIndexOutOfBoundsException: 1 | |||
[ERROR] at org.aspectj.weaver.bcel.BcelShadow.prepareForMungers(BcelShadow.java:379) | |||
[ERROR] at org.aspectj.weaver.Shadow.implement(Shadow.java:546) | |||
--> | |||
<ajc-test dir="bugs1920/github_214" vm="1.5" title="ArrayIndexOutOfBoundsException with Xlint unorderedAdviceAtShadow=warning"> | |||
<compile files="FirstAspect.java MarkerOne.java" options="-1.8 -showWeaveInfo -Xlint:warning" outjar="first-aspect.jar"> | |||
<message kind="warning" text="can not build thisJoinPoint lazily for this advice since it has no suitable guard [Xlint:noGuardForLazyTjp]"/> | |||
<message kind="warning" text="advice defined in FirstAspect has not been applied [Xlint:adviceDidNotMatch]"/> | |||
</compile> | |||
<compile files="Application.java MarkerTwo.java" options="-1.5 -showWeaveInfo -Xlint:warning" classpath="$sandbox/first-aspect.jar" outjar="application.jar"/> | |||
<compile files="SecondAspect.java" options="-1.5 -showWeaveInfo -Xlint:warning" aspectpath="first-aspect.jar" inpath="application.jar" outjar="second-aspect.jar"> | |||
<message kind="warning" text="can not build thisJoinPoint lazily for this advice since it has no suitable guard [Xlint:noGuardForLazyTjp]"/> | |||
<message kind="warning" text="at this shadow method-execution(void Application.greet(java.lang.String)) no precedence is specified between advice applying from aspect FirstAspect and aspect SecondAspect [Xlint:unorderedAdviceAtShadow]"/> | |||
<message kind="warning" text="can not implement lazyTjp at joinpoint method-execution(void Application.greet(java.lang.String)) because of advice conflicts, see secondary locations to find conflicting advice [Xlint:multipleAdviceStoppingLazyTjp]"/> | |||
<message kind="weave" text="method-execution(void Application.greet(java.lang.String))' in Type 'Application' (Application.java:4) advised by around advice from 'SecondAspect'"/> | |||
<message kind="weave" text="method-execution(void Application.greet(java.lang.String))' in Type 'Application' (Application.java:4) advised by before advice from 'FirstAspect'"/> | |||
</compile> | |||
<run class="Application" classpath="$sandbox/second-aspect.jar,$sandbox/first-aspect.jar"> | |||
<stdout> | |||
<line text="FirstAspect: execution(void Application.greet(String))"/> | |||
<line text="SecondAspect: execution(void Application.greet(String))"/> | |||
<line text="Hello world!"/> | |||
</stdout> | |||
</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"/> |