aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Add method ArrayReferenceType.equals to fix failing testsAlexander Kriegisch2023-06-263-1/+21
| | | | | | | | | | | 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>
* BcelTypeMunger.getRealMemberForITDFromAspect code cosmeticsAlexander Kriegisch2023-06-261-33/+24
| | | | | | Relates to #246. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Correctly identify ITD method signatures in weaverAlexander Kriegisch2023-06-261-7/+1
| | | | | | | | | | by removing faulty condition 'if (isCtorRelated)' from BcelTypeMunger.getRealMemberForITDFromAspect, see comment https://github.com/eclipse-aspectj/aspectj/issues/246#issuecomment-1605999896. Fixes #246. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Add failing test reproducing #246Alexander Kriegisch2023-06-266-2/+55
| | | | Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Adjust expected error message in switch pattern tests after upstream typo fixAlexander Kriegisch2023-06-244-11/+11
| | | | | | | See: https://github.com/eclipse-jdt/eclipse.jdt.core/issues/919 https://github.com/eclipse-jdt/eclipse.jdt.core/commit/b681dfb5 Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Improve SystemPropertiesTestAlexander Kriegisch2023-06-241-5/+3
| | | | | | | | | | - 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>
* Switch CI build to coactions/setup-xvfbAlexander Kriegisch2023-06-241-1/+1
| | | | | | | | | | | | GabrielBB/xvfb-action is no longer maintained and points to coactions/setup-xvfb. The switch should eliminate this warning in CI builds: Node.js 12 actions are deprecated. Please update the following actions to use Node.js 16: GabrielBB/xvfb-action@v1.6. For more information see: https://github.blog/changelog/2022-09-22-github-actions-all-actions-will-begin-running-on-node16-instead-of-node12/. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Add AllTestsAspectJ1920 to AllTests19 suiteAlexander Kriegisch2023-06-241-0/+2
| | | | Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* eclipse-jdt/eclipse.jdt.core#919 has been fixedAlexander Kriegisch2023-06-241-5/+0
| | | | Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Build on JDK 11, 17, 20 (remove 19)Alexander Kriegisch2023-06-241-1/+1
| | | | Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Fix tests using Javac using source/target 1.7Alexander Kriegisch2023-06-241-4/+4
| | | | | | Javac 20+ no longer supports 1.7. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Fix javadoc generation broken on JDK 20Alexander Kriegisch2023-06-243-7/+22
| | | | | | | | | | | | | 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.getClassPathAlexander Kriegisch2023-06-241-2/+2
| | | | | | | | 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>
* Add basic tests for Java 20, deactivate Java 19 preview testsAlexander Kriegisch2023-06-2419-17/+810
| | | | Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* messages_aspectj.properties: update ECJ version stringAlexander Kriegisch2023-06-241-1/+1
| | | | | | | | | This update includes the upstream fix for https://github.com/eclipse-jdt/eclipse.jdt.core/issues/911. Eclipse Compiler b15e5c75653358 (24Mar2023) - Java20 Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Temporarily build both Java 19 and 20 on GitHubAlexander Kriegisch2023-06-241-1/+1
| | | | | | | | | | | 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>
* Bump jdt.core.version to 1.9.20-SNAPSHOTAlexander Kriegisch2023-06-241-1/+1
| | | | | | | | 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>
* messages_aspectj.properties: update ECJ version stringAlexander Kriegisch2023-06-241-1/+1
| | | | | | Eclipse Compiler 40fa81de93d65b (24Mar2023) - Java20 Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Use ASM 9.5 for Java 20 supportAlexander Kriegisch2023-06-241-1/+1
| | | | Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Add null checks for Shadow.getResolvedSignature()Alexander Kriegisch2023-06-131-3/+5
| | | | | | Fixes #243. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Fix XML config for Bugs1919Tests.test_GitHub_214Alexander Kriegisch2023-06-041-2/+4
| | | | | | | | | | | | | | | | | | | | | | 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>
* Add null check to AjLookupEnvironment.hasAspectDeclarationsAlexander Kriegisch2023-06-041-0/+2
| | | | | | Fixes #240. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* IDE.md: change 2022-12 AJDT M2E connector link to upstream update siteAlexander Kriegisch2023-03-111-1/+1
|
* Added MIll to the Build tools sectionTobias Roeser2023-03-031-0/+6
| | | | | 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.
* JavaVersionCompatibility.md: add Java 19Alexander Kriegisch2023-03-011-0/+1
|
* IDE.md: add link to m2e AJDT connector for Eclipse 2022-12Alexander Kriegisch2023-03-011-0/+1
| | | | The link points to aspectj.dev for now, because Mika Vesti has not merged my PR and published a new version on repo.t5.fi yet.
* IDE.md: Add new AJDT update site for 2022-12 (4.26)Alexander Kriegisch2023-02-281-0/+1
| | | | Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Depend on JDT Core 1.9.20.M1Alexander Kriegisch2023-02-281-1/+1
| | | | Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* HandleProviderDelimiter: rename JEM_MODULAR_CLASSFILE to MODULAR_CLASSFILEAlexander Kriegisch2023-02-281-1/+1
| | | | | | The other constants do not have the JEM_ prefix from JavaElement either. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Sync HandleProviderDelimiter with JDT Core & AJDTAlexander Kriegisch2023-02-2631-289/+311
| | | | | | | | | | | | | | | | | | | | | | New constants: JEM_MODULAR_CLASSFILE - '\'' (single quote) ANNOTATION - '}' LAMBDA_EXPRESSION - ')' LAMBDA_METHOD - '&' STRING - '"' MODULE - '`' DELIMITER_ESCAPE - '=' Updated AspectJ constants due to JDT Core using constants previously used by AspectJ: ADVICE - '&' to '§' ASPECT_TYPE - '\'' to '>' ITD_METHOD - ')' to '°' DECLARE - '`' to '´' POINTCUT - '"' to '©' Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Add safeguards for And/Or/Not pattern node typesAlexander Kriegisch2023-01-299-15/+30
| | | | | | | | Affects *PointCut, *TypePattern, *AnnotationTypePattern. Relates to #215. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Add traverse methods for declare and pattern typesAlexander Kriegisch2023-01-2911-4/+86
| | | | | | Relates to #215. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Add traverse methods for pointcut typesAlexander Kriegisch2023-01-2916-0/+130
| | | | | | Relates to #215. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Further improve indentation of compilation results on the consolegh-217Alexander Kriegisch2023-01-241-33/+21
| | | | | | | | | | | | | | | | | | | | In CompilationResult.toString, no longer indent like this: [warning 1] warning at after() : execution(FooBar Blah.*()) { ^^^^^^ xxx FooBar [Xlint:invalidAbsoluteTypeName] Instead, always just indent by 2 spaces, saving screen real estate: [warning 1] warning at after() : execution(FooBar Blah.*()) { ^^^^^^ xxx FooBar [Xlint:invalidAbsoluteTypeName] Also further streamline/simplify the code a bit. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Fix indentation of compilation results on the consoleAlexander Kriegisch2023-01-222-55/+43
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Whenever warnings or errors were printed via CompilationResult.toString, indirectly also using MessageUtil.renderMessage(IMessage, boolean), messages containing context info such as code snippets with carets marking erroneous tokens - see also the previous commit - prefixes like "[warning 1] warning at " were printed right in front of the code snippets. I.e., the carets marking erroneous tokens in the second line were not indented like the first line with the code snippet, leading to (simplified) output like: [warning 1] warning at after() : execution(FooBar Blah.*()) { ^^^^^^ xxx FooBar [Xlint:invalidAbsoluteTypeName] This was fixed to now correctly indent lines 2 to n according to line 1, yielding the correct output: [warning 1] warning at after() : execution(FooBar Blah.*()) { ^^^^^^ xxx FooBar [Xlint:invalidAbsoluteTypeName] Especially with longer, more complex context lines, this helps to identify the erroneous section. BTW, for one-line messages, everything of course looks like before. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Bugfix: caret error marks in compiler output too shortAlexander Kriegisch2023-01-221-53/+70
| | | | | | | | | | | | | | | | | | | | | | | | | This very old bug in EclipseAdapterUtils calculated the '^' caret error marks incorrectly. The marks were too short like this: void m() { return vax[3]; } ^^^^^^^^^^^ Where the correct result would look like this: void m() { return vax[3]; } ^^^^^^^^^^^^^^ This was due to the rather complicated way in which first surrounding context code - here the leading 'void m() { ' and trailing ' }' - was first added and then possible leading white space was cut off again from the left. It is difficult to explain, the code is a nightmare, trying to work with char arrays, counting indexes, repeatedly using System.arraycopy and using lots of counters and offsets. I would have liked to simplify the code, converting char[] buffers to Strings, but decided to keep the basic structure for now, not sure what kind of memory or performance considerations led to this design. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Fix GitHub #214Alexander Kriegisch2023-01-211-1/+1
| | | | Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Add regression test reproducing GitHub #214Alexander Kriegisch2023-01-217-0/+68
| | | | Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Comment on newly pointcut parsing found problem in test classAlexander Kriegisch2023-01-152-0/+27
| | | | | | | | | | | | A pointcut like execution(*..Collection<?>[] *(..)) leads to an AJ core dump, which is something I noticed while fixing a test in the previous commit. I am going to create a new issue for it and link to this commit later. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Fix failing tests after previous commitAlexander Kriegisch2023-01-154-23/+35
| | | | | | | | | After the changes, the weaver's behaviour is now slightly different, but not actually buggy. Actually, in one case there is now a weaver warning for a non-matching pointcut which should have been there before, but was not. I.e., things have improved and the tests are even a bit better now. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Remove old, erroneously committed binaries from tests/bugs193/543657Alexander Kriegisch2023-01-159-0/+0
| | | | Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Fix PointcutRewriterTest, add LogicalPointcutStructure test helper classAlexander Kriegisch2023-01-152-169/+360
| | | | | | | | | | | | | | | | | | | | | | | | | | | After WildTypePattern.hashCode was fixed in the previous commit, PointcutRewriterTest started failing, because in many places it was falsely relying on a specific order of hash codes, which cannot be guaranteed, especially since more instance fields are part of the hash code now in accordance with 'equals'. The new test helper class LogicalPointcutStructure is able to recognise chained '&&' and '||' pointcuts of the same logical nesting level, un-nesting them from the actual pointcut structure and making them comparable, disregarding their order. I.e., something like ((A && B) && C) && D is actually recognised to logically be A && B && C && D and equivalent to e.g. either of D && B && A && C A && B && D && C C && A && D && B This helps to compare rewritten pointcuts, as long as their logical structure has not been altered. Relates to #24. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* WildTypePattern: fix hashCode and toString methodsAlexander Kriegisch2023-01-152-10/+31
| | | | | | | | | | | | | | | | | | | | | | | | Especially 'hashCode' did not correspond to 'equals', disregarding several fields, array dimension information being only one of them. This led to parts of pointcuts being ignored, because they were regarded as duplicates. Example: execution(Foo* *(..)) && !execution(Foo*[] *(..)) Here, the negated pattern was falsely regarded as equal to the first pattern, leading to an "A && !A" situation, i.e. no match at all. Furthermore, 'toString' did not print array strings, i.e. instead of "Foo*[][]" something like "Foo*" was printed. This false information was also present in annotations generated by the weaver. FuzzilyMatchingAspect was adjusted to actually match exactly once, as expected, for the "Foo*" return types, i.e. exclusions for the array return types have been added. Relates to #24. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Improve array matching for all TypePattern subclassesAlexander Kriegisch2023-01-1513-19/+62
| | | | | | Relates to #24. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Handle one- and multi-dimensional array return types correctlyAlexander Kriegisch2023-01-155-6/+33
| | | | | | | | | | Fixes https://github.com/eclipse/org.aspectj/issues/24, both the array return type matching as such as well as matching dimensionality patterns correctly. E.g., 'Foo*[]' is not the same as 'Foo*[][]'. This also works correctly in combination with asterisks, even for primitive types, i.e. 'in*[][]' correctly matches a 2-dimensional array of 'int'. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Simplify if-else in WildTypePattern.matchesExactlyByNameAlexander Kriegisch2023-01-151-5/+1
| | | | | | | | | A simple boolean condition is enough. Loosely relates to https://github.com/eclipse/org.aspectj/issues/24, but actually it is just drive-by cosmetics. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Fix WildTypePattern.isArrayAlexander Kriegisch2023-01-151-1/+1
| | | | | | | | | The method falsely determined that a one-dimensional array was not an array due to a one-off bug. Relates to https://github.com/eclipse/org.aspectj/issues/24. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Expand regression tests for GitHub bug #24Alexander Kriegisch2023-01-154-13/+112
| | | | | | | | | | More test cases were added for - multi-dimensional arrays, - primitive type arrays. Relates to https://github.com/eclipse/org.aspectj/issues/24. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Add regression tests for GitHub bug #24Alexander Kriegisch2023-01-155-0/+142
| | | | | | Relates to https://github.com/eclipse/org.aspectj/issues/24. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Refactor, comment and reactivate Ajc183Tests.testAnnoStyleDecp_442425Alexander Kriegisch2023-01-077-67/+74
| | | | | | | | | | This test was always inactive and did not add any value other than during development. No it runs, passes and documents the status quo of - what was fixed (regression for AJC 1.8.2 core dump fixed in 1.8.3), - the current limitations of @DeclareParents and @DeclareMixin regarding generic interfaces. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>