messages_aspectj.properties:
compiler.version = ... d23a141971 (27Apr2023) - Java20
Too bad this version string did not make it into 1.9.20 and 1.9.20.1.
Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
ajc162.xml: Fix test failing after previous bugfix
A change made to ajc162.xml in commit 43cb1e2f has been reverted
and improved after the recent negated type pattern fix. Relates to #257.
The pointcut 'call(!void *.*(..)) && this(src) && target(dst)' actually
does match method call 'payloadClass.getPayload()' within the
around-advice in GenericClassInAdvice itself.
Improvement: Activate '-showWeaveInfo' and verify weaving message.
Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
NotTypePattern: Fix matching problem for negated type patterns
The implementation for boolean matchesArray(UnresolvedType type) was
buggy.
'!String' should match anything but String, no matter if it is
an array or not, e.g. int, void, int[], String[], String[][].
'!String[]' should match anything but String[], no matter if it is
an array or not, e.g. int, void, int[], String, String[][].
Fixes #257.
Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
Instead of using a pre-generated JAR, the source code generating the
class with reordered methods (bridge method first) is now compiled
directly before usage. This is possible, because in the previous commit
ASM was put on the Ajc classpath for tests.
Relates to #256.
Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
This enables compiled source code to use ASM. This way, it is possible
to bootstrap tests needing specially prepared class files by
1. compiling an ASM-enabled byte code generator class,
2. running the generator, writing out class files,
3. using the generated class files in subsequent tests.
Until now, such classes always had to be checked into the ASM directly
or inside JARs. Now, this is no longer necessary.
The next commit will be the first example.
Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
Fixes spring-projects/spring-framework#27761.
Fixes #256.
Bridge methods are now ignored in favour of their overriding namesakes
during method matching.
Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
Relates to spring-projects/spring-framework#27761.
The test needs an ASM-generated class file with reordered methods in
order to reproduce the issue in plain AspectJ. The test fails now, but
should pass after the fix.
Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
Move 1.9.20 bug regression tests to the correct spots
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>
Improve error message in LazyClassGen.getJavaClassBytesIncludingReweavable
No longer report "Unable to find ASM classes", if simply an ASM
processing error occurred. In that case, report "Error processing
class file".
Relates to #250.
Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
Fix inline accessor method bug in BcelAccessForInlineMunger
Make sure to create one ajc$inlineAccessMethod per identically named
(overloaded) private aspect method in
BcelAccessForInlineMunger.createOrGetInlineAccessorForMethod.
Fixes #250.
Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
Add method ArrayReferenceType.equals to fix failing tests
This also fixes a bug. Previously, ResolvedType.equals was used for
equality check, and in there is a '==' comparison, which does not work
for two different ArrayReferenceType instances, even if the component
type is the same.
Relates to #246.
Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
- Fix quotation error in console output
- Throw RuntimeException instead of Error. Maybe this helps to avoid
the prominent error message listing in the GitHub build log, which
always looks like something bad happened, even though it is simply an
expected error.
Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
Firstly, Javadoc 20 cannot handle source level 1.7 anymore, so I bumped
it to 11, which hopefully will be around for another while. It also
matches the ajc minimum of Java 11, i.e. ajdoc and ajc are synchronised
in this regard now.
Secondly, as of JDK 20, the javadoc tool renders HTML pages with section
headers specific to the JVM default locale. The workaround is to set the
locale to English before calling javadoc.
Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
Improve Java 9+ version matching in ClassPath.getClassPath
On the short term, this fixes the failing weaver tests on JDK 20. On the
long term, the improved matching heuristics should make it unnecessary
to update the regex again.
Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
Let's find out if the tests still pass
- on Java 19, except for J19 preview features,
- on Java 20, also except for J19 with changed syntax.
TODO: After having added Java 20 preview feature tests, remove J19
build.
Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
Let's find out if the tests still pass
- on Java 19, except for J19 preview features,
- on Java 20, also except for J19 with changed syntax.
Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
The test started breaking on GitHub, but ran fine locally, which implied
some kind of classpath ordering issue. As it turned out, for XML tests
all JARs found in the sandbox directory are added to the classpath
automatically. So if we do not want them on the classpath, we need to
delete or rename them before running.
In this case, however, it was enough to make sure the classpath order is
correct, so that the duplicate 'Application' class is found in the woven
version, not in the unwoven one by chance. We therefore need to use the
correct syntax,
1. separating classpath entries by comma, not space,
2. prepending '$sandbox/' to the JAR name.
Now the test reliably does what it should have done from the start: run
the woven code. Until now, the output assertions were adjusted to the
weird result of no aspect logs being present on the console, which was
wrong right from the start.
Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
I'm the author of mill-aspectj and Mill maintainer, so i might be biased. ;-)
We use Mill with the mill-aspectj plugin in commercial projects, so I'm rather confident in it's reliability.