From 5bbaa5d834ecc84d280acc34383800780656b043 Mon Sep 17 00:00:00 2001 From: Andrew Golovashevich Date: Tue, 12 Nov 2024 02:50:51 +0300 Subject: [PATCH] Function to fix miscellaneous shit in kotlin compiler --- .../kmp_gradle_build_helper/improvements.kt | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 impl/src/jvmMain/kotlin/ru/landgrafhomyak/kotlin/kmp_gradle_build_helper/improvements.kt diff --git a/impl/src/jvmMain/kotlin/ru/landgrafhomyak/kotlin/kmp_gradle_build_helper/improvements.kt b/impl/src/jvmMain/kotlin/ru/landgrafhomyak/kotlin/kmp_gradle_build_helper/improvements.kt new file mode 100644 index 0000000..bd859f8 --- /dev/null +++ b/impl/src/jvmMain/kotlin/ru/landgrafhomyak/kotlin/kmp_gradle_build_helper/improvements.kt @@ -0,0 +1,22 @@ +package ru.landgrafhomyak.kotlin.kmp_gradle_build_helper + +import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension + + +public enum class Improvements { + JAVA_INTERFACES_DEFAULT_METHODS { + // since kotlin 1.4 + override fun fix(target: KotlinMultiplatformExtension) { + target.configureAllCompilersOptions { freeCompilerArgs.add("-Xjvm-default=all") } + } + }; + + internal abstract fun fix(target: KotlinMultiplatformExtension) +} + + +public fun KotlinMultiplatformExtension.fixAllStrangeBehavioursExcept(vararg except: Improvements) { + (Improvements.values().toSet() - except.toSet()).forEach { f -> f.fix(this) } +} + +public fun KotlinMultiplatformExtension.fixAllStrangeBehaviours(): Unit = this.fixAllStrangeBehavioursExcept() \ No newline at end of file