Tiered compilation used to dump every stage into the same build dir, and included that dir on the classpath,
which means any ordering issues introduced into a build aren't going to result in a failed build,
thus breaking the build for everybody except those who already had a working lombok in their
build dir before starting a build. The opposite of bootstrapping, in other words.
Fixed by having each stage build into its own private stage phase.
autocleaning means that the build system detects that the usual incremental mode,
where the build artefacts are not deleted and instead used to skip steps already performed,
is not an option due to changes in the build script itself or a change in deps not detectable.
It works by having a version number which can be incremented, and a system that checks
for mismatches and forces a clean.
Would crash with java.lang.ClassFormatError: Extra bytes at the end of class file de/lomboktest/Application
Fixes https://github.com/mplushnikov/lombok-intellij-plugin/issues/969
figuring out the problem was the hard work - credits to @Rawi01 for discovering this
These handlers had methods with humongous argument lists, and they needed to grow even more in order
to accommodate some new needs to properly implement checkerframework (where annos can be type-use
based, which means they were being put in the wrong place.
void foo(com.foo.@X Bar paramName) // correct
void foo(@X com.foo.Bar paramName) // wrong
For example, the CalledMethod annotation is a type-use annotation.
This commit covers both that refactor and fixing checkerframework generation.
Specifically, Rawi01's patches to make javadoc behaviour in eclipse better,
which cannot be applied to ecj as you get load errors (javadoc not a thing there).
As part of this commit, tests can be limited to ecj or eclipse, and I made cut-down
versions of a few tests (to run on ecj, as the main one cannot be, due to javadoc issues).
The tests now marked as eclipse only don't fail on ecj, but they don't generate the same
result. Alternatively, we could go with a separated out after-ecj and after-eclipse dir
instead, but that's perhaps going overboard.