Add -Xjvm-defaults=all to kotlin compilations
This causes kotlinc to output default methods
instead of DefaultsImpl inner classes. It's required
for code that depends on other libraries using
@JvmDefault. It will be the default in a future
version of kotlin.
Bug: 236431222
Test: treehugger
Change-Id: I67a7cb3b816b41a441af7ec78cc64bc358c6889d
diff --git a/java/base.go b/java/base.go
index 0900daa..b76dcc9 100644
--- a/java/base.go
+++ b/java/base.go
@@ -1072,6 +1072,13 @@
kotlincFlags := j.properties.Kotlincflags
CheckKotlincFlags(ctx, kotlincFlags)
+ // This is needed for code that depends on libraries that use @JvmDefault
+ // -Xjvm-default=all will be the default in a future version of kotlin
+ // according to https://blog.jetbrains.com/kotlin/2020/07/kotlin-1-4-m3-generating-default-methods-in-interfaces/
+ if flags.javaVersion >= JAVA_VERSION_8 {
+ kotlincFlags = append(kotlincFlags, "-Xjvm-default=all")
+ }
+
// Workaround for KT-46512
kotlincFlags = append(kotlincFlags, "-Xsam-conversions=class")