Took the code from the patch submitted by Mario Ivankovits
in bug 520597 and made some improvements to make (hopefully)
better use of memory. Some basic tests added.
On Java9 cannot rely on URLClassLoader being found from which
to determine classpath so use the environment variable. This may
have issues if loaders are being constructed that specifically
deviate from the java.class.path.
Important to ensure we generate it of the right version as it may
end up containing code derived from a particular class that needs
a be run with a certain level of verifier. In this case if
inserting invokestatic targeting a interface method, we need to
be using something later than a java 1.2 level class file.
In writing a testcase for 352389 I discovered overweaving
just wasn't working for a compile time series of test steps.
This was due to a guard preventing secondary calls to
addOrReplaceAspect. Without the secondary call the crosscutting
collector for the aspect had recorded no mungers from the
original aspect because it was still using an EclipseSourceType
delegate. Later when it was using the binary BcelObjectType
delegate and mungers were available, they weren't collected
because of that missing addOrReplaceAspect call.
Add option not to generate local variable tables in some scenarios
New Xset option generateNewLocalVariableTables defaults to true
but can be set to false. In some situations incoming bytecode
for weaving doesn't want them adding (e.g. android situations
where the bytecode is a bit funky).
Issue: https://bugs.eclipse.org/bugs/show_bug.cgi?id=470658
Fix 436653: conditional aspect activation plus various polish
Modified test expectation system so it is possible to say
the test cares about one particular message and the rest
do not matter (prefix message string with '*') - crude but
quick.
Polished many places to exploit generics
Upgraded all the tests to work on Java8 - some serious changes
regarding ajdoc on Java8. Hopefully it has stayed backwards
compatible with earlier JDK versions (e.g. if using AspectJ 1.8.3+
with a JDK less than 8) but no explicit testing done for this.