Replaced overriding kotlin stdlib classes by expect/actual with non-JVM source set

This commit is contained in:
Andrew Golovashevich 2025-03-25 21:32:18 +03:00
parent c154fc7610
commit 758bc31a85
8 changed files with 49 additions and 31 deletions

View File

@ -15,7 +15,7 @@ buildscript {
}
group = "ru.landgrafhomyak.utility"
version = "0.4.4"
version = "0.4.5"
repositories {
mavenCentral()
@ -25,6 +25,8 @@ xomrk {
kotlin {
setCompatibilityWithKotlin(KotlinVersion.KOTLIN_2_0)
optInContracts()
noWarnExpectActual()
warningsAsErrors()
defineAllMultiplatformTargets()
@ -46,24 +48,34 @@ xomrk {
}
sourceSets {
commonMain {
val commonMain by getting {
dependencies {
compileOnly(kotlin("stdlib"))
}
}
jvmMain {
val jvmMain by getting {
dependencies {
compileOnly(kotlin("stdlib"))
}
}
sourceSets.configureEach {
if (name == "jvmMain") return@configureEach
if (name == "commonMain") return@configureEach
val nonJvmMain by creating {
dependsOn(commonMain)
dependencies {
implementation(kotlin("stdlib"))
}
}
sourceSets.configureEach {
when {
// commonMain !in dependsOn -> return@configureEach
!name.endsWith("Main") -> return@configureEach
this@configureEach === commonMain -> return@configureEach
this@configureEach === jvmMain -> return@configureEach
this@configureEach === nonJvmMain -> return@configureEach
}
dependsOn(nonJvmMain)
}
}
}

View File

@ -1,2 +1,3 @@
kotlin.code.style=official
kotlin.stdlib.default.dependency=false
kotlin.mpp.applyDefaultHierarchyTemplate=false

View File

@ -0,0 +1,7 @@
package ru.landgrafhomyak.utility.highlevel_try_finally
@PublishedApi
internal expect object ExceptionsKt {
@PublishedApi
internal fun addSuppressed(e1: Throwable?, e2: Throwable?)
}

View File

@ -86,7 +86,7 @@ inline fun <R> safeAutoClose3e(
try {
onError(e1)
} catch (e2: Throwable) {
e1.addSuppressed(e2)
ExceptionsKt.addSuppressed(e1, e2)
}
throw e1
} finally {

View File

@ -1,13 +0,0 @@
package kotlin
import java.util.Objects
@PublishedApi
internal object ExceptionsKt {
@Suppress("RemoveRedundantQualifierName")
@JvmStatic
@PublishedApi
internal fun addSuppressed(`this`: kotlin.Throwable, e2: kotlin.Throwable?) {
(java.lang.Throwable::addSuppressed)(`this` as java.lang.Throwable, e2)
}
}

View File

@ -1,11 +0,0 @@
package kotlin.jvm.internal
@PublishedApi
internal object Intrinsics {
@PublishedApi
@JvmStatic
internal fun checkNotNullParameter(expr: java.lang.Object?, name: String?) {
if (expr == null)
throw java.lang.NullPointerException(name)
}
}

View File

@ -0,0 +1,11 @@
package ru.landgrafhomyak.utility.highlevel_try_finally
@PublishedApi
internal actual object ExceptionsKt {
@PublishedApi
internal actual fun addSuppressed(e1: Throwable?, e2: Throwable?) {
if (e1 == null) throw NullPointerException("e1")
if (e2 == null) throw NullPointerException("e2")
(java.lang.Throwable::addSuppressed)(e1 as java.lang.Throwable, e2)
}
}

View File

@ -0,0 +1,11 @@
package ru.landgrafhomyak.utility.highlevel_try_finally
import kotlin.addSuppressed as kotlinAddSuppressed
@PublishedApi
internal actual object ExceptionsKt {
@PublishedApi
internal actual fun addSuppressed(e1: Throwable?, e2: Throwable?) {
e1!!.kotlinAddSuppressed(e2!!)
}
}