Set -Xjvm-default=all-compatibility compiler arg #178
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
I think I finally cracked #171. It turns out the issue is kotlin related.
It seems the root of the problem was that our project has the
-Xjvm-default=all
compiler flag set. Commenting it out eliminates this issue.Seems like there's some subtle backwards incompatibility around annotations on pre-Java 8 interfaces with default implementations. Before Java 8, interfaces didn't support default implementations and would have a
DefaultImpls
static class declared to emulate that behaviour. Kotlin defaults to that pre-Java 8 behaviour (docs), and generates DefaultImpl objects. It seems like tempest using the pre-java-8 style here causes in projects that enable the post-java 8 behaviour.all-compatibility
seems like the correct setting to apply to solve this, based on these docs:Hopefully this will fix my side without breaking other users of tempest.