While reviewing PicnicSupermarket/error-prone-support#984, I noticed that version 1.15.4 of Pitest reports fewer mutations than version 1.15.3. On cursory inspection it appears that version 1.15.4 no longer mutates deferred code that is referenced by static initialization expressions, such as:
- Lambda expressions directly or indirectly referenced by enum and static fields initialization expressions, such as here and here.
- Methods that are referenced only by a method reference passed to a static fields initialization expression, such as here.
The following reproduction steps show the issue (the above are just some examples; quite a lot of other classes are impacted as well):
# Clone the repo.
git clone [email protected]:PicnicSupermarket/error-prone-support.git
cd error-prone-support
# Collect mutation coverage before the upgrade.
./run-mutation-tests.sh
mv error-prone-contrib/target/pit-reports /tmp/pit-reports-before
# Collect mutation coverage after the upgrade.
git checkout origin/renovate/pitest-maven-plugin-1.x
./run-mutation-tests.sh
mv error-prone-contrib/target/pit-reports /tmp/pit-reports-after
# Compare the reports.
firefox /tmp/pit-reports-before/index.html
firefox /tmp/pit-reports-after/index.html
An example of a dramatic differences for the class tech.picnic.errorprone.bugpatterns.CanonicalAnnotationSyntax:
- Before:

- After:

While reviewing PicnicSupermarket/error-prone-support#984, I noticed that version 1.15.4 of Pitest reports fewer mutations than version 1.15.3. On cursory inspection it appears that version 1.15.4 no longer mutates deferred code that is referenced by static initialization expressions, such as:
The following reproduction steps show the issue (the above are just some examples; quite a lot of other classes are impacted as well):
An example of a dramatic differences for the class
tech.picnic.errorprone.bugpatterns.CanonicalAnnotationSyntax: